From 97a2cd5b2af5d9f0f2682e2c2099a1c3301ba1ca Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Thu, 6 Dec 2012 10:52:19 +0100 Subject: [PATCH] Send 307 and also 332 codes from rooms when stopping spectrum --- src/conversation.cpp | 11 +++++++++-- src/tests/conversationmanager.cpp | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/conversation.cpp b/src/conversation.cpp index 9cd8f739..9912bf25 100644 --- a/src/conversation.cpp +++ b/src/conversation.cpp @@ -47,21 +47,28 @@ void Conversation::destroyRoom() { legacyName.replace(legacyName.find_last_of("@"), 1, "%"); // OK } presence->setFrom(Swift::JID(legacyName, m_conversationManager->getComponent()->getJID().toBare(), m_nickname)); - presence->setTo(m_jid); presence->setType(Swift::Presence::Unavailable); Swift::MUCItem item; item.affiliation = Swift::MUCOccupant::NoAffiliation; item.role = Swift::MUCOccupant::NoRole; + item.actor = "Transport"; + item.reason = "Spectrum 2 transport is being shut down."; Swift::MUCUserPayload *p = new Swift::MUCUserPayload (); p->addItem(item); Swift::MUCUserPayload::StatusCode c; c.code = 332; p->addStatusCode(c); + Swift::MUCUserPayload::StatusCode c2; + c2.code = 307; + p->addStatusCode(c2); presence->addPayload(boost::shared_ptr(p)); - m_conversationManager->getComponent()->getStanzaChannel()->sendPresence(presence); + BOOST_FOREACH(const Swift::JID &jid, m_jids) { + presence->setTo(jid); + m_conversationManager->getComponent()->getStanzaChannel()->sendPresence(presence); + } } } diff --git a/src/tests/conversationmanager.cpp b/src/tests/conversationmanager.cpp index 0869ec8a..480a7289 100644 --- a/src/tests/conversationmanager.cpp +++ b/src/tests/conversationmanager.cpp @@ -402,7 +402,7 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe User *user = userManager->getUser("user@localhost"); TestingConversation *conv = new TestingConversation(user->getConversationManager(), "#room", true); conv->setNickname("nickname"); - conv->setJID("user@localhost/resource"); + conv->addJID("user@localhost/resource"); received.clear(); conv->destroyRoom(); delete conv;