Cleanup.
This commit is contained in:
@@ -28,8 +28,12 @@ func (a *App) onStateTick() {
|
||||
|
||||
switch p.State {
|
||||
case StateRelayed:
|
||||
if p.DirectAlive() {
|
||||
// We may already have a valid direct endpoint due to wireguard
|
||||
// roaming.
|
||||
a.devPromote(p)
|
||||
} else if ep := p.PreferredEndpoint(); ep.IsValid() {
|
||||
// If we have an ep to probe, add it.
|
||||
if ep := p.PreferredEndpoint(); ep.IsValid() {
|
||||
a.devAddProbe(p, ep)
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
|
||||
"vppn/peer/control"
|
||||
"vppn/peer/wginterface"
|
||||
)
|
||||
|
||||
type PeerState string
|
||||
@@ -61,6 +62,11 @@ func (p *Peer) Up() bool {
|
||||
return time.Since(p.LastPing) < 3*PingInterval
|
||||
}
|
||||
|
||||
func (p *Peer) DirectAlive() bool {
|
||||
return p.WGEndpoint().IsValid() &&
|
||||
time.Since(p.LastHandshakeTime()) < 2*wginterface.ProbeKeepalive
|
||||
}
|
||||
|
||||
func (p *Peer) CanRelay() bool {
|
||||
return p.IsRelay && p.Up()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user