@@ -66,16 +66,12 @@ namespace Shadowsocks.Controller | |||||
public void AcceptCallback(IAsyncResult ar) | public void AcceptCallback(IAsyncResult ar) | ||||
{ | { | ||||
Socket listener = (Socket)ar.AsyncState; | |||||
try | try | ||||
{ | { | ||||
Socket listener = (Socket)ar.AsyncState; | |||||
Socket conn = listener.EndAccept(ar); | Socket conn = listener.EndAccept(ar); | ||||
conn.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true); | conn.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true); | ||||
listener.BeginAccept( | |||||
new AsyncCallback(AcceptCallback), | |||||
listener); | |||||
Handler handler = new Handler(); | Handler handler = new Handler(); | ||||
handler.connection = conn; | handler.connection = conn; | ||||
handler.encryptor = EncryptorFactory.GetEncryptor(_server.method, _server.password); | handler.encryptor = EncryptorFactory.GetEncryptor(_server.method, _server.password); | ||||
@@ -87,6 +83,19 @@ namespace Shadowsocks.Controller | |||||
{ | { | ||||
//Console.WriteLine(e.Message); | //Console.WriteLine(e.Message); | ||||
} | } | ||||
finally | |||||
{ | |||||
try | |||||
{ | |||||
listener.BeginAccept( | |||||
new AsyncCallback(AcceptCallback), | |||||
listener); | |||||
} | |||||
catch | |||||
{ | |||||
//Console.WriteLine(e.Message); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -78,20 +78,17 @@ namespace Shadowsocks.Controller | |||||
public void AcceptCallback(IAsyncResult ar) | public void AcceptCallback(IAsyncResult ar) | ||||
{ | { | ||||
Socket listener = (Socket)ar.AsyncState; | |||||
try | try | ||||
{ | { | ||||
Socket listener = (Socket)ar.AsyncState; | |||||
Socket conn = listener.EndAccept(ar); | Socket conn = listener.EndAccept(ar); | ||||
listener.BeginAccept( | |||||
new AsyncCallback(AcceptCallback), | |||||
listener); | |||||
byte[] buf = new byte[2048]; | byte[] buf = new byte[2048]; | ||||
object[] state = new object[] { | object[] state = new object[] { | ||||
conn, | conn, | ||||
buf | buf | ||||
}; | }; | ||||
conn.BeginReceive(buf, 0, 1024, 0, | conn.BeginReceive(buf, 0, 1024, 0, | ||||
new AsyncCallback(ReceiveCallback), state); | new AsyncCallback(ReceiveCallback), state); | ||||
} | } | ||||
@@ -102,6 +99,19 @@ namespace Shadowsocks.Controller | |||||
{ | { | ||||
Console.WriteLine(e); | Console.WriteLine(e); | ||||
} | } | ||||
finally | |||||
{ | |||||
try | |||||
{ | |||||
listener.BeginAccept( | |||||
new AsyncCallback(AcceptCallback), | |||||
listener); | |||||
} | |||||
catch (Exception e) | |||||
{ | |||||
Logging.LogUsefulException(e); | |||||
} | |||||
} | |||||
} | } | ||||
private string GetPACContent() | private string GetPACContent() | ||||