diff options
| author | 2019-02-05 19:20:02 +0000 | |
|---|---|---|
| committer | 2019-02-05 19:20:02 +0000 | |
| commit | 5991e02b0a234a138897007fa369cedaba2251e9 (patch) | |
| tree | 067fec5731614f8ed8f989d81b3de2eac511f22a /modules/line_handler.py | |
| parent | Disconnect from server and throw an exception if SCRAM server verification fails (diff) | |
| signature | ||
Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation
Diffstat (limited to 'modules/line_handler.py')
| -rw-r--r-- | modules/line_handler.py | 19 |
1 files changed, 9 insertions, 10 deletions
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"]) + self._event(event, "cap.ack", capabilities=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() + 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") |
