mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-18 20:51:45 +00:00
wgengine: make pendOpen time later, after dup check
Otherwise on OS retransmits, we'd make redundant timers in Go's timer heap that upon firing just do nothing (well, grab a mutex and check a map and see that there's nothing to do). Updates #cleanup Change-Id: Id30b8b2d629cf9c7f8133a3f7eca5dc79e81facb Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
219efebad4
commit
eb28818403
@ -108,16 +108,16 @@ func (e *userspaceEngine) trackOpenPostFilterOut(pp *packet.Parsed, t *tstun.Wra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer := time.AfterFunc(tcpTimeoutBeforeDebug, func() {
|
|
||||||
e.onOpenTimeout(flow)
|
|
||||||
})
|
|
||||||
|
|
||||||
e.mu.Lock()
|
e.mu.Lock()
|
||||||
defer e.mu.Unlock()
|
defer e.mu.Unlock()
|
||||||
if _, dup := e.pendOpen[flow]; dup {
|
if _, dup := e.pendOpen[flow]; dup {
|
||||||
// Duplicates are expected when the OS retransmits. Ignore.
|
// Duplicates are expected when the OS retransmits. Ignore.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
timer := time.AfterFunc(tcpTimeoutBeforeDebug, func() {
|
||||||
|
e.onOpenTimeout(flow)
|
||||||
|
})
|
||||||
mak.Set(&e.pendOpen, flow, &pendingOpenFlow{timer: timer})
|
mak.Set(&e.pendOpen, flow, &pendingOpenFlow{timer: timer})
|
||||||
|
|
||||||
return filter.Accept
|
return filter.Accept
|
||||||
|
Loading…
x
Reference in New Issue
Block a user