-
Notifications
You must be signed in to change notification settings - Fork 6
Closed
Description
The matrix protocol does not handle failure to connect correctly, bringing down the entire bot. Although the relevant line is wrapped in a try statement, except MatrixRequestError as e: doesn't catch the exception because it's raised directly by requests and not translated/recast by the matrix api.
2017-01-20 10:48:58 | sibylbot | CRI | UNHANDLED: ConnectionError
Traceback (most recent call last):
File "/media/Data/git/sibyl/lib/sibylbot.py", line 1057, in run_forever
self.__run_forever()
File "/media/Data/git/sibyl/lib/sibylbot.py", line 968, in __run_forever
self.__serve()
File "/media/Data/git/sibyl/lib/sibylbot.py", line 948, in __serve
proto.connect()
File "protocols/sibyl_matrix.py", line 183, in connect
token = self.client.login_with_password(user,pw)
File "/home/laptopdude/python/lib/matrix_client/client.py", line 151, in login_with_password
"m.login.password", user=username, password=password
File "/home/laptopdude/python/lib/matrix_client/api.py", line 125, in login
return self._send("POST", "/login", content)
File "/home/laptopdude/python/lib/matrix_client/api.py", line 449, in _send
verify=self.validate_cert
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 437, in send
raise ConnectionError(e, request=request)
ConnectionError: HTTPSConnectionPool(host='matrix.org', port=443): Max retries exceeded with url: /_matrix/client/api/v1/login (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f2ae9477f10>: Failed to establish a new connection: [Errno 101] Network is unreachable',))
Reproducing: enable the matrix protocol and try to run Sibyl without working internet