Skip to content

Commit a5146e9

Browse files
committed
WIP: ignore AGAIN ncbuf error
1 parent 800ba73 commit a5146e9

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/quic_rx.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt,
825825
struct quic_frame *frm = NULL;
826826
const unsigned char *pos, *end;
827827
enum quic_rx_ret_frm ret;
828-
int fast_retrans = 0;
828+
int fast_retrans = 0, dont_ack = 0;
829829

830830
TRACE_ENTER(QUIC_EV_CONN_PRSHPKT, qc);
831831
/* Skip the AAD */
@@ -1107,11 +1107,14 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt,
11071107

11081108
case QUIC_RX_RET_FRM_AGAIN:
11091109
TRACE_STATE("AGAIN encountered", QUIC_EV_CONN_PRSHPKT, qc);
1110+
dont_ack = 1;
11101111
/* avoid freeing without eb_delete() */
1111-
frm = NULL;
1112-
goto err;
1112+
break;
11131113

11141114
case QUIC_RX_RET_FRM_DONE:
1115+
if (dont_ack)
1116+
TRACE_PROTO("SHOULD HAVE FAILED HERE", QUIC_EV_CONN_PRSAFRM, qc, frm);
1117+
11151118
TRACE_PROTO("frame handled", QUIC_EV_CONN_PRSAFRM, qc, frm);
11161119
break;
11171120

@@ -1127,6 +1130,9 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt,
11271130
qc_frm_free(qc, &frm);
11281131
}
11291132

1133+
if (dont_ack)
1134+
goto err;
1135+
11301136
/* Error should be returned if some frames cannot be parsed. */
11311137
BUG_ON(!eb_is_empty(&cf_frms_tree));
11321138

0 commit comments

Comments
 (0)