From 653d3efc5eb007c660f16df9929b1fce1fc75004 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sun, 7 Jul 2013 12:56:08 +0400 Subject: [PATCH] Swiften backend: fix processing IQ from JIDs with empty resources --- backends/swiften/main.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backends/swiften/main.cpp b/backends/swiften/main.cpp index 5a2c1f37..424ce975 100644 --- a/backends/swiften/main.cpp +++ b/backends/swiften/main.cpp @@ -143,7 +143,13 @@ class SwiftenPlugin : public NetworkPlugin, Swift::XMPPParserClient { boost::shared_ptr iq = boost::dynamic_pointer_cast(stanza); if (iq) { if (m_handlers[user]->m_id2resource.find(stanza->getID()) != m_handlers[user]->m_id2resource.end()) { - iq->setTo(Swift::JID(iq->getTo().getNode(), iq->getTo().getDomain(), m_handlers[user]->m_id2resource[stanza->getID()])); + std::string resource = m_handlers[user]->m_id2resource[stanza->getID()]; + if (resource.empty()) { + iq->setTo(Swift::JID(iq->getTo().getNode(), iq->getTo().getDomain())); + } else { + iq->setTo(Swift::JID(iq->getTo().getNode(), iq->getTo().getDomain(), resource)); + } + m_handlers[user]->m_id2resource.erase(stanza->getID()); } client->getIQRouter()->sendIQ(iq);