From 2a6ba97d833deb6862220883fea78de6939630d3 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 6 Aug 2025 20:34:40 +1000 Subject: [PATCH] Probably fix a nasty buffer size performance issue with rate limited readers --- ratelimitreader.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ratelimitreader.go b/ratelimitreader.go index 1bd743ed..39df9326 100644 --- a/ratelimitreader.go +++ b/ratelimitreader.go @@ -24,7 +24,12 @@ type rateLimitedReader struct { r io.Reader } -func (me *rateLimitedReader) Read(b []byte) (n int, err error) { +func (me rateLimitedReader) Read(b []byte) (n int, err error) { + // Avoid truncating the read if everything is permitted anyway. + if me.l.Limit() == rate.Inf { + return me.r.Read(b) + } + // If the burst is zero, let the limiter method handle errors. if me.l.Burst() != 0 { b = b[:min(len(b), me.l.Burst())] } -- 2.51.0