ping: Limit old requests
This commit is contained in:
parent
79e2d3b56d
commit
6e4e045620
1 changed files with 12 additions and 1 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue