fix(healthcheck): ensure STUNOnly nodes aren't marked as unhealthy (#6990)

This commit is contained in:
Colin Adler
2023-04-03 16:14:48 -05:00
committed by GitHub
parent a1371dbd60
commit e0f7f011d8
2 changed files with 51 additions and 1 deletions

View File

@ -171,7 +171,14 @@ func (r *DERPNodeReport) Run(ctx context.Context) error {
r.doExchangeMessage(ctx)
r.doSTUNTest(ctx)
if !r.CanExchangeMessages || r.UsesWebsocket || r.STUN.Error != nil {
// We can't exchange messages with the node,
if (!r.CanExchangeMessages && !r.Node.STUNOnly) ||
// A node may use websockets because `Upgrade: DERP` may be blocked on
// the load balancer. This is unhealthy because websockets are slower
// than the regular DERP protocol.
r.UsesWebsocket ||
// The node was marked as STUN compatible but the STUN test failed.
r.STUN.Error != nil {
r.Healthy = false
}
return nil