From ac7d448d095e7f4bcaff8e653632de23f889c6de Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 5 Feb 2009 19:29:44 +0000 Subject: [PATCH] Fixed sending error messages before closing session. --- src/net/common/senderthread.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/net/common/senderthread.cpp b/src/net/common/senderthread.cpp index 402ed4e9..fac8e47a 100644 --- a/src/net/common/senderthread.cpp +++ b/src/net/common/senderthread.cpp @@ -212,7 +212,12 @@ SenderThread::Main() if (pos != m_sendQueueMap.end()) { // Remove session if no write is in progress, else wait. - if (!pos->second->writeInProgress) + bool shouldDelete; + { + boost::mutex::scoped_lock lock(pos->second->dataMutex); + shouldDelete = (!pos->second->writeInProgress && pos->second->list.empty()); + } + if (shouldDelete) m_sendQueueMap.erase(pos); else newRemovedSessions.push_back(*i);