--- 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
--- 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
--- 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 <e32debug.h>
#include <httperr.h>
+#include <sysutil.h>
#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)