# HG changeset patch # User Sebastian Brannstrom # Date 1287489204 -3600 # Node ID 572d166c94219f226f3c23b348f4af92e4f6384d # Parent a13c58ace598c723cfecdf8f7b8339cd81e4fd26 Merged fix for bug 3843 diff -r a13c58ace598 -r 572d166c9421 engine/group/engine.mmp --- a/engine/group/engine.mmp Tue Oct 19 12:45:21 2010 +0100 +++ b/engine/group/engine.mmp Tue Oct 19 12:53:24 2010 +0100 @@ -77,6 +77,7 @@ LIBRARY apparc.lib LIBRARY avkon.lib LIBRARY centralrepository.lib +LIBRARY sysutil.lib #ifdef ENABLE_MPX_INTEGRATION CAPABILITY NetworkServices UserEnvironment WriteUserData ReadDeviceData WriteDeviceData MultimediaDD diff -r a13c58ace598 -r 572d166c9421 engine/inc/HttpEventHandler.h --- a/engine/inc/HttpEventHandler.h Tue Oct 19 12:45:21 2010 +0100 +++ b/engine/inc/HttpEventHandler.h Tue Oct 19 12:53:24 2010 +0100 @@ -71,6 +71,7 @@ TBool iSilent; TBool iContinue; TInt iLastStatusCode; + TInt iDriveNo; }; #endif diff -r a13c58ace598 -r 572d166c9421 engine/src/HttpEventHandler.cpp --- a/engine/src/HttpEventHandler.cpp Tue Oct 19 12:45:21 2010 +0100 +++ b/engine/src/HttpEventHandler.cpp Tue Oct 19 12:53:24 2010 +0100 @@ -19,10 +19,13 @@ // HttpEventHandler.cpp #include #include +#include #include "HttpEventHandler.h" #include "bautils.h" #include "Httpclient.h" +const TInt64 KMinDiskSpace = 1024 * 1024; // at least 1 MB must remain + void CHttpEventHandler::ConstructL() { //iVerbose = ETrue; @@ -148,6 +151,18 @@ // Some (more) body data has been received (in the HTTP response) //DumpRespBody(aTransaction); //DP1("Saving: %d", iSavingResponseBody); + + // check if we have enough disk space + if (iDriveNo != -1 && SysUtil::DiskSpaceBelowCriticalLevelL( &iFileServ, KMinDiskSpace, iDriveNo )) + { + TInt error = KErrDiskFull; + iFileOpen = EFalse; + iRespBodyFile.Close(); + iCallbacks.FileError(error); + iHttpClient->ClientRequestCompleteL(error); + return; + } + // Append to the output file if we're saving responses if (iFileOpen) { @@ -239,6 +254,26 @@ DP1("CHttpEventHandler::SetSaveFileName, aContinue=%d", aContinue); iFileName.Copy(fName); iContinue = aContinue; + + switch(fName[0]) + { + case 'C': + iDriveNo = EDriveC; + break; + case 'E': + iDriveNo = EDriveE; + break; + case 'F': + iDriveNo = EDriveF; + break; + case 'G': + iDriveNo = EDriveG; + break; + default: + iDriveNo = -1; + break; + } + DP1("iDriveNo set to %d", iDriveNo); } void CHttpEventHandler::DumpRespHeadersL(RHTTPTransaction& aTrans)