Handle the value returned from the Socket.AcceptAsync method

master
sta 11 years ago
parent f285e7af12
commit 744334b79e

@ -233,6 +233,7 @@ namespace WebSocketSharp.Net
{ {
var args = (SocketAsyncEventArgs) e; var args = (SocketAsyncEventArgs) e;
var epl = (EndPointListener) args.UserToken; var epl = (EndPointListener) args.UserToken;
Socket accepted = null; Socket accepted = null;
if (args.SocketError == SocketError.Success) { if (args.SocketError == SocketError.Success) {
accepted = args.AcceptSocket; accepted = args.AcceptSocket;
@ -240,34 +241,23 @@ namespace WebSocketSharp.Net
} }
try { try {
epl._socket.AcceptAsync (args); if (!epl._socket.AcceptAsync (args)) {
}
catch {
if (accepted != null) if (accepted != null)
accepted.Close (); processAccepted (accepted, epl);
onAccept (sender, args);
return; return;
} }
if (accepted == null)
return;
HttpConnection conn = null;
try {
conn = new HttpConnection (accepted, epl);
lock (epl._unregisteredSync)
epl._unregistered[conn] = conn;
conn.BeginReadRequest ();
} }
catch { catch {
if (conn != null) { if (accepted != null)
conn.Close (true); accepted.Close ();
return; return;
} }
accepted.Close (); if (accepted != null)
} processAccepted (accepted, epl);
} }
private static void processAccepted (Socket socket, EndPointListener listener) private static void processAccepted (Socket socket, EndPointListener listener)

Loading…
Cancel
Save