Browse Source

fix #66

tags/2.3
clowwindy 9 years ago
parent
commit
fab822c8bb
2 changed files with 29 additions and 10 deletions
  1. +14
    -5
      shadowsocks-csharp/Controller/Local.cs
  2. +15
    -5
      shadowsocks-csharp/Controller/PACServer.cs

+ 14
- 5
shadowsocks-csharp/Controller/Local.cs View File

@@ -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);
}
}
} }
} }


+ 15
- 5
shadowsocks-csharp/Controller/PACServer.cs View File

@@ -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()


Loading…
Cancel
Save