BUG/MINOR: mux-h1: Obey dontlognull option for empty requests

If a H1 connection is closed while no data are received, if the dontlognull
option is set, no log message must be emitted. Because the H1 multiplexer
handles early errors, it must take care to obey this option. It is true for
400-Bad-Request, 408-Request-Time-out and 501-Not-Implemented
responses. 500-Internal-Server-Error responses are still logged.

This patch should fix the issue #1336 for H1 sessions. It must be backported
to 2.4.
This commit is contained in:
Christopher Faulet 2021-07-26 09:42:49 +02:00
parent 9def1425ce
commit 07e10deb36

View File

@ -2427,7 +2427,8 @@ static int h1_handle_bad_req(struct h1c *h1c)
h1c->errcode = 400;
ret = h1_send_error(h1c);
sess_log(sess);
if (b_data(&h1c->ibuf) || !(sess->fe->options & PR_O_NULLNOLOG))
sess_log(sess);
end:
return ret;
@ -2454,7 +2455,8 @@ static int h1_handle_not_impl_err(struct h1c *h1c)
h1c->errcode = 501;
ret = h1_send_error(h1c);
sess_log(sess);
if (b_data(&h1c->ibuf) || !(sess->fe->options & PR_O_NULLNOLOG))
sess_log(sess);
end:
return ret;
@ -2479,7 +2481,8 @@ static int h1_handle_req_tout(struct h1c *h1c)
_HA_ATOMIC_INC(&sess->listener->counters->failed_req);
h1c->errcode = 408;
ret = h1_send_error(h1c);
if (b_data(&h1c->ibuf) || !(sess->fe->options & PR_O_NULLNOLOG))
ret = h1_send_error(h1c);
sess_log(sess);
end:
return ret;