mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-18 19:50:54 +00:00
MINOR: h2: don't re-enable the connection's task when we're closing
It's pointless to requeue the task when we're closing, so swap the order of the task_queue() and h2_release(). It also matches what was written in the comment regarding re-arming the timer.
This commit is contained in:
parent
83906c2f91
commit
e6ae77f64f
20
src/mux_h2.c
20
src/mux_h2.c
@ -2195,20 +2195,10 @@ static void h2_detach(struct conn_stream *cs)
|
||||
/* h2s still attached to the h2c */
|
||||
eb32_delete(&h2s->by_id);
|
||||
|
||||
if (h2c->task) {
|
||||
if (eb_is_empty(&h2c->streams_by_id)) {
|
||||
h2c->task->expire = tick_add(now_ms, h2c->timeout);
|
||||
task_queue(h2c->task);
|
||||
}
|
||||
else
|
||||
h2c->task->expire = TICK_ETERNITY;
|
||||
}
|
||||
|
||||
/* We don't want to close right now unless we're removing the
|
||||
* last stream, and either the connection is in error, or it
|
||||
* reached the ID already specified in a GOAWAY frame received
|
||||
* or sent (as seen by last_sid >= 0). A timer should be armed
|
||||
* to kill the connection after some idle time though.
|
||||
* or sent (as seen by last_sid >= 0).
|
||||
*/
|
||||
if (eb_is_empty(&h2c->streams_by_id) && /* don't close if streams exist */
|
||||
((h2c->conn->flags & CO_FL_ERROR) || /* errors close immediately */
|
||||
@ -2219,6 +2209,14 @@ static void h2_detach(struct conn_stream *cs)
|
||||
/* no more stream will come, kill it now */
|
||||
h2_release(h2c->conn);
|
||||
}
|
||||
else if (h2c->task) {
|
||||
if (eb_is_empty(&h2c->streams_by_id)) {
|
||||
h2c->task->expire = tick_add(now_ms, h2c->timeout);
|
||||
task_queue(h2c->task);
|
||||
}
|
||||
else
|
||||
h2c->task->expire = TICK_ETERNITY;
|
||||
}
|
||||
}
|
||||
pool_free2(pool2_h2s, h2s);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user