master
bel 2022-08-12 23:01:03 -06:00
parent 42b2344fef
commit 2d18a6cdbe
2 changed files with 5 additions and 1 deletions

View File

@ -19,7 +19,7 @@ func NewConfig() *Config {
as := args.NewArgSet()
as.Append(args.INT, "p", "port to listen on", 61113)
as.Append(args.INT, "kbps", "port to listen on", 61113)
as.Append(args.INT, "kbps", "kilobytes per sec limit", -1)
as.Append(args.BOOL, "tls-insecure", "permit tls insecure", false)
as.Append(args.DURATION, "t", "timeout", time.Minute)

View File

@ -3,6 +3,8 @@ package main
import (
"context"
"io"
"log"
"time"
"golang.org/x/time/rate"
)
@ -15,12 +17,14 @@ type throttledWriter struct {
func (tw throttledWriter) Write(b []byte) (int, error) {
if tw.limiter != nil {
start := time.Now()
if block := tw.limiter.Burst(); len(b) > block {
b = b[:block]
}
if err := tw.limiter.WaitN(tw.ctx, len(b)); err != nil {
return 0, err
}
log.Printf("limited %v bytes for %v", len(b), time.Since(start))
}
return tw.w.Write(b)
}