diff options
Diffstat (limited to 'pkg/vpn/bonafide')
-rw-r--r-- | pkg/vpn/bonafide/bonafide.go | 7 | ||||
-rw-r--r-- | pkg/vpn/bonafide/gateways.go | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go index 0fa48ed..2b1ff3d 100644 --- a/pkg/vpn/bonafide/bonafide.go +++ b/pkg/vpn/bonafide/bonafide.go @@ -268,6 +268,9 @@ func (b *Bonafide) maybeInitializeEIP() error { b.watchSnowflakeProgress(ch) snowflake.BootstrapWithSnowflakeProxies(p, getAPIAddr(p), ch) } + if b.gateways == nil { + return errors.New("no gateways") + } err := b.parseEipJSONFromFile() if err != nil { return err @@ -281,6 +284,9 @@ func (b *Bonafide) maybeInitializeEIP() error { } b.gateways = newGatewayPool(b.eip) } + if b.gateways == nil { + return errors.New("no gateways") + } // XXX For now, we just initialize once per session. // We might update the menshen gateways every time we 'maybe initilize EIP' @@ -317,6 +323,7 @@ func (b *Bonafide) GetAllGateways(transport string) ([]Gateway, error) { err := b.maybeInitializeEIP() // XXX needs to wait for bonafide too if err != nil { + log.Printf("%v\n", err) return nil, err } gws, err := b.gateways.getAll(transport, b.tzOffsetHours) diff --git a/pkg/vpn/bonafide/gateways.go b/pkg/vpn/bonafide/gateways.go index 4b7e6dd..b8690c6 100644 --- a/pkg/vpn/bonafide/gateways.go +++ b/pkg/vpn/bonafide/gateways.go @@ -317,7 +317,7 @@ func (p *gatewayPool) getAll(transport string, tz int) ([]Gateway, error) { } log.Println("seems to be initialized...") - if len(p.recommended) == 0 { + if len(p.recommended) != 0 { return p.getGatewaysFromMenshen(transport, 999) } return p.getGatewaysByTimezone(transport, tz, 999) @@ -340,6 +340,7 @@ func (p *gatewayPool) getGatewaysFromMenshen(transport string, max int) ([]Gatew /* the old timezone based heuristic, when everything goes wrong */ func (p *gatewayPool) getGatewaysByTimezone(transport string, tzOffsetHours, max int) ([]Gateway, error) { + log.Println("Sorting gateways by timezone") gws := make([]Gateway, 0) gwVector := []gatewayDistance{} @@ -348,9 +349,10 @@ func (p *gatewayPool) getGatewaysByTimezone(transport string, tzOffsetHours, max continue } distance := 13 - gwOffset, err := strconv.Atoi(p.locations[gw.Location].Timezone) + tz := p.locations[gw.Location].Timezone + gwOffset, err := strconv.Atoi(tz) if err != nil { - log.Printf("Error sorting gateways: %v", err) + log.Printf("Error sorting gateways: loc=%s, tz=%s; %v", gw.Location, tz, err) return gws, err } distance = tzDistance(tzOffsetHours, gwOffset) |