}
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++;
}
}
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);
qc = ctx->qc;
cbuf = qr->cbuf;
+ TRACE_ENTER(QUIC_EV_CONN_SPPKTS, qc);
while (cb_contig_data(cbuf)) {
unsigned char *pos;
struct buffer tmpbuf = { };
}
}
+ TRACE_LEAVE(QUIC_EV_CONN_SPPKTS, qc);
+
return 1;
}
qc->streams_by_id = EB_ROOT_UNIQUE;
qc->stream_buf_count = 0;
+ qc->sendto_err = 0;
TRACE_LEAVE(QUIC_EV_CONN_INIT, qc);