修复流模式相关 buffer 问题

This commit is contained in:
skywind3000 2023-05-07 12:54:02 +08:00
parent 10ee2b30c8
commit c0cb6ab3ac

8
ikcp.c
View File

@ -470,6 +470,7 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
{ {
IKCPSEG *seg; IKCPSEG *seg;
int count, i; int count, i;
int append = 0;
assert(kcp->mss > 0); assert(kcp->mss > 0);
if (len < 0) return -1; if (len < 0) return -1;
@ -497,6 +498,7 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
len -= extend; len -= extend;
iqueue_del_init(&old->node); iqueue_del_init(&old->node);
ikcp_segment_delete(kcp, old); ikcp_segment_delete(kcp, old);
append = extend;
} }
} }
if (len <= 0) { if (len <= 0) {
@ -507,7 +509,11 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
if (len <= (int)kcp->mss) count = 1; if (len <= (int)kcp->mss) count = 1;
else count = (len + kcp->mss - 1) / kcp->mss; else count = (len + kcp->mss - 1) / kcp->mss;
if (count >= (int)IKCP_WND_RCV) return -2; if (count >= (int)IKCP_WND_RCV) {
if (kcp->stream != 0 && append > 0)
return append;
return -2;
}
if (count == 0) count = 1; if (count == 0) count = 1;