close remote fd
This commit is contained in:
parent
1c49b9c688
commit
93890e9ccc
2 changed files with 36 additions and 26 deletions
19
server.py
19
server.py
|
@ -47,13 +47,18 @@ class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
|
|||
|
||||
class Socks5Server(SocketServer.StreamRequestHandler):
|
||||
def handle_tcp(self, sock, remote):
|
||||
fdset = [sock, remote]
|
||||
while True:
|
||||
r, w, e = select.select(fdset, [], [])
|
||||
if sock in r:
|
||||
if remote.send(self.decrypt(sock.recv(4096))) <= 0: break
|
||||
if remote in r:
|
||||
if sock.send(self.encrypt(remote.recv(4096))) <= 0: break
|
||||
try:
|
||||
fdset = [sock, remote]
|
||||
while True:
|
||||
r, w, e = select.select(fdset, [], [])
|
||||
if sock in r:
|
||||
if remote.send(self.decrypt(sock.recv(4096))) <= 0:
|
||||
break
|
||||
if remote in r:
|
||||
if sock.send(self.encrypt(remote.recv(4096))) <= 0:
|
||||
break
|
||||
finally:
|
||||
remote.close()
|
||||
|
||||
def encrypt(self, data):
|
||||
return data.translate(encrypt_table)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue