summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-07-19 16:12:36 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-07-19 16:12:36 (GMT)
commit2fe12d374a18bf4c96f98d3e02c484e8307c1fe0 (patch)
treed0b4f55b34865b1962995742888536da76e84d2e
parentbfa7d3d26faaa2db2580d6d7a9388beb71a53c7b (diff)
downloadswift-contrib-2fe12d374a18bf4c96f98d3e02c484e8307c1fe0.zip
swift-contrib-2fe12d374a18bf4c96f98d3e02c484e8307c1fe0.tar.bz2
Fix bug with outgoing link-local connections.
-rw-r--r--Nim/main.cpp5
-rw-r--r--Swiften/LinkLocal/OutgoingLinkLocalSession.cpp7
-rw-r--r--Swiften/LinkLocal/OutgoingLinkLocalSession.h1
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&);