mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-19 19:38:40 +00:00
magicsock: call RequestStatus when DERP connects
Without this, a freshly started ipn client will be stuck in the "Starting" state until something triggers a call to RequestStatus. Usually a UI does this, but until then we can sit in this state until poked by an external event, as is evidenced by our e2e tests locking up when DERP is attached. (This only recently became a problem when we enabled lazy handshaking everywhere, otherwise the wireugard tunnel creation would also trigger a RequestStatus.) Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
This commit is contained in:
parent
5e0375808b
commit
cd7bc02ab1
@ -1206,6 +1206,7 @@ func (c *Conn) derpWriteChanOfAddr(addr netaddr.IPPort, peer key.Public) chan<-
|
||||
|
||||
go c.runDerpReader(ctx, addr, dc, wg, startGate)
|
||||
go c.runDerpWriter(ctx, dc, ch, wg, startGate)
|
||||
go c.epFunc(nil) // call RequestStatus with DERPs change
|
||||
|
||||
return ad.writeCh
|
||||
}
|
||||
|
@ -229,10 +229,11 @@ func newUserspaceEngineAdvanced(conf EngineConfig) (_ Engine, reterr error) {
|
||||
e.linkMon = mon
|
||||
|
||||
endpointsFn := func(endpoints []string) {
|
||||
e.mu.Lock()
|
||||
e.endpoints = append(e.endpoints[:0], endpoints...)
|
||||
e.mu.Unlock()
|
||||
|
||||
if len(endpoints) != 0 {
|
||||
e.mu.Lock()
|
||||
e.endpoints = append(e.endpoints[:0], endpoints...)
|
||||
e.mu.Unlock()
|
||||
}
|
||||
e.RequestStatus()
|
||||
}
|
||||
magicsockOpts := magicsock.Options{
|
||||
|
Loading…
x
Reference in New Issue
Block a user