|
|
|
@ -232,32 +232,30 @@ namespace WebSocketSharp.Net
|
|
|
|
private static void onAccept (object sender, EventArgs e)
|
|
|
|
private static void onAccept (object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var args = (SocketAsyncEventArgs) e;
|
|
|
|
var args = (SocketAsyncEventArgs) e;
|
|
|
|
var epl = (EndPointListener) args.UserToken;
|
|
|
|
var listener = (EndPointListener) args.UserToken;
|
|
|
|
|
|
|
|
|
|
|
|
Socket accepted = null;
|
|
|
|
Socket sock = null;
|
|
|
|
if (args.SocketError == SocketError.Success) {
|
|
|
|
if (args.SocketError == SocketError.Success) {
|
|
|
|
accepted = args.AcceptSocket;
|
|
|
|
sock = args.AcceptSocket;
|
|
|
|
args.AcceptSocket = null;
|
|
|
|
args.AcceptSocket = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var res = true;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (!epl._socket.AcceptAsync (args)) {
|
|
|
|
res = listener._socket.AcceptAsync (args);
|
|
|
|
if (accepted != null)
|
|
|
|
|
|
|
|
processAccepted (accepted, epl);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onAccept (sender, args);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch {
|
|
|
|
catch {
|
|
|
|
if (accepted != null)
|
|
|
|
if (sock != null)
|
|
|
|
accepted.Close ();
|
|
|
|
sock.Close ();
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (accepted != null)
|
|
|
|
if (sock != null)
|
|
|
|
processAccepted (accepted, epl);
|
|
|
|
processAccepted (sock, listener);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!res)
|
|
|
|
|
|
|
|
onAccept (sender, args);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void processAccepted (Socket socket, EndPointListener listener)
|
|
|
|
private static void processAccepted (Socket socket, EndPointListener listener)
|
|
|
|
|