Handle CAP ACK -<cap> and ACK from a REQ not sent by ircv3.py

This commit is contained in:
jesopo 2019-06-23 11:23:52 +01:00
parent 5028eb02d5
commit ab466756cc

View file

@ -84,7 +84,12 @@ def cap(exports, events, event):
events.on("received.cap.del").call(server=event["server"], events.on("received.cap.del").call(server=event["server"],
capabilities=capabilities) capabilities=capabilities)
elif subcommand == "ACK": elif subcommand == "ACK":
event["server"].agreed_capabilities.update(capabilities) for cap_name, cap_args in capabilities.items():
if cap_name[0] == "-":
event["server"].agreed_capabilities.discard(cap_name[1:])
else:
event["server"].agreed_capabilities.add(cap_name)
events.on("received.cap.ack").call(capabilities=capabilities, events.on("received.cap.ack").call(capabilities=capabilities,
server=event["server"]) server=event["server"])
@ -115,6 +120,7 @@ def cap(exports, events, event):
if subcommand == "ACK" or subcommand == "NAK": if subcommand == "ACK" or subcommand == "NAK":
ack = subcommand == "ACK" ack = subcommand == "ACK"
for capability in capabilities: for capability in capabilities:
if capability in event["server"].capabilities_requested:
cap_obj = event["server"].capabilities_requested[capability] cap_obj = event["server"].capabilities_requested[capability]
del event["server"].capabilities_requested[capability] del event["server"].capabilities_requested[capability]
if ack: if ack: