diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-07-19 16:12:36 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-07-19 16:12:36 (GMT) |
commit | 2fe12d374a18bf4c96f98d3e02c484e8307c1fe0 (patch) | |
tree | d0b4f55b34865b1962995742888536da76e84d2e | |
parent | bfa7d3d26faaa2db2580d6d7a9388beb71a53c7b (diff) | |
download | swift-contrib-2fe12d374a18bf4c96f98d3e02c484e8307c1fe0.zip swift-contrib-2fe12d374a18bf4c96f98d3e02c484e8307c1fe0.tar.bz2 |
Fix bug with outgoing link-local connections.
-rw-r--r-- | Nim/main.cpp | 5 | ||||
-rw-r--r-- | Swiften/LinkLocal/OutgoingLinkLocalSession.cpp | 7 | ||||
-rw-r--r-- | Swiften/LinkLocal/OutgoingLinkLocalSession.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/Nim/main.cpp b/Nim/main.cpp index 2522a13..a9e9934 100644 --- a/Nim/main.cpp +++ b/Nim/main.cpp @@ -200,7 +200,7 @@ class Server { boost::shared_ptr<LinkLocalConnector> connector = getLinkLocalConnectorForJID(toJID); if (!connector) { - boost::shared_ptr<LinkLocalConnector> connector( + connector = boost::shared_ptr<LinkLocalConnector>( new LinkLocalConnector( toJID, linkLocalRoster_->getHostname(toJID), @@ -210,6 +210,7 @@ class Server { connector->onConnectFinished.connect( boost::bind(&Server::handleConnectFinished, this, connector, _1)); connectors_.push_back(connector); + connector->connect(); } connector->queueElement(element); } @@ -232,10 +233,10 @@ class Server { new OutgoingLinkLocalSession( selfJID_, connector->getRemoteJID(), connector->getConnection(), &payloadParserFactories_, &payloadSerializers_)); - registerLinkLocalSession(outgoingSession); foreach(const boost::shared_ptr<Element> element, connector->getQueuedElements()) { outgoingSession->queueElement(element); } + registerLinkLocalSession(outgoingSession); } connectors_.erase(std::remove(connectors_.begin(), connectors_.end(), connector), connectors_.end()); } diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp index 4118e34..1c2fefb 100644 --- a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp +++ b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp @@ -2,6 +2,7 @@ #include <boost/bind.hpp> +#include "Swiften/StreamStack/XMPPLayer.h" #include "Swiften/Elements/ProtocolHeader.h" #include "Swiften/Elements/StreamFeatures.h" #include "Swiften/Elements/IQ.h" @@ -19,6 +20,12 @@ OutgoingLinkLocalSession::OutgoingLinkLocalSession( setRemoteJID(remoteJID); } +void OutgoingLinkLocalSession::handleSessionStarted() { + ProtocolHeader header; + header.setFrom(getLocalJID()); + getXMPPLayer()->writeHeader(header); +} + void OutgoingLinkLocalSession::handleStreamStart(const ProtocolHeader&) { foreach(const boost::shared_ptr<Element>& stanza, queuedElements_) { sendElement(stanza); diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.h b/Swiften/LinkLocal/OutgoingLinkLocalSession.h index 904a9d3..32f78e4 100644 --- a/Swiften/LinkLocal/OutgoingLinkLocalSession.h +++ b/Swiften/LinkLocal/OutgoingLinkLocalSession.h @@ -27,6 +27,7 @@ namespace Swift { void queueElement(boost::shared_ptr<Element> element); private: + void handleSessionStarted(); void handleElement(boost::shared_ptr<Element>); void handleStreamStart(const ProtocolHeader&); |