MMS server: fixed memory access problem when client unexpectedly closed connection during file upload (set-file)

v1.3
Michael Zillgith 6 years ago
parent b2b4627579
commit dbdcd33e61

@ -361,6 +361,8 @@ mmsServer_handleObtainFileRequest(
uint32_t invokeId, uint32_t invokeId,
ByteBuffer* response); ByteBuffer* response);
void
mmsServerConnection_stopFileUploadTasks(MmsServerConnection self);
bool bool
mmsServer_isIndexAccess(AlternateAccess_t* alternateAccess); mmsServer_isIndexAccess(AlternateAccess_t* alternateAccess);

@ -588,6 +588,33 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task)
} }
} }
#if (MMS_OBTAIN_FILE_SERVICE == 1)
void
mmsServerConnection_stopFileUploadTasks(MmsServerConnection self)
{
MmsServer server = self->server;
int i;
for (i = 0; i < CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS; i++) {
if (server->fileUploadTasks[i].state != 0) {
if (server->fileUploadTasks[i].connection == self) {
/* stop file upload task */
FileSystem_closeFile(server->fileUploadTasks[i].fileHandle);
deleteFile(MmsServerConnection_getFilesystemBasepath(self), server->fileUploadTasks[i].destinationFilename);
server->fileUploadTasks[i].state = 0;
}
}
}
}
#endif /*(MMS_OBTAIN_FILE_SERVICE == 1) */
void void
mmsServer_handleObtainFileRequest( mmsServer_handleObtainFileRequest(
MmsServerConnection connection, MmsServerConnection connection,

@ -733,6 +733,8 @@ MmsServerConnection_destroy(MmsServerConnection self)
for (frsmIndex = 0; frsmIndex < CONFIG_MMS_MAX_NUMBER_OF_OPEN_FILES_PER_CONNECTION; frsmIndex++) for (frsmIndex = 0; frsmIndex < CONFIG_MMS_MAX_NUMBER_OF_OPEN_FILES_PER_CONNECTION; frsmIndex++)
if (self->frsms[frsmIndex].fileHandle != NULL) if (self->frsms[frsmIndex].fileHandle != NULL)
FileSystem_closeFile(self->frsms[frsmIndex].fileHandle); FileSystem_closeFile(self->frsms[frsmIndex].fileHandle);
mmsServerConnection_stopFileUploadTasks(self);
#endif #endif
#if (MMS_DYNAMIC_DATA_SETS == 1) #if (MMS_DYNAMIC_DATA_SETS == 1)

Loading…
Cancel
Save