summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2012-04-23 20:26:02 (GMT)
committerRemko Tronçon <git@el-tramo.be>2012-04-23 20:26:02 (GMT)
commitac8eb7c62838c7d85f451f2ee0f8456c14386137 (patch)
tree8b77da9045cf37c3de4bfd18ef004d30d26f38f0
parent4a8343171fd7717d61cb41b68055e32bc314503b (diff)
downloadswift-ac8eb7c62838c7d85f451f2ee0f8456c14386137.zip
swift-ac8eb7c62838c7d85f451f2ee0f8456c14386137.tar.bz2
Make sure setting disco info after reconnect does not immediately send presence.
Resolves: #976
-rw-r--r--Swiften/Client/Client.cpp1
-rw-r--r--Swiften/Disco/ClientDiscoManager.cpp4
-rw-r--r--Swiften/Disco/ClientDiscoManager.h7
3 files changed, 12 insertions, 0 deletions
diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp
index 48eddc2..4d3ee04 100644
--- a/Swiften/Client/Client.cpp
+++ b/Swiften/Client/Client.cpp
@@ -116,6 +116,7 @@ void Client::handleConnected() {
#else
fileTransferManager = new DummyFileTransferManager();
#endif
+ discoManager->handleConnected();
}
void Client::requestRoster() {
diff --git a/Swiften/Disco/ClientDiscoManager.cpp b/Swiften/Disco/ClientDiscoManager.cpp
index 99c0175..cca0144 100644
--- a/Swiften/Disco/ClientDiscoManager.cpp
+++ b/Swiften/Disco/ClientDiscoManager.cpp
@@ -36,4 +36,8 @@ void ClientDiscoManager::setDiscoInfo(const DiscoInfo& discoInfo) {
presenceSender->setPayload(capsInfo);
}
+void ClientDiscoManager::handleConnected() {
+ presenceSender->reset();
+}
+
}
diff --git a/Swiften/Disco/ClientDiscoManager.h b/Swiften/Disco/ClientDiscoManager.h
index f8ba9ac..6f126eb 100644
--- a/Swiften/Disco/ClientDiscoManager.h
+++ b/Swiften/Disco/ClientDiscoManager.h
@@ -58,6 +58,13 @@ namespace Swift {
return presenceSender;
}
+ /**
+ * Called when the client is connected.
+ * This resets the presence sender, such that it assumes initial presence
+ * hasn't been sent yet.
+ */
+ void handleConnected();
+
private:
PayloadAddingPresenceSender* presenceSender;
DiscoInfoResponder* discoInfoResponder;