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

pull/179/head
Michael Zillgith 6 years ago
parent 236a773365
commit cba8bf5714

@ -361,6 +361,9 @@ mmsServer_handleObtainFileRequest(
uint32_t invokeId,
ByteBuffer* response);
LIB61850_INTERNAL void
mmsServerConnection_stopFileUploadTasks(MmsServerConnection self);
LIB61850_INTERNAL bool
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
mmsServer_handleObtainFileRequest(
MmsServerConnection connection,

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

Loading…
Cancel
Save