out:
if (first_pkt) {
qc_txb_store(buf, wrlen, first_pkt);
- ++dgram_cnt;
+ //++dgram_cnt;
}
if (cc && total) {
BUG_ON_HOT(b_data(buf));
b_reset(buf);
- prep_pkts = qc_prep_pkts(qc, buf, send_list, max_dgrams);
+ prep_pkts = qc_prep_pkts(qc, buf, send_list, max_dgrams ? max_dgrams - ret : 0);
+ BUG_ON(max_dgrams && prep_pkts > max_dgrams);
if (b_data(buf) && !qc_send_ppkts(buf, qc->xprt_ctx)) {
ret = -1;
}
ret += prep_pkts;
+ BUG_ON(max_dgrams && ret > max_dgrams);
if (max_dgrams && ret == max_dgrams && !LIST_ISEMPTY(send_list)) {
TRACE_DEVEL("stopping for artificial pacing", QUIC_EV_CONN_TXPKT, qc);
break;