mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 20:46:11 +02:00
MINOR: quic: do not crash on unhandled sendto error
Remove ABORT_NOW() statement on unhandled sendto error. Instead use a dedicated counter sendto_err_unknown to report these cases. If we detect increment of this counter, strace can be used to detect errno value : $ strace -p $(pidof haproxy) -f -e trace=sendto -Z This should be backported up to 2.6. This should help to debug github issue #1903.
This commit is contained in:
parent
910b7577bc
commit
1d9f170edd
@ -56,6 +56,7 @@ struct quic_counters {
|
||||
long long dropped_parsing; /* total number of dropped packets upon parsing errors */
|
||||
long long socket_full; /* total number of EAGAIN errors on sendto() calls */
|
||||
long long sendto_err; /* total number of errors on sendto() calls, EAGAIN excepted */
|
||||
long long sendto_err_unknown; /* total number of errors on sendto() calls which are currently not supported */
|
||||
long long lost_pkt; /* total number of lost packets */
|
||||
long long too_short_initial_dgram; /* total number of too short datagrams with Initial packets */
|
||||
long long retry_sent; /* total number of Retry sent */
|
||||
|
||||
@ -536,14 +536,14 @@ int qc_snd_buf(struct quic_conn *qc, const struct buffer *buf, size_t sz,
|
||||
} while (ret < 0 && errno == EINTR);
|
||||
|
||||
if (ret < 0 || ret != sz) {
|
||||
struct proxy *prx = qc->li->bind_conf->frontend;
|
||||
struct quic_counters *prx_counters =
|
||||
EXTRA_COUNTERS_GET(prx->extra_counters_fe,
|
||||
&quic_stats_module);
|
||||
|
||||
/* TODO adjust errno for UDP context. */
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK ||
|
||||
errno == ENOTCONN || errno == EINPROGRESS || errno == EBADF) {
|
||||
struct proxy *prx = qc->li->bind_conf->frontend;
|
||||
struct quic_counters *prx_counters =
|
||||
EXTRA_COUNTERS_GET(prx->extra_counters_fe,
|
||||
&quic_stats_module);
|
||||
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK)
|
||||
HA_ATOMIC_INC(&prx_counters->socket_full);
|
||||
else
|
||||
@ -551,7 +551,7 @@ int qc_snd_buf(struct quic_conn *qc, const struct buffer *buf, size_t sz,
|
||||
}
|
||||
else if (errno) {
|
||||
/* TODO unlisted errno : handle it explicitly. */
|
||||
ABORT_NOW();
|
||||
HA_ATOMIC_INC(&prx_counters->sendto_err_unknown);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user