From 5991e02b0a234a138897007fa369cedaba2251e9 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 5 Feb 2019 19:20:02 +0000 Subject: Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation --- modules/line_handler.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'modules') diff --git a/modules/line_handler.py b/modules/line_handler.py index cb5d5631..7a692bd1 100644 --- a/modules/line_handler.py +++ b/modules/line_handler.py @@ -314,17 +314,16 @@ class Module(ModuleManager.BaseModule): capabilities=capabilities) elif subcommand == "ack": event["server"].capabilities.update(capabilities) - if not is_multiline: - self._event(event, "cap.ack", - capabilities=event["server"].capabilities, - server=event["server"]) - - if event["server"].cap_started and not event["server" - ].waiting_for_capabilities(): - event["server"].cap_started = False - event["server"].send_capability_end() - elif subcommand == "nack": - event["server"].send_capability_end() + self._event(event, "cap.ack", capabilities=capabilities, + server=event["server"]) + + if subcommand == "ack" or subcommand == "nak": + for capability in capabilities: + event["server"].requested_capabilities.remove(capability) + if (event["server"].cap_started and + not event["server"].waiting_for_capabilities()): + event["server"].cap_started = False + event["server"].send_capability_end() # the server is asking for authentication @utils.hook("raw.received.authenticate") -- cgit v1.3.1-10-gc9f91