- IedServer: fixed potential deadlock when IedServer_stop is directly called after IedServer_start

pull/179/head
Michael Zillgith 7 years ago
parent 287769dcba
commit f2c811c7c7

@ -746,6 +746,15 @@ namespace IEC61850
flagOptFlds = true;
}
/// <summary>
/// Check if the report control block has the "ResvTms" attribute.
/// </summary>
/// <returns><c>true</c>, if ResvTms is available, <c>false</c> otherwise.</returns>
public bool HasResvTms()
{
return ClientReportControlBlock_hasResvTms(self);
}
/// <summary>
/// Gets the ResvTms (reservation time) value
/// </summary>
@ -759,7 +768,7 @@ namespace IEC61850
/// <returns>The reservation time</returns>
public Int16 GetResvTms()
{
return ClientReportControlBlock_getResvTms (self);
return ClientReportControlBlock_getResvTms(self);
}
/// <summary>
@ -768,7 +777,7 @@ namespace IEC61850
/// <param name="resvTms">the reservation time value</param>
public void SetResvTms(Int16 resvTms)
{
ClientReportControlBlock_setResvTms (self, resvTms);
ClientReportControlBlock_setResvTms(self, resvTms);
flagResvTms = true;
}

@ -567,9 +567,6 @@ singleThreadedServerThread(void* parameter)
bool running = true;
mmsMapping->reportThreadFinished = false;
mmsMapping->reportThreadRunning = true;
if (DEBUG_IED_SERVER)
printf("IED_SERVER: server thread started!\n");
@ -602,6 +599,9 @@ 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);
Thread_start(self->serverThread);

Loading…
Cancel
Save