mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-25 11:05:45 +00:00
control/controlhttp: fix connectivity on Alaska Air wifi
Updates #13597 Change-Id: Ifbf52b93fd35d64fcf80f8fddbfd610008fd8742 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
fd32f0ddf4
commit
1eaad7d3de
@ -272,6 +272,18 @@ func (d *Dialer) forceNoise443() bool {
|
||||
if forceNoise443() {
|
||||
return true
|
||||
}
|
||||
|
||||
if d.HealthTracker.LastNoiseDialWasRecent() {
|
||||
// If we dialed recently, assume there was a recent failure and fall
|
||||
// back to HTTPS dials for the subsequent retries.
|
||||
//
|
||||
// This heuristic works around networks where port 80 is MITMed and
|
||||
// appears to work for a bit post-Upgrade but then gets closed,
|
||||
// such as seen in https://github.com/tailscale/tailscale/issues/13597.
|
||||
d.logf("controlhttp: forcing port 443 dial due to recent noise dial")
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -96,6 +96,7 @@ type Tracker struct {
|
||||
inMapPollSince time.Time
|
||||
lastMapPollEndedAt time.Time
|
||||
lastStreamedMapResponse time.Time
|
||||
lastNoiseDial time.Time
|
||||
derpHomeRegion int
|
||||
derpHomeless bool
|
||||
derpRegionConnected map[int]bool
|
||||
@ -1273,6 +1274,24 @@ func (t *Tracker) checkReceiveFuncsLocked() {
|
||||
}
|
||||
}
|
||||
|
||||
// LastNoiseDialWasRecent notes that we're attempting to dial control via the
|
||||
// ts2021 noise protocol and reports whether the prior dial was "recent"
|
||||
// (currently defined as 2 minutes but subject to change).
|
||||
//
|
||||
// If t is nil, it reports false.
|
||||
func (t *Tracker) LastNoiseDialWasRecent() bool {
|
||||
if t.nil() {
|
||||
return false
|
||||
}
|
||||
t.mu.Lock()
|
||||
defer t.mu.Unlock()
|
||||
|
||||
now := time.Now()
|
||||
dur := now.Sub(t.lastNoiseDial)
|
||||
t.lastNoiseDial = now
|
||||
return dur < 2*time.Minute
|
||||
}
|
||||
|
||||
type metricHealthMessageLabel struct {
|
||||
// TODO: break down by warnable.severity as well?
|
||||
Type string
|
||||
|
Loading…
Reference in New Issue
Block a user