- IED server: fixed - possible deadlock when IedServer_lockDataModel is used from multiple threads (LIB61850-352)

pull/410/head
Michael Zillgith 3 years ago
parent 7c06680cba
commit 219111eef1

@ -811,10 +811,10 @@ IedServer_stopThreadless(IedServer self)
void void
IedServer_lockDataModel(IedServer self) IedServer_lockDataModel(IedServer self)
{ {
Semaphore_wait(self->mmsMapping->isModelLockedMutex);
MmsServer_lockModel(self->mmsServer); MmsServer_lockModel(self->mmsServer);
Semaphore_wait(self->mmsMapping->isModelLockedMutex);
self->mmsMapping->isModelLocked = true; self->mmsMapping->isModelLocked = true;
Semaphore_post(self->mmsMapping->isModelLockedMutex); Semaphore_post(self->mmsMapping->isModelLockedMutex);
@ -833,10 +833,10 @@ IedServer_unlockDataModel(IedServer self)
Semaphore_wait(self->mmsMapping->isModelLockedMutex); Semaphore_wait(self->mmsMapping->isModelLockedMutex);
self->mmsMapping->isModelLocked = false;
MmsServer_unlockModel(self->mmsServer); MmsServer_unlockModel(self->mmsServer);
self->mmsMapping->isModelLocked = false;
Semaphore_post(self->mmsMapping->isModelLockedMutex); Semaphore_post(self->mmsMapping->isModelLockedMutex);
} }

Loading…
Cancel
Save