From: Willy Tarreau Date: Sun, 7 Apr 2013 16:19:16 +0000 (+0200) Subject: MINOR: session: only call http_send_name_header() when changing the server X-Git-Tag: v1.5-dev19~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e5dfdad7789497e7cd9636f0fe5b5e48045352d;p=thirdparty%2Fhaproxy.git MINOR: session: only call http_send_name_header() when changing the server Till now we used to call the function until the connection established, which means that the header rewriting was performed for nothing upon each even (eg: uploaded contents) until the server responded or timed out. Now we only call the function when we assign the server. --- diff --git a/src/session.c b/src/session.c index 8556284366..d44583b1e6 100644 --- a/src/session.c +++ b/src/session.c @@ -2194,21 +2194,22 @@ struct task *process_session(struct task *t) */ if (s->si[1].state != SI_ST_REQ) sess_update_stream_int(s, &s->si[1]); - if (s->si[1].state == SI_ST_REQ) + if (s->si[1].state == SI_ST_REQ) { sess_prepare_conn_req(s, &s->si[1]); + /* Now we can add the server name to a header (if requested) */ + /* check for HTTP mode and proxy server_name_hdr_name != NULL */ + if ((s->flags & SN_BE_ASSIGNED) && + (s->be->mode == PR_MODE_HTTP) && + (s->be->server_id_hdr_name != NULL)) { + http_send_name_header(&s->txn, s->be, objt_server(s->target)->id); + } + } + srv = objt_server(s->target); if (s->si[1].state == SI_ST_ASS && srv && srv->rdr_len && (s->flags & SN_REDIRECTABLE)) http_perform_server_redirect(s, &s->si[1]); } while (s->si[1].state == SI_ST_ASS); - - /* Now we can add the server name to a header (if requested) */ - /* check for HTTP mode and proxy server_name_hdr_name != NULL */ - if ((s->flags & SN_BE_ASSIGNED) && - (s->be->mode == PR_MODE_HTTP) && - (s->be->server_id_hdr_name != NULL)) { - http_send_name_header(&s->txn, s->be, objt_server(s->target)->id); - } } /* Benchmarks have shown that it's optimal to do a full resync now */