[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdenetwork/kopete/protocols/oscar/liboscar
From:       Roman Jarosz <kedgedev () centrum ! cz>
Date:       2008-10-15 21:42:21
Message-ID: 1224106941.814344.14571.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 871882 by rjarosz:

Fix crash on login.
Set d->stage to StageTwo after stage one is finished and not on new connection \
because somehow d->stage could have been set to StageTwo while we were in StageOne \
stage. Clear oscar client before connecting to server because we could start it more \
than once.

BUG: 160359



 M  +18 -4     client.cpp  


--- trunk/KDE/kdenetwork/kopete/protocols/oscar/liboscar/client.cpp #871881:871882
@@ -234,6 +234,10 @@
 {
 	Q_UNUSED( host );
 	Q_UNUSED( port );
+
+	// Cleanup client
+	close();
+
 	d->user = userId;
 	d->pass = pass;
 	d->stage = ClientPrivate::StageOne;
@@ -256,6 +260,19 @@
 	d->awayMsgRequestTimer->stop();
 	d->awayMsgRequestQueue.clear();
 	d->connections.clear();
+
+	if ( m_loginTask )
+	{
+		m_loginTask->deleteLater();
+		m_loginTask = 0;
+	}
+
+	if ( m_loginTaskTwo )
+	{
+		m_loginTaskTwo->deleteLater();
+		m_loginTaskTwo = 0;
+	}
+
 	deleteStaticTasks();
 
 	//don't clear the stored status between stage one and two
@@ -391,7 +408,6 @@
 void Client::streamConnected()
 {
 	kDebug(OSCAR_RAW_DEBUG) ;
-	d->stage = ClientPrivate::StageTwo;
 	if ( m_loginTaskTwo )
 		m_loginTaskTwo->go();
 }
@@ -427,15 +443,13 @@
 			d->cookie = m_loginTask->loginCookie();
 			close();
 			QTimer::singleShot( 100, this, SLOT(startStageTwo() ) );
+			d->stage = ClientPrivate::StageTwo;
 		}
 		else
 		{
 			kDebug(OSCAR_RAW_DEBUG) << "errors reported. not moving to stage two";
 			close(); //deletes the connections for us
 		}
-
-		m_loginTask->deleteLater();
-		m_loginTask = 0;
 	}
 
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic