mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-22 04:10:48 +00:00
MINOR: quic: Add a debug counter for sendto() errors
As we do not have any task to be wake up by the poller after sendto() error, we add an sendto() error counter to the quic_conn struct. Dump its values from qc_send_ppkts().
This commit is contained in:
parent
cfabb3526b
commit
8726d633d4
@ -778,6 +778,7 @@ struct quic_conn {
|
|||||||
unsigned int nb_pkt_since_cc;
|
unsigned int nb_pkt_since_cc;
|
||||||
|
|
||||||
const struct qcc_app_ops *app_ops;
|
const struct qcc_app_ops *app_ops;
|
||||||
|
unsigned int sendto_err;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* USE_QUIC */
|
#endif /* USE_QUIC */
|
||||||
|
@ -341,11 +341,11 @@ size_t qc_snd_buf(struct quic_conn *qc, const struct buffer *buf, size_t count,
|
|||||||
}
|
}
|
||||||
else if (ret == 0 || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN || errno == EINPROGRESS) {
|
else if (ret == 0 || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN || errno == EINPROGRESS) {
|
||||||
/* TODO must be handle properly. It is justified for UDP ? */
|
/* TODO must be handle properly. It is justified for UDP ? */
|
||||||
ABORT_NOW();
|
qc->sendto_err++;
|
||||||
}
|
}
|
||||||
else if (errno != EINTR) {
|
else if (errno != EINTR) {
|
||||||
/* TODO must be handle properly. It is justified for UDP ? */
|
/* TODO must be handle properly. It is justified for UDP ? */
|
||||||
ABORT_NOW();
|
qc->sendto_err++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -552,7 +552,7 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
|
|||||||
if (mask & QUIC_EV_CONN_SPPKTS) {
|
if (mask & QUIC_EV_CONN_SPPKTS) {
|
||||||
const struct quic_tx_packet *pkt = a2;
|
const struct quic_tx_packet *pkt = a2;
|
||||||
|
|
||||||
chunk_appendf(&trace_buf, " cwnd=%llu ppif=%llu pif=%llu",
|
chunk_appendf(&trace_buf, " err=%u cwnd=%llu ppif=%llu pif=%llu", qc->sendto_err,
|
||||||
(unsigned long long)qc->path->cwnd,
|
(unsigned long long)qc->path->cwnd,
|
||||||
(unsigned long long)qc->path->prep_in_flight,
|
(unsigned long long)qc->path->prep_in_flight,
|
||||||
(unsigned long long)qc->path->in_flight);
|
(unsigned long long)qc->path->in_flight);
|
||||||
@ -3180,6 +3180,7 @@ int qc_send_ppkts(struct qring *qr, struct ssl_sock_ctx *ctx)
|
|||||||
|
|
||||||
qc = ctx->qc;
|
qc = ctx->qc;
|
||||||
cbuf = qr->cbuf;
|
cbuf = qr->cbuf;
|
||||||
|
TRACE_ENTER(QUIC_EV_CONN_SPPKTS, qc);
|
||||||
while (cb_contig_data(cbuf)) {
|
while (cb_contig_data(cbuf)) {
|
||||||
unsigned char *pos;
|
unsigned char *pos;
|
||||||
struct buffer tmpbuf = { };
|
struct buffer tmpbuf = { };
|
||||||
@ -3256,6 +3257,8 @@ int qc_send_ppkts(struct qring *qr, struct ssl_sock_ctx *ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRACE_LEAVE(QUIC_EV_CONN_SPPKTS, qc);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4392,6 +4395,7 @@ static struct quic_conn *qc_new_conn(unsigned int version, int ipv4,
|
|||||||
|
|
||||||
qc->streams_by_id = EB_ROOT_UNIQUE;
|
qc->streams_by_id = EB_ROOT_UNIQUE;
|
||||||
qc->stream_buf_count = 0;
|
qc->stream_buf_count = 0;
|
||||||
|
qc->sendto_err = 0;
|
||||||
|
|
||||||
TRACE_LEAVE(QUIC_EV_CONN_INIT, qc);
|
TRACE_LEAVE(QUIC_EV_CONN_INIT, qc);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user