diff options
author | Jackmcbarn <jackmcbarn@jackmcbarn.no-ip.org> | 2011-05-23 21:51:08 -0400 |
---|---|---|
committer | Jackmcbarn <jackmcbarn@jackmcbarn.no-ip.org> | 2011-05-23 21:51:08 -0400 |
commit | 58ab072505fcc58e35799065c42fb7112c4aed3f (patch) | |
tree | 793f7ab5305c7a2fe56ab7ca36bd8705695323a0 /include | |
parent | f5409f04cd9fdb99cf4484785a2b14628464b538 (diff) |
Fix recursion of QuitUser in SendQ quits
Diffstat (limited to 'include')
-rw-r--r-- | include/cull_list.h | 2 | ||||
-rw-r--r-- | include/users.h | 6 |
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; |