wgengine/magicsock: update comment, fix earlier commit

891898525c had a continue that meant the didCopy synchronization never ran.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick 2020-07-16 08:21:34 -07:00 committed by Brad Fitzpatrick
parent c976264bd1
commit d74c9aa95b

View File

@ -1134,10 +1134,13 @@ func (c *Conn) runDerpReader(ctx context.Context, derpFakeAddr netaddr.IPPort, d
}
c.ReSTUN("derp-close")
c.logf("magicsock: [%p] derp.Recv(derp-%d): %v", dc, regionID, err)
// Avoid excessive spinning.
// TODO: use a backoff timer, perhaps between 10ms and 500ms?
// Don't want to sleep too long. For now 250ms seems fine.
select {
case <-ctx.Done():
return
// Avoid excessive spinning.
case <-time.After(250 * time.Millisecond):
}
continue
@ -1165,15 +1168,12 @@ func (c *Conn) runDerpReader(ctx context.Context, derpFakeAddr netaddr.IPPort, d
case <-ctx.Done():
return
case c.derpRecvCh <- res:
continue
}
// The copy will not happen if connCtx is cancelled before we reach copyBuf.
// This has resulted in a rare inifite wait in practice.
select {
case <-ctx.Done():
return
case <-didCopy:
continue
select {
case <-ctx.Done():
return
case <-didCopy:
continue
}
}
}
}