diff -r 9569ea080d5a -r 4d230e702aa3 engine/src/HttpEventHandler.cpp --- a/engine/src/HttpEventHandler.cpp Thu Mar 11 20:53:00 2010 +0100 +++ b/engine/src/HttpEventHandler.cpp Tue Apr 27 19:26:48 2010 +0100 @@ -19,7 +19,6 @@ // HttpEventHandler.cpp #include #include - #include "HttpEventHandler.h" #include "bautils.h" #include "Httpclient.h" @@ -67,10 +66,7 @@ // going to be a response body to save. RHTTPResponse resp = aTransaction.Response(); iLastStatusCode = resp.StatusCode(); - RStringF statusStr = resp.StatusText(); - TBuf<32> statusStr16; - statusStr16.Copy(statusStr.DesC()); - DP2("Status: %d (%S)", iLastStatusCode, &statusStr16); + DP1("Status: %d", iLastStatusCode); // Dump the headers if we're being verbose //DumpRespHeadersL(aTransaction); @@ -105,10 +101,12 @@ { iFileServ.Parse(iFileName, iParsedFileName); TInt valid = iFileServ.IsValidName(iFileName); + if (!valid) { DP("The specified filename is not valid!."); iSavingResponseBody = EFalse; + iHttpClient->ClientRequestCompleteL(KErrBadName); } else { @@ -116,21 +114,28 @@ TInt err = iRespBodyFile.Open(iFileServ, iParsedFileName.FullName(),EFileWrite); if (err) { - DP("There was an error opening file"); + DP2("There was an error opening file '%S', err=%d", &iParsedFileName.FullName(), err); iSavingResponseBody = EFalse; + iHttpClient->ClientRequestCompleteL(KErrInUse); User::Leave(err); - } else { + } + else + { int pos = -KByteOverlap; - if((err=iRespBodyFile.Seek(ESeekEnd, pos)) != KErrNone) { + if((err=iRespBodyFile.Seek(ESeekEnd, pos)) != KErrNone) + { DP("Failed to set position!"); + iHttpClient->ClientRequestCompleteL(KErrWrite); User::Leave(err); + } + iBytesDownloaded = (pos > 0) ? pos : 0; + iBytesTotal += iBytesDownloaded; + DP1("Total bytes is now %u", iBytesTotal); + DP1("Seeking end: %d", pos); } - iBytesDownloaded = (pos > 0) ? pos : 0; - iBytesTotal += iBytesDownloaded; - DP1("Total bytes is now %u", iBytesTotal); - DP1("Seeking end: %d", pos); - } - } else { + } + else + { TInt err = iRespBodyFile.Replace(iFileServ, iParsedFileName.FullName(), EFileWrite); @@ -160,10 +165,10 @@ iRespBody->GetNextDataPart(bodyData); iBytesDownloaded += bodyData.Length(); TInt error = iRespBodyFile.Write(bodyData); - + // on writing error we close connection if (error != KErrNone) { - //aTransaction.Close(); + iRespBodyFile.Close(); iCallbacks.FileError(error); iHttpClient->ClientRequestCompleteL(error); return; @@ -224,10 +229,11 @@ } } -TInt CHttpEventHandler::MHFRunError(TInt aError, RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/) +TInt CHttpEventHandler::MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& /*aEvent*/) { DP1("MHFRunError fired with error code %d", aError); - + aTransaction.Close(); + TRAP_IGNORE(iHttpClient->ClientRequestCompleteL(aError)); return KErrNone; }