From 9c41bc6d2af64fa3af8c35c21d6a34a6f75d726b Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Mon, 4 Nov 2024 18:17:01 +0100 Subject: [PATCH] MINOR: quic: simplify qc_parse_pkt_frms() return path Change qc_parse_pkt_frms() return path for normal and error cases. Most notably, it allows to remove local variable ret as now return value is hardcoded on normal and err label. This also allows to define a different trace for error leaving code. (cherry picked from commit 498a99a84956535a9ce2a61cb908d0fc81165606) Signed-off-by: Christopher Faulet --- src/quic_rx.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/quic_rx.c b/src/quic_rx.c index 931f839..3c4139c 100644 --- a/src/quic_rx.c +++ b/src/quic_rx.c @@ -811,7 +811,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, { struct quic_frame frm; const unsigned char *pos, *end; - int fast_retrans = 0, ret = 0; + int fast_retrans = 0; TRACE_ENTER(QUIC_EV_CONN_PRSHPKT, qc); /* Skip the AAD */ @@ -829,13 +829,13 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, * a single QUIC packet and cannot span multiple packets. */ quic_set_connection_close(qc, quic_err_transport(QC_ERR_PROTOCOL_VIOLATION)); - goto leave; + goto err; } while (pos < end) { if (!qc_parse_frm(&frm, pkt, &pos, end, qc)) { // trace already emitted by function above - goto leave; + goto err; } switch (frm.type) { @@ -851,7 +851,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (!qc_parse_ack_frm(qc, &frm, qel, &rtt_sample, &pos, end)) { // trace already emitted by function above - goto leave; + goto err; } if (rtt_sample != UINT_MAX) { @@ -878,14 +878,14 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (qcc_recv_stop_sending(qc->qcc, ss_frm->id, ss_frm->app_error_code)) { TRACE_ERROR("qcc_recv_stop_sending() failed", QUIC_EV_CONN_PRSHPKT, qc); - goto leave; + goto err; } } break; } case QUIC_FT_CRYPTO: if (!qc_handle_crypto_frm(qc, &frm.crypto, pkt, qel, &fast_retrans)) - goto leave; + goto err; break; case QUIC_FT_NEW_TOKEN: /* TODO */ @@ -907,12 +907,12 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (!qc_h3_request_reject(qc, strm_frm->id)) { TRACE_ERROR("error on request rejection", QUIC_EV_CONN_PRSHPKT, qc); /* This packet will not be acknowledged */ - goto leave; + goto err; } } else { /* This packet will not be acknowledged */ - goto leave; + goto err; } } @@ -921,7 +921,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (!qc_handle_strm_frm(pkt, strm_frm, qc, fin)) { TRACE_ERROR("qc_handle_strm_frm() failed", QUIC_EV_CONN_PRSHPKT, qc); - goto leave; + goto err; } break; @@ -938,7 +938,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, if (qcc_recv_max_stream_data(qc->qcc, msd_frm->id, msd_frm->max_stream_data)) { TRACE_ERROR("qcc_recv_max_stream_data() failed", QUIC_EV_CONN_PRSHPKT, qc); - goto leave; + goto err; } } break; @@ -966,7 +966,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, struct quic_connection_id *conn_id = NULL; if (!qc_handle_retire_connection_id_frm(qc, &frm, &pkt->dcid, &conn_id)) - goto leave; + goto err; if (!conn_id) break; @@ -1026,7 +1026,7 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, * error of type PROTOCOL_VIOLATION. */ quic_set_connection_close(qc, quic_err_transport(QC_ERR_PROTOCOL_VIOLATION)); - goto leave; + goto err; } qc->state = QUIC_HS_ST_CONFIRMED; @@ -1065,10 +1065,12 @@ static int qc_parse_pkt_frms(struct quic_conn *qc, struct quic_rx_packet *pkt, } } - ret = 1; - leave: TRACE_LEAVE(QUIC_EV_CONN_PRSHPKT, qc); - return ret; + return 1; + + err: + TRACE_DEVEL("leaving on error", QUIC_EV_CONN_PRSHPKT, qc); + return 0; } /* Detect the value of the spin bit to be used. */ -- 1.7.10.4