BUG/MAJOR: http: don't emit the send-name-header when no server is available
Lukas Benes reported that http-send-name-header causes a segfault if no
server is available because we're dereferencing the session's target which
is NULL. The tiniest reproducer looks like this :
listen foo
bind :1234
mode http
http-send-name-header srv
This obvious fix must be backported to 1.4 which is affected as well.
diff --git a/src/session.c b/src/session.c
index 3f117e6..0a6b130 100644
--- a/src/session.c
+++ b/src/session.c
@@ -2202,7 +2202,7 @@
/* 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)) {
+ (s->be->server_id_hdr_name != NULL && s->target)) {
http_send_name_header(&s->txn, s->be, objt_server(s->target)->id);
}
}