Skip to content

Commit 32f3dac

Browse files
committed
added patch on server socket management
1 parent 744c1cf commit 32f3dac

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

modules/server.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from modules.commands import handle_input
2+
from socket import error as SocketError
3+
import errno
24
import socket
35
import select
46

@@ -33,19 +35,24 @@ def start(self):
3335
self.inputs.append(client)
3436
client.send(self.hello.encode())
3537
else:
36-
data = sock.recv(self.BUFFER_SIZE)
37-
if data:
38-
command = data.decode("UTF-8")
39-
success, output = handle_input(command, self.worker, self)
40-
sock.send(output.encode()+b"\n#> ")
41-
else:
42-
if sock in self.outputs:
43-
self.outputs.remove(sock)
44-
if sock in self.inputs:
45-
self.inputs.remove(sock)
46-
if sock not in self.outputs:
47-
self.outputs.append(sock)
48-
38+
try:
39+
data = sock.recv(self.BUFFER_SIZE)
40+
if data:
41+
command = data.decode("UTF-8")
42+
success, output = handle_input(command, self.worker, self)
43+
sock.send(output.encode()+b"\n#> ")
44+
else:
45+
if sock in self.outputs:
46+
self.outputs.remove(sock)
47+
if sock in self.inputs:
48+
self.inputs.remove(sock)
49+
if sock not in self.outputs:
50+
self.outputs.append(sock)
51+
except SocketError as e:
52+
if e.errno != errno.ECONNRESET:
53+
raise
54+
self.inputs.remove(sock)
55+
4956
def stop(self):
5057
print("Exiting...")
5158
if self.socket is not None:

0 commit comments

Comments
 (0)