diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index a12f2105a..7f2708a65 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -254,7 +254,9 @@ void Servent::registerControlConnection( ControlConnection* conn ) { Q_ASSERT( conn ); - m_controlconnections.append( conn ); + tLog( LOGVERBOSE ) << Q_FUNC_INFO << conn->name(); + m_controlconnections << conn; + m_connectedNodes << conn->id(); } @@ -262,6 +264,7 @@ void Servent::unregisterControlConnection( ControlConnection* conn ) { Q_ASSERT( conn ); + tLog( LOGVERBOSE ) << Q_FUNC_INFO << conn->name(); m_connectedNodes.removeAll( conn->id() ); m_controlconnections.removeAll( conn ); } @@ -481,8 +484,7 @@ Servent::readyRead() foreach ( ControlConnection* con, m_controlconnections ) { - if ( !con ) - continue; + Q_ASSERT( con ); tLog() << "known connection:" << con->id(); if ( con->id() == nodeid ) @@ -493,7 +495,7 @@ Servent::readyRead() } // for zeroconf there might be no offer, that case is handled later - ControlConnection* ccMatch = qobject_cast< ControlConnection* >( m_offers.value( key ).data() ); + ControlConnection* ccMatch = qobject_cast< ControlConnection* >( m_offers.value( key ).data() ); if ( dupe && ccMatch ) { tLog() << "Duplicate control connection detected, dropping:" << nodeid << conntype; @@ -517,7 +519,7 @@ Servent::readyRead() tDebug() << "Add these peers now"; foreach ( const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) { - tDebug() << "Adding " << currentPeerInfo->id(); + tDebug() << "Adding" << currentPeerInfo->id(); keepConnection->addPeerInfo( currentPeerInfo ); } tDebug() << "Done adding."; @@ -529,7 +531,9 @@ Servent::readyRead() foreach ( ControlConnection* con, m_controlconnections ) { - if ( con && con->id() == controlid ) + Q_ASSERT( con ); + + if ( con->id() == controlid ) { cc = con; break; @@ -540,7 +544,7 @@ Servent::readyRead() if ( conntype == "accept-offer" || conntype == "push-offer" ) { sock.data()->_msg.clear(); - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << key << nodeid << "socket peer address = " << sock.data()->peerAddress() << "socket peer name = " << sock.data()->peerName(); + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << key << nodeid << "socket peer address =" << sock.data()->peerAddress() << "socket peer name =" << sock.data()->peerName(); Connection* conn = claimOffer( cc, nodeid, key, sock.data()->peerAddress() ); if ( !conn ) { @@ -559,11 +563,11 @@ Servent::readyRead() } tDebug( LOGVERBOSE ) << "claimOffer OK:" << key << nodeid; - registerControlConnection( qobject_cast<ControlConnection*>(conn) ); - - m_connectedNodes << nodeid; if ( !nodeid.isEmpty() ) + { conn->setId( nodeid ); + registerControlConnection( qobject_cast<ControlConnection*>(conn) ); + } handoverSocket( conn, sock.data() ); return; @@ -619,7 +623,7 @@ Servent::socketConnected() { QTcpSocketExtra* sock = (QTcpSocketExtra*)sender(); - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << thread() << "socket: " << sock << ", hostaddr: " << sock->peerAddress() << ", hostname: " << sock->peerName(); + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << thread() << "socket:" << sock << ", hostaddr:" << sock->peerAddress() << ", hostname:" << sock->peerName(); if ( sock->_conn.isNull() ) { @@ -693,7 +697,7 @@ Servent::connectToPeer( const peerinfo_ptr& peerInfo ) SipInfo sipInfo = peerInfo->sipInfo(); - peerInfoDebug( peerInfo ) << "connectToPeer: search for already established connections to the same nodeid: " << m_controlconnections.count() << "connections"; + peerInfoDebug( peerInfo ) << "connectToPeer: search for already established connections to the same nodeid:" << m_controlconnections.count() << "connections"; bool isDupe = false; ControlConnection* conn = 0; @@ -749,20 +753,19 @@ Servent::connectToPeer( const peerinfo_ptr& peerInfo ) m["nodeid"] = Database::instance()->impl()->dbid(); peerInfoDebug(peerInfo) << "No match found, creating a new ControlConnection..."; + conn = new ControlConnection( this ); conn->addPeerInfo( peerInfo ); conn->setFirstMessage( m ); if ( peerInfo->id().length() ) conn->setName( peerInfo->id() ); - if ( sipInfo.uniqname().length() ) conn->setId( sipInfo.uniqname() ); conn->setProperty( "nodeid", sipInfo.uniqname() ); registerControlConnection( conn ); - connectToPeer( sipInfo.host(), sipInfo.port(), sipInfo.key(), conn ); }