From 8424870ec3f8568b94bec6c994df7e10d5f27813 Mon Sep 17 00:00:00 2001 From: James Lu Date: Fri, 17 Feb 2017 22:26:35 -0800 Subject: [PATCH] clientbot: abort when receiving a QUIT from uplink (#405) --- protocols/clientbot.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/protocols/clientbot.py b/protocols/clientbot.py index 22f7093..d61691e 100644 --- a/protocols/clientbot.py +++ b/protocols/clientbot.py @@ -4,7 +4,7 @@ import base64 from pylinkirc import utils, conf from pylinkirc.log import log -from pylinkirc.classes import Protocol, IrcUser, IrcServer +from pylinkirc.classes import Protocol, IrcUser, IrcServer, ProtocolError FALLBACK_REALNAME = 'PyLink Relay Mirror Client' COMMON_PREFIXMODES = [('h', 'halfop'), ('a', 'admin'), ('q', 'owner'), ('y', 'owner')] @@ -904,6 +904,10 @@ class ClientbotWrapperProtocol(Protocol): def handle_quit(self, source, command, args): """Handles incoming QUITs.""" + if self.irc.pseudoclient and source == self.irc.pseudoclient.uid: + # Someone faked a quit from us? We should abort. + raise ProtocolError("Received QUIT from uplink (%s)" % args[0]) + self.quit(source, args[0]) return {'text': args[0]}