diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs index 385b09ca..a3259fa4 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs @@ -23,7 +23,7 @@ namespace PepperDash.Essentials /// /// Prevents post operations from stomping on each other and getting lost /// - CMutex PostLock = new CMutex(); + CEvent PostLockEvent = new CEvent(true, true); CotijaConfig Config; @@ -211,12 +211,14 @@ namespace PepperDash.Essentials /// object to be serialized and sent in post body public void PostToServer(EssentialsRoomBase room, JObject o) { - var go = PostLock.WaitForMutex(2000); - if (!go) + var ready = PostLockEvent.Wait(2000); + if (!ready) { - Debug.Console(0, this, "Mutex not released after 2 seconds. Skipping message"); + Debug.Console(1, this, "PostToServer failed to enter after 2 seconds. Ignoring"); return; } + + PostLockEvent.Reset(); try { if (Client == null || NeedNewClient) @@ -242,20 +244,23 @@ namespace PepperDash.Essentials Debug.Console(1, this, "POST result: {0}", err); if (err == HTTP_CALLBACK_ERROR.COMPLETED) + { Debug.Console(1, this, "Status Response Code: {0}", r.Code); + PostLockEvent.Set(); + } else { // Try again. This client is hosed. NeedNewClient = true; + PostLockEvent.Set(); PostToServer(room, o); } - PostLock.ReleaseMutex(); }); } catch(Exception e) { Debug.Console(1, this, "Error Posting to Server: {0}", e); - PostLock.ReleaseMutex(); + PostLockEvent.Set(); } } diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index 887f8efa..fb23a39f 100644 Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll index 02f9ae37..29f8579a 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ