From 704d14b48f1baaa9b037787451e0239fdc7f0daa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Mon, 13 Dec 2010 22:11:02 +0100
Subject: Fixed reconnect for bare JIDs.


diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 74e381a..56ebb0c 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -355,6 +355,13 @@ void MainController::handleLoginRequest(const String &username, const String &pa
 }
 
 void MainController::performLoginFromCachedCredentials() {
+	/* If we logged in with a bare JID, and we have a full bound JID, re-login with the
+	 * bound JID to try and keep dynamically assigned resources */
+	JID clientJID = jid_;
+	if (boundJID_.isValid() && jid_.isBare() && boundJID_.toBare() == jid_) {
+		clientJID = boundJID_;
+	}
+
 	if (!statusTracker_) {
 		statusTracker_  = new StatusTracker();
 	}
@@ -362,7 +369,7 @@ void MainController::performLoginFromCachedCredentials() {
 		storages_ = storagesFactory_->createStorages(jid_.toBare());
 		certificateStorage_ = certificateStorageFactory_->createCertificateStorage(jid_.toBare());
 		certificateTrustChecker_ = new CertificateStorageTrustChecker(certificateStorage_);
-		client_ = new Swift::Client(eventLoop_, &networkFactories_, jid_, password_, storages_);
+		client_ = new Swift::Client(eventLoop_, &networkFactories_, clientJID, password_, storages_);
 		client_->setCertificateTrustChecker(certificateTrustChecker_);
 		// FIXME: Remove this line to activate the trust checker
 		//client_->setAlwaysTrustCertificates();
@@ -393,13 +400,8 @@ void MainController::performLoginFromCachedCredentials() {
 	if (rosterController_) {
 		rosterController_->getWindow()->setConnecting();
 	}
-	/* If we logged in with a bare JID, and we have a full bound JID, re-login with the
-	 * bound JID to try and keep dynamically assigned resources */
-	if (boundJID_.isValid() && jid_.isBare() && boundJID_.toBare() == jid_) {
-		client_->connect(boundJID_);
-	} else {
-		client_->connect();
-	}
+
+	client_->connect();
 }
 
 void MainController::handleDisconnected(const boost::optional<ClientError>& error) {
-- 
cgit v0.10.2-6-g49f6