Fix for pull request #155, merged ddab2067da

This commit is contained in:
sta 2015-08-27 15:58:28 +09:00
parent 2c65fd2714
commit bdbdf64d3d

View File

@ -41,6 +41,7 @@
/* /*
* Contributors: * Contributors:
* - Liryna <liryna.stark@gmail.com> * - Liryna <liryna.stark@gmail.com>
* - Nicholas Devenish
*/ */
#endregion #endregion
@ -115,12 +116,7 @@ namespace WebSocketSharp.Net
_endpoint = new IPEndPoint (address, port); _endpoint = new IPEndPoint (address, port);
_socket.Bind (_endpoint); _socket.Bind (_endpoint);
_socket.Listen (500); _socket.Listen (500);
_socket.BeginAccept (onAccept, this);
var args = new SocketAsyncEventArgs ();
args.UserToken = this;
args.Completed += onAccept;
if (!_socket.AcceptAsync (args))
onAccept (this, args);
} }
#endregion #endregion
@ -241,29 +237,14 @@ namespace WebSocketSharp.Net
return bestMatch; return bestMatch;
} }
private static void onAccept (object sender, EventArgs e) private static void onAccept (IAsyncResult ar)
{ {
var args = (SocketAsyncEventArgs) e; var lsnr = (EndPointListener) ar.AsyncState;
var lsnr = (EndPointListener) args.UserToken;
Socket sock = null; Socket sock = null;
if (args.SocketError == SocketError.Success) {
sock = args.AcceptSocket;
args.AcceptSocket = null;
}
try { try {
while (!lsnr._socket.AcceptAsync (args)) { sock = lsnr._socket.EndAccept (ar);
if (sock != null) { lsnr._socket.BeginAccept (onAccept, lsnr);
processAccepted (sock, lsnr);
sock = null;
}
if (args.SocketError == SocketError.Success) {
sock = args.AcceptSocket;
args.AcceptSocket = null;
}
}
} }
catch { catch {
if (sock != null) if (sock != null)
@ -272,7 +253,6 @@ namespace WebSocketSharp.Net
return; return;
} }
if (sock != null)
processAccepted (sock, lsnr); processAccepted (sock, lsnr);
} }