mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 07:24:32 +00:00
BUG/MINOR: mux-h1: Correctly report Ti timer when HTX and keepalives are used
When HTTP keepalives are used in conjunction with HTX, the Ti timer reports the elapsed time since the beginning of the connection instead of the end of the previous request as stated in the documentation. Th, Tq and Tt also report incorrectly as a result. When creating a new h1s, check if it is the first request on the connection. If not, set the session create times to the current timestamp rather than the initial session accept timestamp. This makes the logged timers behave as stated in the documentation. This fix should be backported to 1.9 and 2.0.
This commit is contained in:
parent
37243bc61f
commit
234740f65d
18
src/mux_h1.c
18
src/mux_h1.c
@ -306,10 +306,20 @@ static struct h1s *h1s_create(struct h1c *h1c, struct conn_stream *cs, struct se
|
||||
if (!sess)
|
||||
sess = h1c->conn->owner;
|
||||
|
||||
h1s->csinfo.create_date = sess->accept_date;
|
||||
h1s->csinfo.tv_create = sess->tv_accept;
|
||||
h1s->csinfo.t_handshake = sess->t_handshake;
|
||||
h1s->csinfo.t_idle = -1;
|
||||
/* Timers for subsequent sessions on the same HTTP 1.x connection
|
||||
* measure from `now`, not from the connection accept time */
|
||||
if (h1s->flags & H1S_F_NOT_FIRST) {
|
||||
h1s->csinfo.create_date = date;
|
||||
h1s->csinfo.tv_create = now;
|
||||
h1s->csinfo.t_handshake = 0;
|
||||
h1s->csinfo.t_idle = -1;
|
||||
}
|
||||
else {
|
||||
h1s->csinfo.create_date = sess->accept_date;
|
||||
h1s->csinfo.tv_create = sess->tv_accept;
|
||||
h1s->csinfo.t_handshake = sess->t_handshake;
|
||||
h1s->csinfo.t_idle = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (h1c->px->options2 & PR_O2_RSPBUG_OK)
|
||||
|
Loading…
Reference in New Issue
Block a user