Merge branch 'v2'

This commit is contained in:
skywind3000
2026-05-16 01:52:21 +08:00

13
ikcp.c
View File

@@ -981,6 +981,7 @@ void ikcp_flush(ikcpcb *kcp)
IUINT32 rtomin; IUINT32 rtomin;
IUINT32 prior_cwnd; IUINT32 prior_cwnd;
IUINT32 eff_cwnd, cur_inflight; IUINT32 eff_cwnd, cur_inflight;
IINT32 pacing_budget = -1;
struct IQUEUEHEAD *p; struct IQUEUEHEAD *p;
int change = 0; int change = 0;
int lost = 0; int lost = 0;
@@ -993,6 +994,10 @@ void ikcp_flush(ikcpcb *kcp)
kcp->ccops->on_tick(kcp); kcp->ccops->on_tick(kcp);
} }
if (kcp->ccops && kcp->ccops->pacing_rate) {
pacing_budget = (IINT32)kcp->ccops->pacing_rate(kcp);
}
prior_cwnd = kcp->cwnd; prior_cwnd = kcp->cwnd;
seg.conv = kcp->conv; seg.conv = kcp->conv;
@@ -1149,6 +1154,10 @@ void ikcp_flush(ikcpcb *kcp)
segment->wnd = seg.wnd; segment->wnd = seg.wnd;
segment->una = kcp->rcv_nxt; segment->una = kcp->rcv_nxt;
if (pacing_budget >= 0 && pacing_budget < (IINT32)segment->len) {
break;
}
if (kcp->ccops && kcp->ccops->on_pkt_sent) { if (kcp->ccops && kcp->ccops->on_pkt_sent) {
kcp->ccops->on_pkt_sent(kcp, segment->sn, current, kcp->ccops->on_pkt_sent(kcp, segment->sn, current,
segment->len, kcp->nsnd_buf, segment->xmit); segment->len, kcp->nsnd_buf, segment->xmit);
@@ -1169,6 +1178,10 @@ void ikcp_flush(ikcpcb *kcp)
ptr += segment->len; ptr += segment->len;
} }
if (pacing_budget >= 0) {
pacing_budget -= (IINT32)segment->len;
}
if (segment->xmit >= kcp->dead_link) { if (segment->xmit >= kcp->dead_link) {
kcp->state = (IUINT32)-1; kcp->state = (IUINT32)-1;
} }