BUG/MEDIUM: mux-h2: Use the right list in h2_stop_senders().

In h2_stop_senders(), when we're about to move the h2s about to send back
to the send_list, because we know the mux is full, instead of putting them
all in the send_list, put them back either in the fctl_list or the send_list
depending on if they are waiting for the flow control or not. This also makes
sure they're inserted in their arrival order and not reversed.

This should be backported to 1.9.
This commit is contained in:
Olivier Houchard 2019-03-21 15:50:58 +01:00 committed by Willy Tarreau
parent 16ff261633
commit fd8bd4521a

View File

@ -5239,7 +5239,10 @@ static void h2_stop_senders(struct h2c *h2c)
task_remove_from_task_list((struct task *)h2s->send_wait->task);
h2s->send_wait->events |= SUB_RETRY_SEND;
h2s->send_wait->events &= ~SUB_CALL_UNSUBSCRIBE;
LIST_ADD(&h2c->send_list, &h2s->list);
if (h2s->flags & H2_SF_BLK_MFCTL)
LIST_ADDQ(&h2c->fctl_list, &h2s->list);
else
LIST_ADDQ(&h2c->send_list, &h2s->list);
}
}