]> git.seodisparate.com - UDPConnection/commitdiff
Use locks on check_events for threaded case
authorStephen Seo <seo.disparate@gmail.com>
Mon, 4 Mar 2019 02:40:34 +0000 (11:40 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 4 Mar 2019 02:40:34 +0000 (11:40 +0900)
src/UDPConnection.c

index 34ac07909d20efecca750ec20029ecb58ed5e13b..3448aa2972cf0c95b8366d93116b98ff8b55ff92 100644 (file)
@@ -225,7 +225,11 @@ void UDPC_set_callback_received(
 
 void UDPC_check_events(UDPC_Context *ctx)
 {
-    // TODO use a lock on receivedPackets
+    if((ctx->flags & 0x1) != 0)
+    {
+        mtx_lock(&ctx->tCVMtx);
+    }
+
     if(ctx->callbackConnected)
     {
         for(int x = 0; x * 4 < ctx->connectedEvents->size; ++x)
@@ -278,6 +282,11 @@ void UDPC_check_events(UDPC_Context *ctx)
         }
         UDPC_Deque_clear(ctx->receivedPackets);
     }
+
+    if((ctx->flags & 0x1) != 0)
+    {
+        mtx_unlock(&ctx->tCVMtx);
+    }
 }
 
 int UDPC_queue_send(UDPC_Context *ctx, uint32_t addr, uint32_t isChecked, void *data, uint32_t size)