diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp index 9bb280baf9f0227a84c3c746ab6a79021004e5b6..ab18b261ea4eeec80afa65579074c763126f1d2f 100644 --- a/libtransport/NetworkPluginServer.cpp +++ b/libtransport/NetworkPluginServer.cpp @@ -1080,24 +1080,24 @@ void NetworkPluginServer::handleElement(boost::shared_ptr elemen return; } - // TODO: FIX TO MAKE RAW XML BACKENDS WORKING AGAIN. -// boost::shared_ptr iq = boost::dynamic_pointer_cast(stanza); -// if (iq) { -// if (m_id2resource.find(stanza->getTo().toBare().toString() + stanza->getID()) != m_id2resource.end()) { -// iq->setTo(Swift::JID(iq->getTo().getNode(), iq->getTo().getDomain(), m_id2resource[stanza->getTo().toBare().toString() + stanza->getID()])); -// m_id2resource.erase(stanza->getTo().toBare().toString() + stanza->getID()); -// } -// else { -// Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(user->getJID()); -// if (highest) { -// iq->setTo(highest->getFrom()); -// } else { -// iq->setTo(user->getJID()); -// } -// } -// m_component->getFrontend()->sendIQ(iq); -// return; -// } + // TODO: Move m_id2resource in User and clean it up + boost::shared_ptr iq = boost::dynamic_pointer_cast(stanza); + if (iq) { + if (m_id2resource.find(stanza->getTo().toBare().toString() + stanza->getID()) != m_id2resource.end()) { + iq->setTo(Swift::JID(iq->getTo().getNode(), iq->getTo().getDomain(), m_id2resource[stanza->getTo().toBare().toString() + stanza->getID()])); + m_id2resource.erase(stanza->getTo().toBare().toString() + stanza->getID()); + } + else { + Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(user->getJID()); + if (highest) { + iq->setTo(highest->getFrom()); + } else { + iq->setTo(user->getJID()); + } + } + m_component->getFrontend()->sendIQ(iq); + return; + } } void NetworkPluginServer::handleRawXML(const std::string &xml) {