Fix leak when response for roster updates was not received

This commit is contained in:
Jan Kaluza 2011-09-06 10:00:04 +02:00
parent 3d6b63335b
commit 6898933a1d
2 changed files with 9 additions and 6 deletions

View file

@ -9,8 +9,8 @@ backend_port=10001
admin_username=admin
admin_password=test
#idle_reconnect_time=10
#cert= #patch to PKCS#12 certificate
#cert_password= #password to that certificate if any
cert=server.pfx #patch to PKCS#12 certificate
cert_password=test #password to that certificate if any
users_per_backend=10
backend=../../backends/libpurple/spectrum_libpurple_backend
#backend=../../backends/libircclient-qt/spectrum_libircclient-qt_backend

View file

@ -64,11 +64,14 @@ RosterManager::~RosterManager() {
delete buddy;
}
LOG4CXX_INFO(logger, "Removing " << m_requests.size() << " unresponded IQs");
BOOST_FOREACH(Swift::SetRosterRequest::ref request, m_requests) {
request->onResponse.disconnect_all_slots();
if (m_requests.size() != 0) {
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Removing " << m_requests.size() << " unresponded IQs");
BOOST_FOREACH(Swift::SetRosterRequest::ref request, m_requests) {
request->onResponse.disconnect_all_slots();
m_component->getIQRouter()->removeHandler(request);
}
m_requests.clear();
}
m_requests.clear();
boost::singleton_pool<boost::pool_allocator_tag, sizeof(unsigned int)>::release_memory();