From facea197311f9dfbd9401b32b18cfd1245ff9be4 Mon Sep 17 00:00:00 2001
From: Attila Molnar <attilamolnar@hush.com>
Date: Mon, 24 Mar 2014 16:44:04 +0100
Subject: Cull ident sockets instead of immediate delete, add
 stdalgo::culldeleter

---
 include/inspircd.h | 6 ++++++
 include/stdalgo.h  | 9 +++++++++
 2 files changed, 15 insertions(+)

(limited to 'include')

diff --git a/include/inspircd.h b/include/inspircd.h
index bf3cb06b0..db13b2ab3 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -672,3 +672,9 @@ class CommandModule : public Module
 		return Version(cmd.name, VF_VENDOR|VF_CORE);
 	}
 };
+
+inline void stdalgo::culldeleter::operator()(classbase* item)
+{
+	if (item)
+		ServerInstance->GlobalCulls.AddItem(item);
+}
diff --git a/include/stdalgo.h b/include/stdalgo.h
index 3cbb86350..1ae5b8ae1 100644
--- a/include/stdalgo.h
+++ b/include/stdalgo.h
@@ -75,4 +75,13 @@ namespace stdalgo
 			delete o;
 		}
 	};
+
+	/**
+	 * Deleter that adds the item to the cull list, that is, queues it for
+	 * deletion at the end of the current mainloop iteration
+	 */
+	struct culldeleter
+	{
+		void operator()(classbase* item);
+	};
 }
-- 
cgit v1.2.3