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().
diff --git a/include/haproxy/xprt_quic-t.h b/include/haproxy/xprt_quic-t.h
index a983733..504294f 100644
--- a/include/haproxy/xprt_quic-t.h
+++ b/include/haproxy/xprt_quic-t.h
@@ -778,6 +778,7 @@
 	unsigned int nb_pkt_since_cc;
 
 	const struct qcc_app_ops *app_ops;
+	unsigned int sendto_err;
 };
 
 #endif /* USE_QUIC */
diff --git a/src/quic_sock.c b/src/quic_sock.c
index a0f8129..2cc5a7f 100644
--- a/src/quic_sock.c
+++ b/src/quic_sock.c
@@ -341,11 +341,11 @@
 		}
 		else if (ret == 0 || errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN || errno == EINPROGRESS) {
 			/* TODO must be handle properly. It is justified for UDP ? */
-			ABORT_NOW();
+			qc->sendto_err++;
 		}
 		else if (errno != EINTR) {
 			/* TODO must be handle properly. It is justified for UDP ? */
-			ABORT_NOW();
+			qc->sendto_err++;
 		}
 	}
 
diff --git a/src/xprt_quic.c b/src/xprt_quic.c
index 524c42d..ffdbe77 100644
--- a/src/xprt_quic.c
+++ b/src/xprt_quic.c
@@ -552,7 +552,7 @@
 		if (mask & QUIC_EV_CONN_SPPKTS) {
 			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->prep_in_flight,
 			             (unsigned long long)qc->path->in_flight);
@@ -3180,6 +3180,7 @@
 
 	qc = ctx->qc;
 	cbuf = qr->cbuf;
+	TRACE_ENTER(QUIC_EV_CONN_SPPKTS, qc);
 	while (cb_contig_data(cbuf)) {
 		unsigned char *pos;
 		struct buffer tmpbuf = { };
@@ -3256,6 +3257,8 @@
 		}
 	}
 
+	TRACE_LEAVE(QUIC_EV_CONN_SPPKTS, qc);
+
 	return 1;
 }
 
@@ -4392,6 +4395,7 @@
 
 	qc->streams_by_id = EB_ROOT_UNIQUE;
 	qc->stream_buf_count = 0;
+	qc->sendto_err = 0;
 
 	TRACE_LEAVE(QUIC_EV_CONN_INIT, qc);