diff --git a/src/iec61850/server/impl/ied_server.c b/src/iec61850/server/impl/ied_server.c index d7f622db..d377dc11 100644 --- a/src/iec61850/server/impl/ied_server.c +++ b/src/iec61850/server/impl/ied_server.c @@ -524,16 +524,6 @@ IedServer_destroy(IedServer self) #if ((CONFIG_MMS_SINGLE_THREADED == 1) && (CONFIG_MMS_THREADLESS_STACK == 0)) - /* trigger stopping background task thread */ - if (self->mmsMapping->reportThreadRunning) { - self->mmsMapping->reportThreadRunning = false; - - /* waiting for thread to finish */ - while (self->mmsMapping->reportThreadFinished == false) { - Thread_sleep(10); - } - } - if (self->serverThread) Thread_destroy(self->serverThread); @@ -599,8 +589,6 @@ singleThreadedServerThread(void* parameter) if (DEBUG_IED_SERVER) printf("IED_SERVER: server thread finished!\n"); - - mmsMapping->reportThreadFinished = true; } #endif /* (CONFIG_MMS_SINGLE_THREADED == 1) */ #endif /* (CONFIG_MMS_THREADLESS_STACK != 1) */ @@ -614,7 +602,6 @@ IedServer_start(IedServer self, int tcpPort) #if (CONFIG_MMS_SINGLE_THREADED == 1) MmsServer_startListeningThreadless(self->mmsServer, tcpPort); - self->mmsMapping->reportThreadFinished = false; self->mmsMapping->reportThreadRunning = true; self->serverThread = Thread_create((ThreadExecutionFunction) singleThreadedServerThread, (void*) self, false); diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index 2663bcbc..3edef738 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -3076,9 +3076,10 @@ MmsMapping_stopEventWorkerThread(MmsMapping* self) self->reportThreadRunning = false; - Thread_destroy(self->reportWorkerThread); - - self->reportWorkerThread = NULL; + if (self->reportWorkerThread) { + Thread_destroy(self->reportWorkerThread); + self->reportWorkerThread = NULL; + } } } #endif /* (CONFIG_MMS_THREADLESS_STACK != 1) */