MINOR: quic: Probe regardless of the congestion control

When probing, we must not take into an account the congestion control window.
This was not completely correctly implemented: qc_build_frms() could fail
because of this limit when comparing the head of the packet againts the
congestion control window. With this patch we make it fail only when
we are not probing.
This commit is contained in:
Frédéric Lécaille 2022-01-17 17:56:20 +01:00 committed by Amaury Denoyelle
parent 0fa553d0c2
commit f4e5a7c644

View File

@ -4617,17 +4617,23 @@ static inline int qc_build_frms(struct list *l,
{
int ret;
struct quic_frame *cf, *cfbak;
size_t remain = quic_path_prep_data(qc->path);
ret = 0;
if (*len > room || headlen > remain)
if (*len > room)
return 0;
/* If we are not probing we must take into an account the congestion
* control window.
*/
if (!qel->pktns->tx.pto_probe)
room = QUIC_MIN(room, quic_path_prep_data(qc->path) - headlen);
if (!qel->pktns->tx.pto_probe) {
size_t remain = quic_path_prep_data(qc->path);
if (headlen > remain)
return 0;
room = QUIC_MIN(room, remain - headlen);
}
TRACE_PROTO("************** frames build (headlen)",
QUIC_EV_CONN_BCFRMS, qc, &headlen);
list_for_each_entry_safe(cf, cfbak, &qel->pktns->tx.frms, list) {