diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index 0967fe567a8c8208b1f1805cebcd07f2c8a036b6..1cfedd0fadff2916581b2cb1bf194f100350ee68 100644 --- a/src/rostermanager.cpp +++ b/src/rostermanager.cpp @@ -280,6 +280,15 @@ void RosterManager::handleRemoteRosterResponse(boost::shared_ptrgetJID().toString() << ": This server supports remote roster protoXEP"); m_supportRemoteRoster = true; + + //If we receive empty RosterPayload on login (not register) initiate full RosterPush + if(!m_buddies.empty() && payload->getItems().empty()){ + LOG4CXX_INFO(logger, "Received empty Roster upon login. Pushing full Roster."); + for(std::map, boost::pool_allocator< std::pair > >::const_iterator c_it = m_buddies.begin(); + c_it != m_buddies.end(); c_it++) { + sendBuddyRosterPush(c_it->second); + } + } return; BOOST_FOREACH(const Swift::RosterItemPayload &item, payload->getItems()) {