From cc232ba4549b1c47b5e4c944e6040e11563bafad Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Mon, 4 Apr 2022 09:41:25 +0000 Subject: *) core: add ap_h1_append_header() for single header values. *) mod_proxy: use of new ap_h1_header(s) functions for formatting HTTP/1.1 requests. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1899550 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy_http.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'modules/proxy/mod_proxy_http.c') diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 91be06fc12..b617c8e728 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -516,10 +516,6 @@ static int stream_reqbody(proxy_http_req_t *req) static void terminate_headers(proxy_http_req_t *req) { - apr_bucket_alloc_t *bucket_alloc = req->bucket_alloc; - apr_bucket *e; - char *buf; - /* * Handle Connection: header if we do HTTP/1.1 request: * If we plan to close the backend connection sent Connection: close @@ -527,28 +523,20 @@ static void terminate_headers(proxy_http_req_t *req) */ if (!req->force10) { if (req->upgrade) { - buf = apr_pstrdup(req->p, "Connection: Upgrade" CRLF); - ap_xlate_proto_to_ascii(buf, strlen(buf)); - e = apr_bucket_pool_create(buf, strlen(buf), req->p, bucket_alloc); - APR_BRIGADE_INSERT_TAIL(req->header_brigade, e); - /* Tell the backend that it can upgrade the connection. */ - buf = apr_pstrcat(req->p, "Upgrade: ", req->upgrade, CRLF, NULL); + ap_h1_append_header(req->header_brigade, req->p, "Connection", "Upgrade"); + ap_h1_append_header(req->header_brigade, req->p, "Upgrade", req->upgrade); } else if (ap_proxy_connection_reusable(req->backend)) { - buf = apr_pstrdup(req->p, "Connection: Keep-Alive" CRLF); + ap_h1_append_header(req->header_brigade, req->p, "Connection", "Keep-Alive"); } else { - buf = apr_pstrdup(req->p, "Connection: close" CRLF); + ap_h1_append_header(req->header_brigade, req->p, "Connection", "close"); } - ap_xlate_proto_to_ascii(buf, strlen(buf)); - e = apr_bucket_pool_create(buf, strlen(buf), req->p, bucket_alloc); - APR_BRIGADE_INSERT_TAIL(req->header_brigade, e); } /* add empty line at the end of the headers */ - e = apr_bucket_immortal_create(CRLF_ASCII, 2, bucket_alloc); - APR_BRIGADE_INSERT_TAIL(req->header_brigade, e); + ap_h1_terminate_header(req->header_brigade); } static int ap_proxy_http_prefetch(proxy_http_req_t *req, -- cgit v1.2.3