diff --git a/src/mms/inc_private/mms_server_internal.h b/src/mms/inc_private/mms_server_internal.h index 2aa37585..df4d9818 100644 --- a/src/mms/inc_private/mms_server_internal.h +++ b/src/mms/inc_private/mms_server_internal.h @@ -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); diff --git a/src/mms/iso_mms/server/mms_file_service.c b/src/mms/iso_mms/server/mms_file_service.c index 288512b7..a0fd2d30 100644 --- a/src/mms/iso_mms/server/mms_file_service.c +++ b/src/mms/iso_mms/server/mms_file_service.c @@ -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, diff --git a/src/mms/iso_mms/server/mms_server_connection.c b/src/mms/iso_mms/server/mms_server_connection.c index 959db201..0832574f 100644 --- a/src/mms/iso_mms/server/mms_server_connection.c +++ b/src/mms/iso_mms/server/mms_server_connection.c @@ -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)