# HG changeset patch # User Petteri Saari # Date 1291296228 -7200 # Node ID 7634585a43472caef8ae44e16ee30b3ed81c6e85 # Parent b365c991829cbd07c91c424cf6fd73d197e76eb1 This release addresses the following: - Multiple concurrent file transfer bug fixes. i.e. one device is concurrently receiving multiple files from multiple devices diff -r b365c991829c -r 7634585a4347 Msrp/MsrpClient/src/CMSRPSessionImplementation.cpp --- a/Msrp/MsrpClient/src/CMSRPSessionImplementation.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpClient/src/CMSRPSessionImplementation.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -241,7 +241,7 @@ void CMSRPSessionImplementation::HandleIncomingMessageL( const TDesC8& aIncomingMessage, TInt aStatus ) { - MSRPLOG( "CMSRPSessionImplementation::HandleIncomingMessageL enter" ) + MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL enter, length %d", aIncomingMessage.Length() ) // the incoming buffer must be internalized RDesReadStream readStream( aIncomingMessage ); @@ -249,7 +249,9 @@ if ( CMSRPMessage::IsMessage( aIncomingMessage ) ) { CMSRPMessage* message = NULL; - message = CMSRPMessage::InternalizeL( readStream ); + TRAPD( err, message = CMSRPMessage::InternalizeL( readStream ) ); + MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL enter internalize err = %d", err ) + User::LeaveIfError( err ); CleanupStack::PushL(message); MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL, content = %d", message->IsContent() ) MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL, FN = %S", &message->GetFileName() ) @@ -293,7 +295,10 @@ } else if ( CMSRPReport::IsReport( aIncomingMessage ) ) { - CMSRPReport* report = CMSRPReport::InternalizeL( readStream ); + CMSRPReport* report = NULL; + TRAPD( err, report = CMSRPReport::InternalizeL( readStream ) ); + MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL enter internalize err = %d", err ) + User::LeaveIfError( err ); MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL, status = %d", report->StatusHeader()->StatusCode() ) MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL, startpos = %d", report->ByteRangeHeader()->StartPosition() ) MSRPLOG2( "CMSRPSessionImplementation::HandleIncomingMessageL, endpos = %d", report->ByteRangeHeader()->EndPosition() ) @@ -308,6 +313,7 @@ } else { + MSRPLOG( "CMSRPSessionImplementation::HandleIncomingMessageL enter INVALID MESSAGE RECEIVED!" ) User::Leave( KErrArgument ); } diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/CMSRPConnectionManager.cpp --- a/Msrp/MsrpServer/src/CMSRPConnectionManager.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/CMSRPConnectionManager.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -332,6 +332,7 @@ { aAddress = TInetAddr::Cast( entry().iAddr ); } + iHostResolver.Close(); //CleanupStack::PopAndDestroy( ); MSRPLOG( "CMSRPConnectionManager::ResolveIPAddressL exit" ) } diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/CMSRPMessageHandler.cpp --- a/Msrp/MsrpServer/src/CMSRPMessageHandler.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/CMSRPMessageHandler.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -320,7 +320,21 @@ } else { - AppendMessageToFileL( aContent ); + if( iBuffer.Length() ) + { + HBufC8* combined = HBufC8::NewLC( iBuffer.Length() + aContent.Length() ); + TPtr8 ptr = combined->Des(); + ptr = iBuffer; + ptr.Append( aContent ); + // must write to file + WriteMessageToFileL( ptr ); + CleanupStack::PopAndDestroy( ); // combined + iBuffer.Zero(); + } + else + { + AppendMessageToFileL( aContent ); + } } } MSRPLOG( "CMSRPMessageHandler::AddContentL exit" ) @@ -465,7 +479,7 @@ if ( iActiveMsgType == EMSRPResponse ) { // currently sending a response - MSRPLOG( "CMSRPMessageHandler::SendReportL sendin a response..." ) + MSRPLOG( "CMSRPMessageHandler::SendReportL response sending in progress, do nothing" ) return sendReport; } iMSRPMessageObserver = aMessageObserver; diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/CMSRPMsgParser.cpp --- a/Msrp/MsrpServer/src/CMSRPMsgParser.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/CMSRPMsgParser.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -100,7 +100,8 @@ while (match == EFullMatch) //while (ret == TRUE)/*parse all parseable data*/ { - MSRPLOG( "CMSRPMsgParser::ParseL enter" ) + MSRPLOG2( "CMSRPMsgParser::ParseL enter,count= %d", iParseBuffers.Count() ) + MSRPLOG2( "CMSRPMsgParser::ParseL enter,state = %d", iState ) if(!iParseBuffers.Count()) { MSRPLOG( "CMSRPMsgParser::ParseL exit" ) @@ -114,6 +115,13 @@ } TInt matchPos( 0 ); + #ifdef _DEBUG + TBuf<100> koe; + koe.Copy( iParseBuffers[0]->Ptr().Left( 100 ) ); + MSRPLOG2( "ST=%S", &koe ) + koe.Copy( iParseBuffers[0]->Ptr().Right( 100 ) ); + MSRPLOG2( "ST=%S", &koe ) + #endif match = FindToken(iParseBuffers[0]->Ptr(),token,matchPos); if(match == EFullMatch) { diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/CMSRPServerSubSession.cpp --- a/Msrp/MsrpServer/src/CMSRPServerSubSession.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/CMSRPServerSubSession.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -478,6 +478,11 @@ // Extract the data and complete the iIncommingMessageListner. MSRPLOG("CMSRPServerSubSession::sendMsgToClientL"); CMSRPMessage* inMsg = incommingMsgHandler->GetIncomingMessage(); + + if ( iCurrentlyReceivingMsgQ.FindElement( incommingMsgHandler ) ) + { + iCurrentlyReceivingMsgQ.explicitRemove( incommingMsgHandler ); + } if ( inMsg ) { diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/CMSRPWriter.cpp --- a/Msrp/MsrpServer/src/CMSRPWriter.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/CMSRPWriter.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -179,6 +179,7 @@ MMSRPWriterObserver::TMsgStatus msgState = MMSRPWriterObserver::EComplete; msgState = iSendQueue[0]->WriteDoneL(status); + MSRPLOG2( "CMSRPWriter::RunL enter, state = %d", msgState ) if( msgState != MMSRPWriterObserver::EPending && msgState != MMSRPWriterObserver::ESendingReport ) { @@ -215,10 +216,13 @@ // void CMSRPWriter::SendL() { + MSRPLOG( "->CMSRPWriter::SendL" ) TBool interruptSend = FALSE; + MSRPLOG2( "-> CMSRPWriter::SendL, count = %d", iSendQueue.Count() ); if(iSendQueue.Count()) { + MSRPLOG2( "-> CMSRPWriter::SendL, sending instance = %d", iSendQueue[0] ); MMSRPWriterObserver::TWriteStatus ret = MMSRPWriterObserver::EMsrpSocketWrite; if(iSendQueue.Count()>1) diff -r b365c991829c -r 7634585a4347 Msrp/MsrpServer/src/TStates.cpp --- a/Msrp/MsrpServer/src/TStates.cpp Fri Nov 26 12:09:49 2010 +0200 +++ b/Msrp/MsrpServer/src/TStates.cpp Thu Dec 02 15:23:48 2010 +0200 @@ -250,6 +250,7 @@ } else { + MSRPLOG("TStateBase::handleClientListnerCancelL completing incoming listener" ); if( aContext->iIncommingMessageListner.Check() ) { aContext->iIncommingMessageListner.Complete( KErrNone ); @@ -302,9 +303,14 @@ switch(iConnectionEvent) { - case -1: // Error Scenario + case -1: // Error Scenario + { + // empty queue + MSRPLOG("TStateBase::handleConnectionStateChangedL, emptying queue " ); + while ( aContext->iCurrentlyReceivingMsgQ.DeQueue() ); state = handleConnectionErrorsL(aContext); break; + } case 1: case 2: