Fix leak caused by undestroyed pthread mutex
authorSterling Jensen <sjj@sterlingjensen.com>
Fri, 13 May 2016 01:22:35 +0000 (20:22 -0500)
committerAndy Green <andy@warmcat.com>
Fri, 13 May 2016 01:42:58 +0000 (09:42 +0800)
lib/context.c
lib/private-libwebsockets.h

index ac7d7d8..b3f7c4c 100644 (file)
@@ -738,6 +738,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
index 4ed0895..23ec9e3 100644 (file)
@@ -1613,6 +1613,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)
 {
@@ -1626,6 +1633,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