From 33b7faba5343f78c0dc2a8981c3b3983a43c86b9 Mon Sep 17 00:00:00 2001 From: LinboLen <5467712+LinboLen@users.noreply.github.com> Date: Wed, 3 Dec 2025 04:23:31 +0800 Subject: [PATCH] Merge pull request #120 from LinboLen/fix_limit_problem fix: adjust rate limiting to use actual bytes transferred --- common/rate/conn.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/common/rate/conn.go b/common/rate/conn.go index c94b041..5b3e68a 100644 --- a/common/rate/conn.go +++ b/common/rate/conn.go @@ -19,13 +19,19 @@ type Conn struct { } func (c *Conn) Read(b []byte) (n int, err error) { - c.limiter.Wait(int64(len(b))) - return c.Conn.Read(b) + n, err = c.Conn.Read(b) + if n > 0 { + c.limiter.Wait(int64(n)) + } + return n, err } func (c *Conn) Write(b []byte) (n int, err error) { - c.limiter.Wait(int64(len(b))) - return c.Conn.Write(b) + n, err = c.Conn.Write(b) + if n > 0 { + c.limiter.Wait(int64(n)) + } + return n, err } /*