From 1eb4ac4b41e10ee56fa845f1f6e7df8a79242334 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sat, 16 Jun 2018 13:23:06 +0800 Subject: [PATCH] LWS_ILLEGAL_HTTP_CONTENT_LEN implies connection:close If no content-length is coming, we just can't do http/1.1 keep-alive. --- lib/core/context.c | 2 +- lib/roles/http/header.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/core/context.c b/lib/core/context.c index 029313b35..c4acac573 100644 --- a/lib/core/context.c +++ b/lib/core/context.c @@ -1024,7 +1024,7 @@ lws_create_vhost(struct lws_context *context, return vh; bail1: - lws_vhost_destroy(vh, NULL, NULL); + lws_vhost_destroy(vh); return NULL; diff --git a/lib/roles/http/header.c b/lib/roles/http/header.c index 85921c7e6..2f020f153 100644 --- a/lib/roles/http/header.c +++ b/lib/roles/http/header.c @@ -149,9 +149,17 @@ lws_add_http_common_headers(struct lws *wsi, unsigned int code, (int)strlen(content_type), p, end)) return 1; - if (content_len != LWS_ILLEGAL_HTTP_CONTENT_LEN && - lws_add_http_header_content_length(wsi, content_len, p, end)) - return 1; + if (content_len != LWS_ILLEGAL_HTTP_CONTENT_LEN) { + if (lws_add_http_header_content_length(wsi, content_len, p, end)) + return 1; + } else { + if (lws_add_http_header_by_token(wsi, WSI_TOKEN_CONNECTION, + (unsigned char *)"close", 5, + p, end)) + return 1; + + wsi->http.connection_type = HTTP_CONNECTION_CLOSE; + } return 0; }