Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /