lws-vhost-destroy
[platform/upstream/libwebsockets.git] / lib / libwebsockets.c
index 88f283a..9cd34ee 100755 (executable)
@@ -243,9 +243,8 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason)
        }
 #endif
 
-       if (wsi->u.hdr.ah)
-               /* we're closing, losing some rx is OK */
-               wsi->u.hdr.ah->rxpos = wsi->u.hdr.ah->rxlen;
+       /* we're closing, losing some rx is OK */
+       lws_header_table_force_to_detachable_state(wsi);
 
        context = wsi->context;
        pt = &context->pt[(int)wsi->tsi];
@@ -685,6 +684,10 @@ async_close:
 
 #ifdef LWS_USE_LIBUV
        if (LWS_LIBUV_ENABLED(context)) {
+               if (wsi->listener) {
+                       lwsl_debug("%s: stopping listner libuv poll\n", __func__);
+                       uv_poll_stop(&wsi->w_read.uv_watcher);
+               }
                lwsl_debug("%s: lws_libuv_closehandle: wsi %p\n", __func__, wsi);
                /* libuv has to do his own close handle processing asynchronously */
                lws_libuv_closehandle(wsi);
@@ -2244,7 +2247,7 @@ lws_snprintf(char *str, size_t size, const char *format, ...)
        n = vsnprintf(str, size, format, ap);
        va_end(ap);
 
-       if (n >= size)
+       if (n >= (int)size)
                return size;
 
        return n;
@@ -2552,7 +2555,7 @@ lws_cgi(struct lws *wsi, const char * const *exec_array, int script_uri_path_len
         * Actually having made the env, as a cgi we don't need the ah
         * any more
         */
-       if (wsi->u.hdr.ah->rxpos == wsi->u.hdr.ah->rxlen)
+       if (lws_header_table_is_in_detachable_state(wsi))
                lws_header_table_detach(wsi, 0);
 
        /* we are ready with the redirection pipes... run the thing */
@@ -2771,7 +2774,7 @@ lws_cgi_write_split_stdout_headers(struct lws *wsi)
                                                wsi->cgi->l[wsi->cgi->lp] = '\0';
                                                switch (n) {
                                                case SIGNIFICANT_HDR_CONTENT_LENGTH:
-                                                       wsi->cgi->content_length = atol(wsi->cgi->l);
+                                                       wsi->cgi->content_length = atoll(wsi->cgi->l);
                                                        break;
                                                case SIGNIFICANT_HDR_STATUS:
                                                        wsi->cgi->response_code = atol(wsi->cgi->l);
@@ -2839,7 +2842,7 @@ lws_cgi_write_split_stdout_headers(struct lws *wsi)
                        case LCHS_SINGLE_0A:
                                m = wsi->hdr_state;
                                if (c == '\x0a') {
-                                       lwsl_debug("Content-Length: %ld\n", wsi->cgi->content_length);
+                                       lwsl_debug("Content-Length: %lld\n", (unsigned long long)wsi->cgi->content_length);
                                        wsi->hdr_state = LHCS_RESPONSE;
                                        /* drop the \0xa ... finalize will add it if needed */
                                        break;
@@ -2989,8 +2992,8 @@ lws_cgi_kill_terminated(struct lws_context_per_thread *pt)
                                continue;
 
                        if (cgi->content_length) {
-                               lwsl_debug("%s: wsi %p: expected content length seen: %ld\n",
-                                       __func__, cgi->wsi, cgi->content_length_seen);
+                               lwsl_debug("%s: wsi %p: expected content length seen: %lld\n",
+                                       __func__, cgi->wsi, (unsigned long long)cgi->content_length_seen);
                        }
 
                        /* reap it */
@@ -3059,8 +3062,8 @@ lws_cgi_kill_terminated(struct lws_context_per_thread *pt)
                        continue;
 
                if (cgi->content_length)
-                       lwsl_debug("%s: wsi %p: expected content length seen: %ld\n",
-                               __func__, cgi->wsi, cgi->content_length_seen);
+                       lwsl_debug("%s: wsi %p: expected content length seen: %lld\n",
+                               __func__, cgi->wsi, (unsigned long long)cgi->content_length_seen);
 
                /* reap it */
                if (waitpid(cgi->pid, &status, WNOHANG) > 0) {
@@ -3470,7 +3473,8 @@ lws_stats_log_dump(struct lws_context *context)
 #endif
 
        while (v) {
-               if (v->use_ssl && v->lserv_wsi) {
+               if (v->lserv_wsi) {
+
                        struct lws_context_per_thread *pt = &context->pt[(int)v->lserv_wsi->tsi];
                        struct lws_pollfd *pfd;