From ee1bdd5a036117e9d038ee6338f206fc9294d523 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 23 Aug 2017 11:37:48 +0200 Subject: [PATCH] OPTIM: lua: don't add "Connection: close" on the response Haproxy doesn't need this anymore, we're wasting cycles checking for a Connection header in order to add "Connection: close" only in the 1.1 case so that haproxy sees it and removes it. All tests were run in 1.0 and 1.1, with/without the request header, and in the various keep-alive/close modes, with/without compression, and everything works fine. It's worth noting that this header was inherited from the stats applet and that the same cleanup probably ought to be done there as well. --- src/hlua.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/hlua.c b/src/hlua.c index 503675bad..6f941f4ba 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -4200,7 +4200,6 @@ __LJMP static int hlua_applet_http_start_response(lua_State *L) const char *value; size_t value_len; int id; - int hdr_connection = 0; long long hdr_contentlength = -1; int hdr_chunked = 0; const char *reason = appctx->appctx->ctx.hlua_apphttp.reason; @@ -4283,10 +4282,6 @@ __LJMP static int hlua_applet_http_start_response(lua_State *L) /* Protocol checks. */ - /* Check if the header conneciton is present. */ - if (name_len == 10 && strcasecmp("connection", name) == 0) - hdr_connection = 1; - /* Copy the header content length. The length conversion * is done without control. If it contains a bad value, * the content-length remains negative so that we can @@ -4309,18 +4304,6 @@ __LJMP static int hlua_applet_http_start_response(lua_State *L) lua_pop(L, 1); } - /* If the http protocol version is 1.1, we expect an header "connection" set - * to "close" to be HAProxy/keeplive compliant. Otherwise, we expect nothing. - * If the header conneciton is present, don't change it, if it is not present, - * we must set. - * - * we set a "connection: close" header for ensuring that the keepalive will be - * respected by haproxy. HAProcy considers that the application cloe the connection - * and it keep the connection from the client open. - */ - if (appctx->appctx->ctx.hlua_apphttp.flags & APPLET_HTTP11 && !hdr_connection) - chunk_appendf(tmp, "Connection: close\r\n"); - /* If we dont have a content-length set, and the HTTP version is 1.1 * and the status code implies the presence of a message body, we must * announce a transfer encoding chunked. This is required by haproxy