Browse Source

Check close before create reomte

Check null ref (#940)
tags/3.4.2
noisyfox 8 years ago
parent
commit
eef990f529
1 changed files with 23 additions and 9 deletions
  1. +23
    -9
      shadowsocks-csharp/Controller/Service/TCPRelay.cs

+ 23
- 9
shadowsocks-csharp/Controller/Service/TCPRelay.cs View File

@@ -246,16 +246,21 @@ namespace Shadowsocks.Controller.Service
{
Logging.LogUsefulException(e);
}
try
{
var remote = _currentRemoteSession.Remote;
remote.Shutdown(SocketShutdown.Both);
remote.Close();
}
catch (Exception e)
if (_currentRemoteSession != null)
{
Logging.LogUsefulException(e);
try
{
var remote = _currentRemoteSession.Remote;
remote.Shutdown(SocketShutdown.Both);
remote.Close();
}
catch (Exception e)
{
Logging.LogUsefulException(e);
}
}
lock (_encryptionLock)
{
lock (_decryptionLock)
@@ -319,7 +324,16 @@ namespace Shadowsocks.Controller.Service
}
var session = new AsyncSession(remote);
_currentRemoteSession = session;
lock (_closeConnLock)
{
if (Closed)
{
remote.Close();
return;
}
_currentRemoteSession = session;
}
ProxyTimer proxyTimer = new ProxyTimer(_proxyTimeout);
proxyTimer.AutoReset = false;


Loading…
Cancel
Save