Blob Blame History Raw
diff --git kopete/protocols/bonjour/bonjourcontactconnection.cpp kopete/protocols/bonjour/bonjourcontactconnection.cpp
index 0a925b4..c126011 100644
--- kopete/protocols/bonjour/bonjourcontactconnection.cpp
+++ kopete/protocols/bonjour/bonjourcontactconnection.cpp
@@ -56,9 +56,10 @@ void BonjourContactConnection::setSocket(QTcpSocket *aSocket)
 }
 
 BonjourContactConnection::BonjourContactConnection(QTcpSocket *aSocket, 
-		QObject *parent) : QObject(parent), connectionState(BonjourConnectionNewIncoming), socket(aSocket), parser(),
+		QObject *parent) : QObject(parent), connectionState(BonjourConnectionNewIncoming), parser(),
 					local(), remote()
 {
+	setSocket(aSocket);
 }
 
 BonjourContactConnection::BonjourContactConnection(const QHostAddress &address, short int port,
@@ -188,6 +189,14 @@ void BonjourContactConnection::dataInSocket()
 			getStreamTag(token);
 			break;
 	}
+
+	if (moreTokensAvailable())
+		dataInSocket();
+}
+
+bool BonjourContactConnection::moreTokensAvailable()
+{
+	return ! parser.atEnd();
 }
 
 void BonjourContactConnection::getStreamTag(BonjourXmlToken &token)
diff --git kopete/protocols/bonjour/bonjourcontactconnection.h kopete/protocols/bonjour/bonjourcontactconnection.h
index c0d347a..6c06300 100644
--- kopete/protocols/bonjour/bonjourcontactconnection.h
+++ kopete/protocols/bonjour/bonjourcontactconnection.h
@@ -80,6 +80,9 @@ class BonjourContactConnection : public QObject {
 	// Set the Socket
 	void setSocket(QTcpSocket *socket);
 
+	// Determine if there is more data available
+	bool moreTokensAvailable();
+
 	/**
 	 * @brief Description of A Token
 	 *