context only destroy protocols if init got sent
authorAndy Green <andy@warmcat.com>
Sun, 8 May 2016 09:10:51 +0000 (17:10 +0800)
committerAndy Green <andy@warmcat.com>
Sun, 8 May 2016 09:10:51 +0000 (17:10 +0800)
If for some reason we exit before the protocol init action
(which is delayed for libuv) we should not send the protocol
destroy messages

Signed-off-by: Andy Green <andy@warmcat.com>
lib/context.c

index 8c0a69b..83be24b 100644 (file)
@@ -703,7 +703,7 @@ lws_context_destroy(struct lws_context *context)
 {
        const struct lws_protocols *protocol = NULL;
        struct lws_context_per_thread *pt;
-       struct lws_vhost *vh, *vh1;
+       struct lws_vhost *vh = NULL, *vh1;
        struct lws wsi;
        int n, m;
 
@@ -754,7 +754,8 @@ lws_context_destroy(struct lws_context *context)
         *
         * We can't free things until after the event loop shuts down.
         */
-       vh = context->vhost_list;
+       if (context->protocol_init_done)
+               vh = context->vhost_list;
        while (vh) {
                wsi.vhost = vh;
                protocol = vh->protocols;