- MMS server: fixed file upload error with multi-threaded server, added some NULL checks to file-handling.

pull/183/head
Király Péter 6 years ago
parent 7ed8516344
commit c988b78e5f

@ -426,8 +426,10 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
task->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; task->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE;
if(task->fileHandle){
FileSystem_closeFile(task->fileHandle); FileSystem_closeFile(task->fileHandle);
task->fileHandle = NULL; task->fileHandle = NULL;
}
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename); deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
} }
} }
@ -443,6 +445,7 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
mmsClient_createFileReadRequest(task->lastRequestInvokeId, request, task->frmsId); mmsClient_createFileReadRequest(task->lastRequestInvokeId, request, task->frmsId);
task->state = MMS_FILE_UPLOAD_STATE_FILE_READ_SENT;
IsoConnection_sendMessage(task->connection->isoConnection, request); IsoConnection_sendMessage(task->connection->isoConnection, request);
MmsServer_releaseTransmitBuffer(self); MmsServer_releaseTransmitBuffer(self);
@ -450,8 +453,6 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
IsoConnection_unlock(task->connection->isoConnection); IsoConnection_unlock(task->connection->isoConnection);
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */ task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
task->state = MMS_FILE_UPLOAD_STATE_FILE_READ_SENT;
} }
break; break;
@ -465,8 +466,10 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
task->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; task->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE;
if(task->fileHandle){
FileSystem_closeFile(task->fileHandle); FileSystem_closeFile(task->fileHandle);
task->fileHandle = NULL; task->fileHandle = NULL;
}
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename); deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
} }
@ -482,6 +485,8 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
mmsClient_createFileCloseRequest(task->lastRequestInvokeId, request, task->frmsId); mmsClient_createFileCloseRequest(task->lastRequestInvokeId, request, task->frmsId);
task->state = MMS_FILE_UPLOAD_STATE_FILE_CLOSE_SENT;
IsoConnection_sendMessage(task->connection->isoConnection, request); IsoConnection_sendMessage(task->connection->isoConnection, request);
MmsServer_releaseTransmitBuffer(self); MmsServer_releaseTransmitBuffer(self);
@ -490,7 +495,6 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */ task->nextTimeout = Hal_getTimeInMs() + 2000; /* timeout 2000 ms */
task->state = MMS_FILE_UPLOAD_STATE_FILE_CLOSE_SENT;
} }
break; break;
@ -527,8 +531,10 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
IsoConnection_unlock(task->connection->isoConnection); IsoConnection_unlock(task->connection->isoConnection);
if(task->fileHandle){
FileSystem_closeFile(task->fileHandle); FileSystem_closeFile(task->fileHandle);
task->fileHandle = NULL; task->fileHandle = NULL;
}
deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename); deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename);
if (DEBUG_MMS_SERVER) if (DEBUG_MMS_SERVER)
@ -578,6 +584,8 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
createObtainFileResponse(task->obtainFileRequestInvokeId, response); createObtainFileResponse(task->obtainFileRequestInvokeId, response);
task->state = MMS_FILE_UPLOAD_STATE_NOT_USED;
IsoConnection_sendMessage(task->connection->isoConnection, response); IsoConnection_sendMessage(task->connection->isoConnection, response);
MmsServer_releaseTransmitBuffer(self); MmsServer_releaseTransmitBuffer(self);
@ -586,8 +594,6 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
if (self->getFileCompleteHandler) if (self->getFileCompleteHandler)
self->getFileCompleteHandler(self->getFileCompleteHandlerParameter, task->connection, task->destinationFilename); self->getFileCompleteHandler(self->getFileCompleteHandlerParameter, task->connection, task->destinationFilename);
task->state = MMS_FILE_UPLOAD_STATE_NOT_USED;
} }
break; break;
case MMS_FILE_UPLOAD_STATE_INTERRUPTED: case MMS_FILE_UPLOAD_STATE_INTERRUPTED:

@ -464,9 +464,14 @@ mmsFileReadHandler(uint32_t invokeId, void* parameter, MmsError mmsError, int32_
if (mmsError == MMS_ERROR_NONE) { if (mmsError == MMS_ERROR_NONE) {
if (DEBUG_MMS_SERVER) if (DEBUG_MMS_SERVER)
printf("MMS_SERVER: file %i received %i bytes\n", task->frmsId, bytesReceived); printf("MMS_SERVER: file %i received %i bytes\n", task->frmsId, bytesReceived);
if(task->fileHandle){
FileSystem_writeFile(task->fileHandle, buffer, bytesReceived); FileSystem_writeFile(task->fileHandle, buffer, bytesReceived);
} }
else{
if (DEBUG_MMS_SERVER)
printf("MMS_SERVER: problem reading file %i file already closed\n", task->frmsId);
}
}
else { else {
if (DEBUG_MMS_SERVER) if (DEBUG_MMS_SERVER)
printf("MMS_SERVER: problem reading file %i (error code: %i)\n", task->frmsId, mmsError); printf("MMS_SERVER: problem reading file %i (error code: %i)\n", task->frmsId, mmsError);

Loading…
Cancel
Save