From: Andy Green Date: Tue, 6 Jun 2017 23:57:19 +0000 (+0800) Subject: large files: convert content-length to use lws_filepos_t X-Git-Tag: accepted/tizen/4.0/unified/20171012.191640~87 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Flibwebsockets.git;a=commitdiff_plain;h=02638f6758d5635f32596aa1a6b08241289c6333 large files: convert content-length to use lws_filepos_t --- diff --git a/lib/client.c b/lib/client.c index 4b643ac..5a57d18 100755 --- a/lib/client.c +++ b/lib/client.c @@ -786,8 +786,8 @@ lws_client_interpret_server_handshake(struct lws *wsi) wsi->u.http.content_length = atoi(lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_CONTENT_LENGTH)); - lwsl_notice("%s: incoming content length %d\n", __func__, - wsi->u.http.content_length); + lwsl_notice("%s: incoming content length %llu\n", __func__, + (unsigned long long)wsi->u.http.content_length); wsi->u.http.content_remain = wsi->u.http.content_length; } else /* can't do 1.1 without a content length or chunked */ if (!wsi->chunked) diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 88f283a..daa3af8 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -2771,7 +2771,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 +2839,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 +2989,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 +3059,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) { diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 993f6e1..ea6fcb5 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -1253,8 +1253,8 @@ struct _lws_http_mode_related { enum http_version request_version; enum http_connection_type connection_type; - unsigned int content_length; - unsigned int content_remain; + lws_filepos_t content_length; + lws_filepos_t content_remain; }; #ifdef LWS_USE_HTTP2 @@ -1469,8 +1469,8 @@ struct lws_cgi { unsigned char *headers_pos; unsigned char *headers_dumped; unsigned char *headers_end; - unsigned long content_length; - unsigned long content_length_seen; + lws_filepos_t content_length; + lws_filepos_t content_length_seen; int pipe_fds[3][2]; int match[SIGNIFICANT_HDR_COUNT]; int pid; diff --git a/lib/server.c b/lib/server.c index a84f661..3430a61 100644 --- a/lib/server.c +++ b/lib/server.c @@ -742,7 +742,7 @@ lws_http_action(struct lws *wsi) lws_hdr_copy(wsi, content_length_str, sizeof(content_length_str) - 1, WSI_TOKEN_HTTP_CONTENT_LENGTH); - wsi->u.http.content_length = atoi(content_length_str); + wsi->u.http.content_length = atoll(content_length_str); } if (wsi->http2_substream) { @@ -2366,7 +2366,7 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, unsigned char *response = pt->serv_buf + LWS_PRE; unsigned char *p = response; unsigned char *end = p + context->pt_serv_buf_size - LWS_PRE; - unsigned long computed_total_content_length; + lws_filepos_t computed_total_content_length; int ret = 0, cclen = 8, n = HTTP_STATUS_OK; lws_fop_flags_t fflags = LWS_O_RDONLY; #if defined(LWS_WITH_RANGES) @@ -2463,7 +2463,7 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, * Precompute it for the main response header */ - computed_total_content_length = (unsigned long)rp->agg + + computed_total_content_length = (lws_filepos_t)rp->agg + 6 /* final _lws\r\n */; lws_ranges_reset(rp); @@ -2484,7 +2484,7 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, } if (ranges == 1) { - computed_total_content_length = (unsigned long)rp->agg; + computed_total_content_length = (lws_filepos_t)rp->agg; n = lws_snprintf(cache_control, sizeof(cache_control), "bytes %llu-%llu/%llu", rp->start, rp->end, rp->extent);