]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Probably fix a nasty buffer size performance issue with rate limited readers
authorMatt Joiner <anacrolix@gmail.com>
Wed, 6 Aug 2025 10:34:40 +0000 (20:34 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 6 Aug 2025 10:34:40 +0000 (20:34 +1000)
ratelimitreader.go

index 1bd743ed3fc2366c3b0084f04d8267723d1e337a..39df9326283f7d19c5a5843b494a1f17a2dc7666 100644 (file)
@@ -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())]
        }