From 9fde35fd774e199648873b73cfca7e186b40eeca Mon Sep 17 00:00:00 2001 From: James Lu Date: Sat, 2 Apr 2016 12:46:45 -0700 Subject: [PATCH] relay: handle server name conflicts more correctly 1) Clear the relay servers cache 2) Disconnect 3) Raise a proper exception so other parts of relay don't carry on with undefined behaviour --- plugins/relay.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/relay.py b/plugins/relay.py index 1db0052..48f6eeb 100644 --- a/plugins/relay.py +++ b/plugins/relay.py @@ -222,10 +222,13 @@ def getRemoteSid(irc, remoteirc): desc="PyLink Relay network - %s" % (remoteirc.serverdata.get('netname')\ or remoteirc.name), endburst_delay=3) - except ValueError: # Network not initialized yet. + except ValueError: # Network not initialized yet, or a server name conflict. log.exception('(%s) Failed to spawn server for %r:', irc.name, remoteirc.name) - return + # We will just bail here. Disconnect the bad network. + handle_disconnect(irc, None, 'PYLINK_DISCONNECT_RELAY_FORCED', {}) + irc.disconnect() + raise else: irc.servers[sid].remote = remoteirc.name relayservers[irc.name][remoteirc.name] = sid