From: Frédéric Lécaille Date: Tue, 3 Aug 2021 14:03:09 +0000 (+0200) Subject: MINOR: quic: Modify qc_do_build_hdshk_pkt() to accept any packet type X-Git-Tag: v2.5-dev8~89 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e1aa0d347ab08eb91dc7e36e55a5bfe6b1e1e90a;p=thirdparty%2Fhaproxy.git MINOR: quic: Modify qc_do_build_hdshk_pkt() to accept any packet type With this patch qc_do_build_hdshk_pkt() is also able to build Application level packet type. Its name should be consequently renamed (to come). --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 623a12e32a..8cf3bcbc46 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -3672,7 +3672,6 @@ static int qc_do_build_hdshk_pkt(unsigned char *pos, const unsigned char *end, size_t len, len_frms, token_fields_len, padding_len; struct quic_frame frm = { .type = QUIC_FT_CRYPTO, }; struct quic_frame ack_frm = { .type = QUIC_FT_ACK, }; - struct quic_crypto *crypto = &frm.crypto; size_t ack_frm_len; int64_t largest_acked_pn; int add_ping_frm; @@ -3703,11 +3702,14 @@ static int qc_do_build_hdshk_pkt(unsigned char *pos, const unsigned char *end, goto err; } - largest_acked_pn = qel->pktns->tx.largest_acked_pn; + largest_acked_pn = HA_ATOMIC_LOAD(&qel->pktns->tx.largest_acked_pn); /* packet number length */ *pn_len = quic_packet_number_length(pn, largest_acked_pn); - quic_build_packet_long_header(&pos, end, pkt_type, *pn_len, conn); + if (pkt_type == QUIC_PACKET_TYPE_SHORT) + quic_build_packet_short_header(&pos, end, *pn_len, conn); + else + quic_build_packet_long_header(&pos, end, pkt_type, *pn_len, conn); /* Encode the token length (0) for an Initial packet. */ if (pkt_type == QUIC_PACKET_TYPE_INITIAL) @@ -3770,7 +3772,8 @@ static int qc_do_build_hdshk_pkt(unsigned char *pos, const unsigned char *end, len = len_frms; else len += QUIC_TLS_TAG_LEN; - quic_enc_int(&pos, end, len); + if (pkt_type != QUIC_PACKET_TYPE_SHORT) + quic_enc_int(&pos, end, len); /* Packet number field address. */ *buf_pn = pos;