diff -r 2f328ce1b263 -r ea9c9681bbaf applayerprotocols/httptransportfw/core/CTransaction.cpp --- a/applayerprotocols/httptransportfw/core/CTransaction.cpp Thu May 27 13:21:53 2010 +0300 +++ b/applayerprotocols/httptransportfw/core/CTransaction.cpp Fri Jun 11 14:06:05 2010 +0300 @@ -38,10 +38,13 @@ { // Delete all current events. iEventQueue.Reset(); - // Cancel the active object - Cancel(); - // And send the cancel event - SynchronousSendEvent(THTTPEvent::ECancel, THTTPEvent::EOutgoing, aStart); + if(iStatus != ECancelled) + { + // Cancel the active object + Cancel(); + // And send the cancel event + SynchronousSendEvent(THTTPEvent::ECancel, THTTPEvent::EOutgoing, aStart); + } if (iStatus != EInFilter && iStatus != ECancelled) iStatus = EPassive; else @@ -58,6 +61,7 @@ { CHeaderFieldPart::ClosePropertySet(iPropertySet); delete iRequest; + iRequest = NULL; delete this; return; } @@ -81,7 +85,9 @@ iSession.RemoveTransaction(this); CHeaderFieldPart::ClosePropertySet(iPropertySet); delete iRequest; + iRequest = NULL; delete iResponse; + iResponse = NULL; // Cancel the active object Cancel();