]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Get rid of a struct buffer in quic_lstnr_dgram_read()
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 25 Jan 2022 21:33:11 +0000 (22:33 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 27 Jan 2022 15:37:55 +0000 (16:37 +0100)
This is to be sure xprt functions do not manipulate the buffer struct
passed as parameter to quic_lstnr_dgram_read() from low level datagram
I/O callback in quic_sock.c (quic_sock_fd_iocb()).

include/haproxy/xprt_quic.h
src/quic_sock.c
src/xprt_quic.c

index ab52808a8c0dda56fd50ba0a9ef57e53ac339adf..a24df7480e95454d61e48d582bc5622d3c5de0d7 100644 (file)
@@ -1184,7 +1184,7 @@ void chunk_frm_appendf(struct buffer *buf, const struct quic_frame *frm);
 
 void quic_set_tls_alert(struct quic_conn *qc, int alert);
 int quic_set_app_ops(struct quic_conn *qc, const unsigned char *alpn, size_t alpn_len);
-ssize_t quic_lstnr_dgram_read(struct buffer *buf, size_t len, void *owner,
+ssize_t quic_lstnr_dgram_read(unsigned char *buf, size_t len, void *owner,
                               struct sockaddr_storage *saddr);
 
 #endif /* USE_QUIC */
index ee6a2fad7d48e674d55f97f0712032f757fda067..ef94acb1591fe376956ee3adf66a59ad94b3e413 100644 (file)
@@ -212,7 +212,7 @@ void quic_sock_fd_iocb(int fd)
        } while (0);
 
        b_add(buf, ret);
-       quic_lstnr_dgram_read(buf, ret, l, &saddr);
+       quic_lstnr_dgram_read((unsigned char *)b_head(buf), ret, l, &saddr);
        b_del(buf, ret);
  out:
        MT_LIST_APPEND(&l->rx.rxbuf_list, &rxbuf->mt_list);
index 8a9b4f29379c4ce7e899e9ef5f3b8d1a1d91fcb0..e08a1a47b3d67e385cfb08db25a4bf02ebae1780 100644 (file)
@@ -5527,7 +5527,7 @@ static void __quic_conn_deinit(void)
  * as owner calling <func> function.
  * Return the number of bytes read if succeeded, -1 if not.
  */
-static ssize_t quic_dgram_read(struct buffer *buf, size_t len, void *owner,
+static ssize_t quic_dgram_read(unsigned char *buf, size_t len, void *owner,
                                struct sockaddr_storage *saddr, qpkt_read_func *func)
 {
        unsigned char *pos;
@@ -5538,7 +5538,7 @@ static ssize_t quic_dgram_read(struct buffer *buf, size_t len, void *owner,
                .owner = owner,
        };
 
-       pos = (unsigned char *)b_head(buf);
+       pos = buf;
        end = pos + len;
        do {
                int ret;
@@ -5563,13 +5563,13 @@ static ssize_t quic_dgram_read(struct buffer *buf, size_t len, void *owner,
        if (dgram_ctx.qc)
                dgram_ctx.qc->rx.bytes += len;
 
-       return pos - (unsigned char *)b_head(buf);
+       return pos - buf;
 
  err:
        return -1;
 }
 
-ssize_t quic_lstnr_dgram_read(struct buffer *buf, size_t len, void *owner,
+ssize_t quic_lstnr_dgram_read(unsigned char *buf, size_t len, void *owner,
                               struct sockaddr_storage *saddr)
 {
        return quic_dgram_read(buf, len, owner, saddr, qc_lstnr_pkt_rcv);