From 1e7fc9c115907c4813f9c4eae3e251c5572f92e3 Mon Sep 17 00:00:00 2001 From: leon Date: Mon, 8 Dec 2025 11:05:16 +0800 Subject: [PATCH] feat: auto-drop KCP packets on readbuf overflow --- event/kcp/hkcp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/event/kcp/hkcp.c b/event/kcp/hkcp.c index 229594a5a..f771c67f1 100644 --- a/event/kcp/hkcp.c +++ b/event/kcp/hkcp.c @@ -141,6 +141,11 @@ int hio_read_kcp (hio_t* io, void* buf, int readbytes) { while (1) { int nrecv = ikcp_recv(kcp->ikcp, kcp->readbuf.base, kcp->readbuf.len); // printf("ikcp_recv nrecv=%d\n", nrecv); + if (nrecv == -3) { // drop packet when larger than readbuf.len + int peeksize = ikcp_peeksize(kcp->ikcp); + ikcp_recv(kcp->ikcp, NULL, peeksize); + nrecv = 0; + } if (nrecv < 0) break; hio_read_cb(io, kcp->readbuf.base, nrecv); ret += nrecv;