Improved error handling on non-existant routes
This commit is contained in:
parent
1980d1c06d
commit
60b9b26d28
1 changed files with 12 additions and 11 deletions
|
@ -148,7 +148,7 @@ class ServerPipe(Route):
|
||||||
route = handler.exchange_routes[m_route]
|
route = handler.exchange_routes[m_route]
|
||||||
if id_ in handler.peers:
|
if id_ in handler.peers:
|
||||||
if handler.debug:
|
if handler.debug:
|
||||||
Logging.info("Forwarding to '%s' on route '%s'" % (id_, route),
|
Logging.info("Forwarding to '%s' on route '%s'" % (id_, route),
|
||||||
color=Logging.LIGHT_YELLOW)
|
color=Logging.LIGHT_YELLOW)
|
||||||
handler.peers[id_].send(pack_pipe_dest_message(data, handler.id_), route)
|
handler.peers[id_].send(pack_pipe_dest_message(data, handler.id_), route)
|
||||||
else:
|
else:
|
||||||
|
@ -190,18 +190,18 @@ def pack_message(data, exchange_route,
|
||||||
indexed_dict=indexed_dict) + data
|
indexed_dict=indexed_dict) + data
|
||||||
|
|
||||||
|
|
||||||
def pack_pipe_src_message(data, exchange_route, id_, debug=False,
|
def pack_pipe_src_message(data, exchange_route, id_, debug=False,
|
||||||
indexed_dict=False):
|
indexed_dict=False):
|
||||||
data, original_data_type = prepare_data(data)
|
data, original_data_type = prepare_data(data)
|
||||||
return create_pipe_src_metadata(original_data_type, exchange_route, id_,
|
return create_pipe_src_metadata(original_data_type, exchange_route, id_,
|
||||||
indexed_dict=indexed_dict) + data
|
indexed_dict=indexed_dict) + data
|
||||||
|
|
||||||
def pack_pipe_dest_message(data, id_, debug=False,
|
def pack_pipe_dest_message(data, id_, debug=False,
|
||||||
indexed_dict=False):
|
indexed_dict=False):
|
||||||
data, original_data_type = prepare_data(data)
|
data, original_data_type = prepare_data(data)
|
||||||
return create_pipe_dest_metadata(original_data_type, id_,
|
return create_pipe_dest_metadata(original_data_type, id_,
|
||||||
indexed_dict=indexed_dict) + data
|
indexed_dict=indexed_dict) + data
|
||||||
|
|
||||||
|
|
||||||
def parse_metadata(message):
|
def parse_metadata(message):
|
||||||
metadata = struct.unpack(PACK_FORMAT, message[:METADATA_LENGTH])
|
metadata = struct.unpack(PACK_FORMAT, message[:METADATA_LENGTH])
|
||||||
|
@ -312,6 +312,9 @@ class Shared:
|
||||||
self.port))
|
self.port))
|
||||||
try:
|
try:
|
||||||
route = self.routes[route]
|
route = self.routes[route]
|
||||||
|
except:
|
||||||
|
Logging.warning("'%s' does not exist." % route)
|
||||||
|
else:
|
||||||
if not issubclass(route.__class__, Pipe):
|
if not issubclass(route.__class__, Pipe):
|
||||||
route.run(data, self)
|
route.run(data, self)
|
||||||
else:
|
else:
|
||||||
|
@ -319,15 +322,13 @@ class Shared:
|
||||||
peer = peer.decode()
|
peer = peer.decode()
|
||||||
data = convert_data(data[PIPE_DEST_METADATA_LENGTH:], data_type, debug=self.debug)
|
data = convert_data(data[PIPE_DEST_METADATA_LENGTH:], data_type, debug=self.debug)
|
||||||
route.run(data, peer, self)
|
route.run(data, peer, self)
|
||||||
except KeyError:
|
|
||||||
Logging.warning("'%s' does not exist." % route)
|
|
||||||
|
|
||||||
|
|
||||||
def patched_send(self, data, route, indexed_dict=False):
|
def patched_send(self, data, route, indexed_dict=False):
|
||||||
try:
|
try:
|
||||||
self.raw_send(pack_message(data,
|
self.raw_send(pack_message(data,
|
||||||
self.peer_reverse_exchange_routes[route],
|
self.peer_reverse_exchange_routes[route],
|
||||||
debug=self.debug, indexed_dict=indexed_dict),
|
debug=self.debug, indexed_dict=indexed_dict),
|
||||||
binary=True)
|
binary=True)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
Logging.error("'%s' is not a valid peer route." % route)
|
Logging.error("'%s' is not a valid peer route." % route)
|
||||||
|
@ -361,7 +362,7 @@ class Server(WebSocket, Shared):
|
||||||
def peers(self):
|
def peers(self):
|
||||||
if self.websockets != self._last_websockets:
|
if self.websockets != self._last_websockets:
|
||||||
if self.debug:
|
if self.debug:
|
||||||
Logging.info("Rebuilding peers. (currently connected: %i)" %
|
Logging.info("Rebuilding peers. (currently connected: %i)" %
|
||||||
len(self.websockets))
|
len(self.websockets))
|
||||||
self._peers = {}
|
self._peers = {}
|
||||||
for websocket in self.websockets:
|
for websocket in self.websockets:
|
||||||
|
@ -380,13 +381,13 @@ class Client(WebSocketClient, Shared):
|
||||||
self.pipe = self.__pipe
|
self.pipe = self.__pipe
|
||||||
routes[PIPE_ROUTE] = DummyPipe()
|
routes[PIPE_ROUTE] = DummyPipe()
|
||||||
super().setup(routes, debug=debug)
|
super().setup(routes, debug=debug)
|
||||||
|
|
||||||
self.override_methods()
|
self.override_methods()
|
||||||
|
|
||||||
def __pipe(self, data, route, id_):
|
def __pipe(self, data, route, id_):
|
||||||
try:
|
try:
|
||||||
self.send(pack_pipe_src_message(data,
|
self.send(pack_pipe_src_message(data,
|
||||||
self.peer_reverse_exchange_routes[route], id_, debug=self.debug),
|
self.peer_reverse_exchange_routes[route], id_, debug=self.debug),
|
||||||
PIPE_ROUTE)
|
PIPE_ROUTE)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
Logging.warning("'%s' does not exist." % route)
|
Logging.warning("'%s' does not exist." % route)
|
Reference in a new issue