summaryrefslogtreecommitdiff
path: root/src/modules/m_cap.h
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2015-11-26 04:07:50 +0000
committerPeter Powell <petpow@saberuk.com>2015-12-07 09:47:54 +0000
commitbe0d7ab72ab276f63eacc5c6600ea13e9dc0666c (patch)
treec63964222d96004fd104632c8edafc3b46199778 /src/modules/m_cap.h
parent91fe9afed5ee65f1d6dc1d0d3cdee628125f4d0d (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.h5
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;
}
}