diff --git a/src/iec61850/inc_private/ied_server_private.h b/src/iec61850/inc_private/ied_server_private.h index 43ffb56c..e51a48ed 100644 --- a/src/iec61850/inc_private/ied_server_private.h +++ b/src/iec61850/inc_private/ied_server_private.h @@ -95,6 +95,9 @@ private_IedServer_getClientConnectionByHandle(IedServer self, void* serverConnec LIB61850_INTERNAL ClientConnection private_ClientConnection_create(void* serverConnectionHandle); +LIB61850_INTERNAL void +private_ClientConnection_invalidate(ClientConnection self); + LIB61850_INTERNAL int private_ClientConnection_getTasksCount(ClientConnection self); diff --git a/src/iec61850/server/impl/client_connection.c b/src/iec61850/server/impl/client_connection.c index d8a76a21..e8a6e2de 100644 --- a/src/iec61850/server/impl/client_connection.c +++ b/src/iec61850/server/impl/client_connection.c @@ -57,6 +57,20 @@ struct sClientConnection #endif /* _TLS_OWN_CNT_SEM */ }; +void +private_ClientConnection_invalidate(ClientConnection self) +{ +#if (CONFIG_MMS_THREADLESS_STACK != 1) + Semaphore_wait(self->accessMutex); +#endif + + self->serverConnectionHandle = NULL; + +#if (CONFIG_MMS_THREADLESS_STACK != 1) + Semaphore_post(self->accessMutex); +#endif +} + ClientConnection private_ClientConnection_create(void* serverConnectionHandle) { diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 7e09ed28..e5e6b034 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -3354,6 +3354,8 @@ mmsConnectionHandler(void* parameter, MmsServerConnection connection, MmsServerE unselectAllSettingGroups(self, connection); #endif + private_ClientConnection_invalidate(clientConnection); + ClientConnection_release(clientConnection); } else if (event == MMS_SERVER_NEW_CONNECTION) { diff --git a/src/mms/iso_mms/server/mms_server_connection.c b/src/mms/iso_mms/server/mms_server_connection.c index d8c1b657..644fcdb1 100644 --- a/src/mms/iso_mms/server/mms_server_connection.c +++ b/src/mms/iso_mms/server/mms_server_connection.c @@ -818,7 +818,6 @@ MmsServerConnection_init(MmsServerConnection connection, MmsServer server, IsoCo void MmsServerConnection_destroy(MmsServerConnection self) { - #if (MMS_FILE_SERVICE == 1) int frsmIndex = 0;