summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJackmcbarn <jackmcbarn@jackmcbarn.no-ip.org>2011-05-23 21:51:08 -0400
committerJackmcbarn <jackmcbarn@jackmcbarn.no-ip.org>2011-05-23 21:51:08 -0400
commit58ab072505fcc58e35799065c42fb7112c4aed3f (patch)
tree793f7ab5305c7a2fe56ab7ca36bd8705695323a0 /include
parentf5409f04cd9fdb99cf4484785a2b14628464b538 (diff)
Fix recursion of QuitUser in SendQ quits
Diffstat (limited to 'include')
-rw-r--r--include/cull_list.h2
-rw-r--r--include/users.h6
2 files changed, 8 insertions, 0 deletions
diff --git a/include/cull_list.h b/include/cull_list.h
index 5a74aa724..bf12cc6d8 100644
--- a/include/cull_list.h
+++ b/include/cull_list.h
@@ -22,11 +22,13 @@
class CoreExport CullList
{
std::vector<classbase*> list;
+ std::vector<LocalUser*> SQlist;
public:
/** Adds an item to the cull list
*/
void AddItem(classbase* item) { list.push_back(item); }
+ void AddSQItem(LocalUser* item) { SQlist.push_back(item); }
/** Applies the cull list (deletes the contents)
*/
diff --git a/include/users.h b/include/users.h
index ed7b6bf5e..3536fc350 100644
--- a/include/users.h
+++ b/include/users.h
@@ -348,6 +348,12 @@ class CoreExport User : public Extensible
*/
unsigned int quitting:1;
+ /** Recursion fix: user is out of SendQ and will be quit as soon as possible.
+ * This can't be handled normally because QuitUser itself calls Write on other
+ * users, which could trigger their SendQ to overrun.
+ */
+ unsigned int quitting_sendq:1;
+
/** This is true if the user matched an exception (E:Line). It is used to save time on ban checks.
*/
unsigned int exempt:1;