Skip to content

Commit 54a3213

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

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/quic_rx.c

Lines changed: 6 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,9 +1107,9 @@ 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:
11151115
TRACE_PROTO("frame handled", QUIC_EV_CONN_PRSAFRM, qc, frm);
@@ -1127,6 +1127,9 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt,
11271127
qc_frm_free(qc, &frm);
11281128
}
11291129

1130+
if (dont_ack)
1131+
goto err;
1132+
11301133
/* Error should be returned if some frames cannot be parsed. */
11311134
BUG_ON(!eb_is_empty(&cf_frms_tree));
11321135

0 commit comments

Comments
 (0)