From 653d3efc5eb007c660f16df9929b1fce1fc75004 2013-07-07 10:56:08 From: Vitaly Takmazov Date: 2013-07-07 10:56:08 Subject: [PATCH] Swiften backend: fix processing IQ from JIDs with empty resources --- diff --git a/backends/swiften/main.cpp b/backends/swiften/main.cpp index 5a2c1f37eb2d344053d8449adc0ed318de1ab0c8..424ce975cae15c9e6a7e967809fa37bf873743e7 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);