Browse Source

removefd

dev
破娃酱 8 years ago
parent
commit
5e14119b41
  1. 4
      shadowsocks/eventloop.py
  2. 10
      shadowsocks/tcprelay.py

4
shadowsocks/eventloop.py

@ -176,6 +176,10 @@ class EventLoop(object):
del self._fdmap[fd]
self._impl.unregister(fd)
def removefd(self, fd):
del self._fdmap[fd]
self._impl.unregister(fd)
def add_periodic(self, callback):
self._periodic_callbacks.append(callback)

10
shadowsocks/tcprelay.py

@ -1061,7 +1061,7 @@ class TCPRelayHandler(object):
else:
logging.warn('unknown socket from %s:%d' % (self._client_address[0], self._client_address[1]))
try:
self._loop.remove(sock)
self._loop.removefd(fd)
except Exception as e:
shell.print_exception(e)
try:
@ -1100,7 +1100,7 @@ class TCPRelayHandler(object):
if self._remote_sock:
logging.debug('destroying remote')
try:
self._loop.remove(self._remote_sock)
self._loop.removefd(self._remote_sock_fd)
except Exception as e:
shell.print_exception(e)
try:
@ -1113,7 +1113,7 @@ class TCPRelayHandler(object):
if self._remote_sock_v6:
logging.debug('destroying remote_v6')
try:
self._loop.remove(self._remote_sock_v6)
self._loop.removefd(self._remotev6_sock_fd)
except Exception as e:
shell.print_exception(e)
try:
@ -1126,7 +1126,7 @@ class TCPRelayHandler(object):
if self._local_sock:
logging.debug('destroying local')
try:
self._loop.remove(self._local_sock)
self._loop.removefd(self._local_sock_fd)
except Exception as e:
shell.print_exception(e)
try:
@ -1403,7 +1403,7 @@ class TCPRelay(object):
logging.warn('unknown fd')
handle = True
try:
self._eventloop.remove(sock)
self._eventloop.removefd(fd)
except Exception as e:
shell.print_exception(e)
sock.close()

Loading…
Cancel
Save