void UDPC_destroy(UDPC_Context *ctx)
{
+ if(ctx->isThreaded != 0)
+ {
+ mtx_lock(&ctx->tflagsMtx);
+ ctx->threadFlags |= 0x1;
+ mtx_unlock(&ctx->tflagsMtx);
+ cnd_broadcast(&ctx->threadCV);
+
+ thrd_join(ctx->threadHandle, NULL);
+
+ mtx_destroy(&ctx->tCVMtx);
+ mtx_destroy(&ctx->tflagsMtx);
+ cnd_destroy(&ctx->threadCV);
+ }
+
CleanupSocket(ctx->socketHandle);
UDPC_HashMap_itercall(ctx->conMap, UDPC_INTERNAL_destroy_conMap, NULL);
UDPC_HashMap_destroy(ctx->conMap);
}
UDPC_Deque_destroy(ctx->receivedPackets);
- if(ctx->isThreaded != 0)
- {
- mtx_lock(&ctx->tflagsMtx);
- ctx->threadFlags |= 0x1;
- mtx_unlock(&ctx->tflagsMtx);
- cnd_broadcast(&ctx->threadCV);
-
- thrd_join(ctx->threadHandle, NULL);
-
- mtx_destroy(&ctx->tCVMtx);
- mtx_destroy(&ctx->tflagsMtx);
- cnd_destroy(&ctx->threadCV);
- }
-
free(ctx);
}