Compare commits
5 Commits
deae8043e1
...
9f0dacca0d
Author | SHA1 | Date |
---|---|---|
Juhani Krekelä | 9f0dacca0d | |
Juhani Krekelä | c23f48c329 | |
Juhani Krekelä | 6aa6236031 | |
Juhani Krekelä | 9f5f74c456 | |
Juhani Krekelä | 2c6d35347c |
31
ircbot.py
31
ircbot.py
|
@ -41,31 +41,37 @@ class LoggerThread(threading.Thread):
|
|||
elif message_type == logmessage_types.internal:
|
||||
if message_data[0] == internal_submessage_types.quit:
|
||||
assert len(message_data) == 1
|
||||
print('--- Quit', file=sys.stderr)
|
||||
print('--- Quit')
|
||||
sys.stdout.flush()
|
||||
|
||||
self.dead_notify_channel.send((controlmessage_types.quit,))
|
||||
break
|
||||
|
||||
elif message_data[0] == internal_submessage_types.error:
|
||||
assert len(message_data) == 2
|
||||
print('--- Error', message_data[1], file=sys.stderr)
|
||||
print('--- Error', message_data[1])
|
||||
sys.stdout.flush()
|
||||
|
||||
elif message_data[0] == internal_submessage_types.server:
|
||||
assert len(message_data) == 2
|
||||
assert len(message_data[1]) == 2
|
||||
print(f'--- Connecting to server {message_data[1][0]}:{message_data[1][1]}', file=sys.stderr)
|
||||
print(f'--- Connecting to server {message_data[1][0]}:{message_data[1][1]}')
|
||||
sys.stdout.flush()
|
||||
|
||||
else:
|
||||
print('--- ???', message_data, file=sys.stderr)
|
||||
print('--- ???', message_data)
|
||||
sys.stdout.flush()
|
||||
|
||||
# Messages about status from the bot code
|
||||
elif message_type == logmessage_types.status:
|
||||
assert len(message_data) == 2
|
||||
print('*', end='', file=sys.stderr)
|
||||
print(*message_data[0], **message_data[1], file=sys.stderr)
|
||||
print('*', end='')
|
||||
print(*message_data[0], **message_data[1])
|
||||
sys.stdout.flush()
|
||||
|
||||
else:
|
||||
print('???', message_type, message_data, file=sys.stderr)
|
||||
print('???', message_type, message_data)
|
||||
sys.stdout.flush()
|
||||
|
||||
# API(serverthread_object)
|
||||
# Create a new API object corresponding to given ServerThread object
|
||||
|
@ -232,9 +238,14 @@ class ServerThread(threading.Thread):
|
|||
if fd == self.server_socket.fileno():
|
||||
# Ready to receive, read into buffer and handle full messages
|
||||
if event | select.POLLIN:
|
||||
data = self.server_socket.recv(1024)
|
||||
try:
|
||||
data = self.server_socket.recv(1024)
|
||||
except ConnectionResetError:
|
||||
self.logging_channel.send((logmessage_types.internal, internal_submessage_types.error, 'Connection reset while reading'))
|
||||
reconnecting = True
|
||||
break
|
||||
|
||||
# Mo data to be read even as POLLIN triggered → connection has broken
|
||||
# No data to be read even as POLLIN triggered → connection has broken
|
||||
# Log it and try reconnecting
|
||||
if data == b'':
|
||||
self.logging_channel.send((logmessage_types.internal, internal_submessage_types.error, 'Empty read'))
|
||||
|
@ -303,7 +314,7 @@ class ServerThread(threading.Thread):
|
|||
self.logging_channel.send((logmessage_types.internal, internal_submessage_types.server, address))
|
||||
try:
|
||||
self.server_socket = socket.create_connection(address)
|
||||
except (ConnectionRefusedError, socket.gaierror):
|
||||
except (ConnectionRefusedError, socket.gaierror, TimeoutError):
|
||||
# Tell controller we failed
|
||||
self.logging_channel.send((logmessage_types.internal, internal_submessage_types.error, "Can't connect to %s:%s" % address))
|
||||
|
||||
|
|
Loading…
Reference in New Issue