Skip to content

Commit

Permalink
- IEC 61850 server: wait for background thread termination before dat…
Browse files Browse the repository at this point in the history
…a model is released
  • Loading branch information
mzillgith committed Mar 28, 2020
1 parent 0d4930a commit f4957cf
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 9 deletions.
1 change: 0 additions & 1 deletion src/iec61850/inc_private/mms_mapping_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ struct sMmsMapping {

#if (CONFIG_MMS_THREADLESS_STACK != 1)
bool reportThreadRunning;
bool reportThreadFinished;
Thread reportWorkerThread;
#endif

Expand Down
10 changes: 4 additions & 6 deletions src/iec61850/server/mms_mapping/mms_mapping.c
Original file line number Diff line number Diff line change
Expand Up @@ -1352,7 +1352,7 @@ MmsMapping_destroy(MmsMapping* self)
{

#if (CONFIG_MMS_THREADLESS_STACK != 1)
if (self->reportWorkerThread != NULL) {
if (self->reportWorkerThread) {
self->reportThreadRunning = false;
Thread_destroy(self->reportWorkerThread);
}
Expand Down Expand Up @@ -3045,7 +3045,6 @@ static void
eventWorkerThread(MmsMapping* self)
{
bool running = true;
self->reportThreadFinished = false;

while (running) {

Expand All @@ -3058,8 +3057,6 @@ eventWorkerThread(MmsMapping* self)

if (DEBUG_IED_SERVER)
printf("IED_SERVER: event worker thread finished!\n");

self->reportThreadFinished = true;
}

void
Expand All @@ -3079,8 +3076,9 @@ MmsMapping_stopEventWorkerThread(MmsMapping* self)

self->reportThreadRunning = false;

while (self->reportThreadFinished == false)
Thread_sleep(1);
Thread_destroy(self->reportWorkerThread);

self->reportWorkerThread = NULL;
}
}
#endif /* (CONFIG_MMS_THREADLESS_STACK != 1) */
Expand Down
2 changes: 0 additions & 2 deletions src/mms/iso_mms/server/mms_named_variable_list_service.c
Original file line number Diff line number Diff line change
Expand Up @@ -712,8 +712,6 @@ mmsServer_handleGetNamedVariableListAttributesRequest(

if (variableList != NULL) {

int bufSize = ByteBuffer_getSize(response);

if (createGetNamedVariableListAttributesResponse(invokeId, response, variableList) == false) {

/* encoding failed - probably because buffer size is too small for message */
Expand Down

0 comments on commit f4957cf

Please sign in to comment.