MINOR: quic-be: add field for max_udp_payload_size into quic_conn
Add ->max_udp_payload_size new member to quic_conn struct. Initialize it from qc_new_conn(). Adapt qc_snd_buf() to use it.
This commit is contained in:
parent
5517b9c521
commit
d5a2e9b44e
@ -305,6 +305,7 @@ struct qcc_app_ops;
|
|||||||
/* Number of received bytes. */ \
|
/* Number of received bytes. */ \
|
||||||
uint64_t rx; \
|
uint64_t rx; \
|
||||||
} bytes; \
|
} bytes; \
|
||||||
|
size_t max_udp_payload; \
|
||||||
/* First DCID used by client on its Initial packet. */ \
|
/* First DCID used by client on its Initial packet. */ \
|
||||||
struct quic_cid odcid; \
|
struct quic_cid odcid; \
|
||||||
/* DCID of our endpoint - not updated when a new DCID is used */ \
|
/* DCID of our endpoint - not updated when a new DCID is used */ \
|
||||||
|
@ -1238,6 +1238,10 @@ struct quic_conn *qc_new_conn(const struct quic_version *qv, int ipv4,
|
|||||||
qc->rx.buf = b_make(qc->rx.buf.area, QUIC_CONN_RX_BUFSZ, 0, 0);
|
qc->rx.buf = b_make(qc->rx.buf.area, QUIC_CONN_RX_BUFSZ, 0, 0);
|
||||||
qc->rx.stream_max_uni = qc->rx.stream_max_bidi = 0;
|
qc->rx.stream_max_uni = qc->rx.stream_max_bidi = 0;
|
||||||
|
|
||||||
|
qc->max_udp_payload = l ?
|
||||||
|
l->bind_conf->quic_params.max_udp_payload_size :
|
||||||
|
srv->quic_params.max_udp_payload_size;
|
||||||
|
|
||||||
qc->nb_pkt_for_cc = 1;
|
qc->nb_pkt_for_cc = 1;
|
||||||
qc->nb_pkt_since_cc = 0;
|
qc->nb_pkt_since_cc = 0;
|
||||||
|
|
||||||
|
@ -815,10 +815,8 @@ int qc_snd_buf(struct quic_conn *qc, const struct buffer *buf, size_t sz,
|
|||||||
int qc_rcv_buf(struct quic_conn *qc)
|
int qc_rcv_buf(struct quic_conn *qc)
|
||||||
{
|
{
|
||||||
struct sockaddr_storage saddr = {0}, daddr = {0};
|
struct sockaddr_storage saddr = {0}, daddr = {0};
|
||||||
struct quic_transport_params *params;
|
|
||||||
struct quic_dgram *new_dgram = NULL;
|
struct quic_dgram *new_dgram = NULL;
|
||||||
struct buffer buf = BUF_NULL;
|
struct buffer buf = BUF_NULL;
|
||||||
size_t max_sz;
|
|
||||||
unsigned char *dgram_buf;
|
unsigned char *dgram_buf;
|
||||||
struct listener *l;
|
struct listener *l;
|
||||||
ssize_t ret = 0;
|
ssize_t ret = 0;
|
||||||
@ -829,22 +827,19 @@ int qc_rcv_buf(struct quic_conn *qc)
|
|||||||
TRACE_ENTER(QUIC_EV_CONN_RCV, qc);
|
TRACE_ENTER(QUIC_EV_CONN_RCV, qc);
|
||||||
l = qc->li;
|
l = qc->li;
|
||||||
|
|
||||||
params = &l->bind_conf->quic_params;
|
|
||||||
max_sz = params->max_udp_payload_size;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (!b_alloc(&buf, DB_MUX_RX))
|
if (!b_alloc(&buf, DB_MUX_RX))
|
||||||
break; /* TODO subscribe for memory again available. */
|
break; /* TODO subscribe for memory again available. */
|
||||||
|
|
||||||
b_reset(&buf);
|
b_reset(&buf);
|
||||||
BUG_ON(b_contig_space(&buf) < max_sz);
|
BUG_ON(b_contig_space(&buf) < qc->max_udp_payload);
|
||||||
|
|
||||||
/* Allocate datagram on first loop or after requeuing. */
|
/* Allocate datagram on first loop or after requeuing. */
|
||||||
if (!new_dgram && !(new_dgram = pool_alloc(pool_head_quic_dgram)))
|
if (!new_dgram && !(new_dgram = pool_alloc(pool_head_quic_dgram)))
|
||||||
break; /* TODO subscribe for memory again available. */
|
break; /* TODO subscribe for memory again available. */
|
||||||
|
|
||||||
dgram_buf = (unsigned char *)b_tail(&buf);
|
dgram_buf = (unsigned char *)b_tail(&buf);
|
||||||
ret = quic_recv(qc->fd, dgram_buf, max_sz,
|
ret = quic_recv(qc->fd, dgram_buf, qc->max_udp_payload,
|
||||||
(struct sockaddr *)&saddr, sizeof(saddr),
|
(struct sockaddr *)&saddr, sizeof(saddr),
|
||||||
(struct sockaddr *)&daddr, sizeof(daddr),
|
(struct sockaddr *)&daddr, sizeof(daddr),
|
||||||
get_net_port(&qc->local_addr));
|
get_net_port(&qc->local_addr));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user