gzip fixes

This commit is contained in:
Per Bothner 2017-02-14 09:44:57 +08:00 committed by Andy Green
parent 1d393aba9e
commit baa0f74bf2

View file

@ -2148,13 +2148,13 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
int ranges;
#endif
if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING))
if (strstr("gzip", lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING)) &&
strstr("deflate", lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING))) {
lwsl_debug("client indicates GZIP is acceptable\n");
fflags |= LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP;
}
if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING)) {
char *accept = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING);
if (strstr(accept, "gzip") && strstr(accept, "deflate")) {
lwsl_debug("client indicates GZIP is acceptable\n");
fflags |= LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP;
}
}
wsi->u.http.fd = lws_plat_file_open(wsi, file, &wsi->u.http.filelen,
&fflags);
@ -2165,16 +2165,6 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
}
computed_total_content_length = wsi->u.http.filelen;
if ((fflags & (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP |
LWS_FOP_FLAG_COMPR_IS_GZIP)) ==
(LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | LWS_FOP_FLAG_COMPR_IS_GZIP)) {
if (lws_add_http_header_by_token(wsi,
WSI_TOKEN_HTTP_CONTENT_ENCODING,
(unsigned char *)"gzip, deflate", 13, &p, end))
return -1;
lwsl_debug("file is being provided in gzip\n");
}
#if defined(LWS_WITH_RANGES)
ranges = lws_ranges_init(wsi, rp, wsi->u.http.filelen);
@ -2201,6 +2191,16 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type,
if (lws_add_http_header_status(wsi, n, &p, end))
return -1;
if ((fflags & (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP |
LWS_FOP_FLAG_COMPR_IS_GZIP)) ==
(LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | LWS_FOP_FLAG_COMPR_IS_GZIP)) {
if (lws_add_http_header_by_token(wsi,
WSI_TOKEN_HTTP_CONTENT_ENCODING,
(unsigned char *)"gzip", 4, &p, end))
return -1;
lwsl_debug("file is being provided in gzip\n");
}
#if defined(LWS_WITH_RANGES)
if (ranges < 2 && content_type && content_type[0])
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,