From: Diederik v. d. B. <cod...@us...> - 2006-10-30 23:10:46
|
Update of /cvsroot/kmess/kmess/kmess/network/applications In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv3281/kmess/network/applications Modified Files: p2papplication.cpp Log Message: Added additional check for unexpected SLP transfer invitations, when BYE should actually be sent. Seams to occur with WLM8 sometimes. Index: p2papplication.cpp =================================================================== RCS file: /cvsroot/kmess/kmess/kmess/network/applications/p2papplication.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- p2papplication.cpp 30 Oct 2006 22:41:31 -0000 1.43 +++ p2papplication.cpp 30 Oct 2006 23:10:44 -0000 1.44 @@ -1558,6 +1558,8 @@ << " but no session is set up (maybe a msn7 feature, contact=" << getContactHandle() << ")." << endl; } + + // Abort if the connection already exists if(applicationList_->hasDirectConnection() ) { kdWarning() << "P2PApplication: Received an invitation to start a direct connection, " @@ -1573,6 +1575,18 @@ return; } + + // Abort if the file data was just received. + // For some reason WLM8 sometimes sends the invitation directly after the file was sent. + // First cause some invites to fail (don't accept/cancel). Then accept one but send an "transfer accept" with invalid IP/port. Not sure it can always be reproduced this way though. + if( waitingState_ == P2P_WAIT_FOR_SLP_BYE ) + { + kdWarning() << "P2PApplication: Received an invitation for a direct connection, but expecting BYE instead (file transfer just completed, contact=" << getContactHandle() << ")." << endl; + sendCancelMessage( CANCEL_INVITATION ); + return; + } + + // TODO: Quick fix for WLM8: don't allow direct connection invite for picture transfer if( isUserStartedApp() ) { @@ -1581,6 +1595,7 @@ return; } + // Create the accept message MimeMessage acceptMessage; bool startListening = false; |