diff options
author | Peter Powell <petpow@saberuk.com> | 2015-11-26 04:07:50 +0000 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2015-12-07 09:47:54 +0000 |
commit | be0d7ab72ab276f63eacc5c6600ea13e9dc0666c (patch) | |
tree | c63964222d96004fd104632c8edafc3b46199778 /src/modules/m_cap.h | |
parent | 91fe9afed5ee65f1d6dc1d0d3cdee628125f4d0d (diff) |
Fix CAP REQ to be atomic like the standard dictates.
Reported by @dequis on IRC.
Diffstat (limited to 'src/modules/m_cap.h')
-rw-r--r-- | src/modules/m_cap.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/modules/m_cap.h b/src/modules/m_cap.h index 409671f48..23cf8cf69 100644 --- a/src/modules/m_cap.h +++ b/src/modules/m_cap.h @@ -21,6 +21,8 @@ #ifndef M_CAP_H #define M_CAP_H +class GenericCap; + class CapEvent : public Event { public: @@ -35,6 +37,7 @@ class CapEvent : public Event CapEventType type; std::vector<std::string> wanted; std::vector<std::string> ack; + std::vector<std::pair<GenericCap*, int> > changed; // HACK: clean this up before 2.2 User* user; CapEvent(Module* sender, User* u, CapEventType capevtype) : Event(sender, "cap_request"), type(capevtype), user(u) {} }; @@ -67,7 +70,7 @@ class GenericCap // we can handle this, so ACK it, and remove it from the wanted list data->ack.push_back(*it); data->wanted.erase(it); - ext.set(data->user, enablecap ? 1 : 0); + data->changed.push_back(std::make_pair(this, ext.set(data->user, enablecap ? 1 : 0))); break; } } |