From ecaed5ec94745b236b2432265f4eadb44830ddb2 Mon Sep 17 00:00:00 2001 From: Sterling Jensen Date: Thu, 12 May 2016 20:22:35 -0500 Subject: [PATCH] Fix leak caused by undestroyed pthread mutex --- lib/context.c | 1 + lib/private-libwebsockets.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/context.c b/lib/context.c index c75ad50c..6a25e276 100644 --- a/lib/context.c +++ b/lib/context.c @@ -850,6 +850,7 @@ lws_context_destroy(struct lws_context *context) /* no protocol close */); n--; } + lws_pt_mutex_destroy(pt); } /* * give all extensions a chance to clean up any per-context diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 53c753ef..87dc30b5 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -1616,6 +1616,13 @@ lws_pt_mutex_init(struct lws_context_per_thread *pt) { pthread_mutex_init(&pt->lock, NULL); } + +static LWS_INLINE void +lws_pt_mutex_destroy(struct lws_context_per_thread *pt) +{ + pthread_mutex_destroy(&pt->lock); +} + static LWS_INLINE void lws_pt_lock(struct lws_context_per_thread *pt) { @@ -1629,6 +1636,7 @@ lws_pt_unlock(struct lws_context_per_thread *pt) } #else #define lws_pt_mutex_init(_a) (void)(_a) +#define lws_pt_mutex_destroy(_a) (void)(_a) #define lws_pt_lock(_a) (void)(_a) #define lws_pt_unlock(_a) (void)(_a) #endif