From 7805d876f88df16c93862e16870eac4b448aa32e 2013-02-26 09:31:57 From: HanzZ Date: 2013-02-26 09:31:57 Subject: [PATCH] Libtransport: Send also subject in sendCachedMessages() --- diff --git a/src/conversation.cpp b/src/conversation.cpp index c02396e5a6d00547e7ba9283ea8d58c073c77032..dce307c37921cc06d1a4fe69e54bb346a8b9472e 100644 --- a/src/conversation.cpp +++ b/src/conversation.cpp @@ -214,6 +214,17 @@ void Conversation::sendCachedMessages(const Swift::JID &to) { } m_conversationManager->getComponent()->getStanzaChannel()->sendMessage(*it); } + + if (m_subject) { + if (to.isValid()) { + m_subject->setTo(to); + } + else { + m_subject->setTo(m_jid.toBare()); + } + m_conversationManager->getComponent()->getStanzaChannel()->sendMessage(m_subject); + } + m_cachedMessages.clear(); } diff --git a/src/tests/conversationmanager.cpp b/src/tests/conversationmanager.cpp index 36d90a3027d79d1560726b49f26f40f8d208097a..c5965a9d1c84cb22a6302588d83ee3880b5e66f6 100644 --- a/src/tests/conversationmanager.cpp +++ b/src/tests/conversationmanager.cpp @@ -313,6 +313,10 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe conv->setNickname("nickname"); conv->addJID("user@localhost/resource"); + boost::shared_ptr msg0(new Swift::Message()); + msg0->setSubject("subject"); + conv->handleMessage(msg0, "anotheruser"); + CPPUNIT_ASSERT(!user->shouldCacheMessages()); // disconnectUser @@ -350,7 +354,7 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe injectPresence(response); loop->processEvents(); - CPPUNIT_ASSERT_EQUAL(3, (int) received.size()); + CPPUNIT_ASSERT_EQUAL(4, (int) received.size()); CPPUNIT_ASSERT(dynamic_cast(getStanza(received[1]))); CPPUNIT_ASSERT_EQUAL(std::string("hi there!"), dynamic_cast(getStanza(received[1]))->getBody()); CPPUNIT_ASSERT_EQUAL(std::string("user@localhost/resource"), dynamic_cast(getStanza(received[1]))->getTo().toString()); @@ -361,6 +365,10 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe CPPUNIT_ASSERT_EQUAL(std::string("user@localhost/resource"), dynamic_cast(getStanza(received[2]))->getTo().toString()); CPPUNIT_ASSERT_EQUAL(std::string("#room@localhost/anotheruser"), dynamic_cast(getStanza(received[2]))->getFrom().toString()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[3]))); + CPPUNIT_ASSERT_EQUAL(std::string("subject"), dynamic_cast(getStanza(received[3]))->getSubject()); + CPPUNIT_ASSERT_EQUAL(std::string("user@localhost/resource"), dynamic_cast(getStanza(received[3]))->getTo().toString()); + CPPUNIT_ASSERT_EQUAL(std::string("#room@localhost/anotheruser"), dynamic_cast(getStanza(received[3]))->getFrom().toString()); } void handleGroupchatMessagesBouncerLeave() {