diff --git a/src/mms/iso_mms/client/mms_client_files.c b/src/mms/iso_mms/client/mms_client_files.c index b10ba7ae..0df2c95d 100644 --- a/src/mms/iso_mms/client/mms_client_files.c +++ b/src/mms/iso_mms/client/mms_client_files.c @@ -210,8 +210,10 @@ mmsClient_handleFileCloseRequest( if (frsm->obtainRequest) frsm->obtainRequest->timeout = Hal_getTimeInMs() + connection->requestTimeout; - FileSystem_closeFile(frsm->fileHandle); - frsm->fileHandle = NULL; + if(frsm->fileHandle){ + FileSystem_closeFile(frsm->fileHandle); + frsm->fileHandle = NULL; + } frsm->frsmId = 0; frsm->obtainRequest = NULL; diff --git a/src/mms/iso_mms/server/mms_server_connection.c b/src/mms/iso_mms/server/mms_server_connection.c index f26f4577..01f674a8 100644 --- a/src/mms/iso_mms/server/mms_server_connection.c +++ b/src/mms/iso_mms/server/mms_server_connection.c @@ -554,20 +554,25 @@ handleConfirmedResponsePdu( bool moreFollows; - if (mmsMsg_parseFileReadResponse(buffer, startBufPos, maxBufPos, invokeId, fileTask->frmsId, &moreFollows, mmsFileReadHandler, (void*) fileTask)) { - - if (moreFollows) { - fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_READ; + if(fileTask->fileHandle == NULL){ + fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_DESTINATION; + } + else{ + if (mmsMsg_parseFileReadResponse(buffer, startBufPos, maxBufPos, invokeId, fileTask->frmsId, &moreFollows, mmsFileReadHandler, (void*) fileTask)) { + + if (moreFollows) { + fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_READ; + } + else { + fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_CLOSE; + } } else { - fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_CLOSE; - } - } - else { - fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; + fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; - if (DEBUG_MMS_SERVER) - printf("MMS_SERVER: error parsing file-read-response\n"); + if (DEBUG_MMS_SERVER) + printf("MMS_SERVER: error parsing file-read-response\n"); + } } } else { @@ -588,7 +593,9 @@ handleConfirmedResponsePdu( MmsObtainFileTask fileTask = getUploadTaskByInvokeId(self->server, invokeId); if (fileTask != NULL) { - FileSystem_closeFile(fileTask->fileHandle); + if(fileTask->fileHandle){ + FileSystem_closeFile(fileTask->fileHandle); + } fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_RESPONSE; } else {