From 6e4e04562011e43164990a04cdbf47839bcc2b91 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Tue, 26 Aug 2025 11:38:38 +0800 Subject: [PATCH] ping: Limit old requests --- ping/destination.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ping/destination.go b/ping/destination.go index 51511c6..00966af 100644 --- a/ping/destination.go +++ b/ping/destination.go @@ -181,15 +181,26 @@ func (d *Destination) WritePacket(packet *buf.Buffer) error { } func (d *Destination) registerRequest(request pingRequest) { + const requestsLimit = 1024 d.requestAccess.Lock() defer d.requestAccess.Unlock() now := time.Now() + var ( + oldestRequest pingRequest + oldestCreateAt = now + ) for oldRequest, createdAt := range d.requests { if now.Sub(createdAt) > d.timeout { delete(d.requests, oldRequest) + } else if createdAt.Before(oldestCreateAt) { + oldestRequest = oldRequest + oldestCreateAt = createdAt } } - d.requests[request] = time.Now() + if len(d.requests) > requestsLimit { + delete(d.requests, oldestRequest) + } + d.requests[request] = now } func (d *Destination) Close() error {