From e47f76db6c1dfb2a65774675e68c4d23f360fde7 Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Fri, 10 Feb 2012 01:33:44 +0000 Subject: [PATCH] Allow the connection queue to be paused --- include/znc/znc.h | 4 ++++ src/znc.cpp | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/znc/znc.h b/include/znc/znc.h index daae5c62..041feb7b 100644 --- a/include/znc/znc.h +++ b/include/znc/znc.h @@ -161,6 +161,9 @@ public: void EnableConnectQueue(); void DisableConnectQueue(); + void PauseConnectQueue(); + void ResumeConnectQueue(); + // Never call this unless you are CConnectQueueTimer::~CConnectQueueTimer() void LeakConnectQueueTimer(CConnectQueueTimer *pTimer); @@ -205,6 +208,7 @@ protected: unsigned long long m_uBytesWritten; list m_lpConnectQueue; CConnectQueueTimer *m_pConnectQueueTimer; + unsigned int m_uiConnectPaused; TCacheMap m_sConnectThrottle; bool m_bProtectWebSessions; }; diff --git a/src/znc.cpp b/src/znc.cpp index 3bf58a27..16689a51 100644 --- a/src/znc.cpp +++ b/src/znc.cpp @@ -1868,7 +1868,7 @@ void CZNC::SetConnectDelay(unsigned int i) { } void CZNC::EnableConnectQueue() { - if (!m_pConnectQueueTimer) { + if (!m_pConnectQueueTimer && !m_uiConnectPaused && !m_lpConnectQueue.empty()) { m_pConnectQueueTimer = new CConnectQueueTimer(m_uiConnectDelay); GetManager().AddCron(m_pConnectQueueTimer); } @@ -1882,6 +1882,18 @@ void CZNC::DisableConnectQueue() { } } +void CZNC::PauseConnectQueue() { + DEBUG("Connection queue paused"); + m_uiConnectPaused++; + DisableConnectQueue(); +} + +void CZNC::ResumeConnectQueue() { + DEBUG("Connection queue resumed"); + m_uiConnectPaused--; + EnableConnectQueue(); +} + void CZNC::AddNetworkToQueue(CIRCNetwork *pNetwork) { // Make sure we are not already in the queue for (list::const_iterator it = m_lpConnectQueue.begin(); it != m_lpConnectQueue.end(); ++it) {