2 Commits

Author SHA1 Message Date
8a4d02c6e2 Cleanup hosts map
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-18 23:43:58 -04:00
d22b87da10 Fix config loading issue when servers don't resolve 2022-08-18 23:42:54 -04:00

View File

@ -167,6 +167,8 @@ func (r *Redirector) reloadServers() error {
hosts := make(map[string]bool) hosts := make(map[string]bool)
var hostsLock sync.Mutex
for _, server := range r.config.ServerList { for _, server := range r.config.ServerList {
wg.Add(1) wg.Add(1)
@ -186,8 +188,6 @@ func (r *Redirector) reloadServers() error {
return err return err
} }
hosts[u.Host] = true
i := -1 i := -1
if v, exists := existing[u.Host]; exists { if v, exists := existing[u.Host]; exists {
@ -197,7 +197,16 @@ func (r *Redirector) reloadServers() error {
go func(i int, server ServerConfig, u *url.URL) { go func(i int, server ServerConfig, u *url.URL) {
defer wg.Done() defer wg.Done()
s := r.addServer(server, u) s, err := r.addServer(server, u)
if err != nil {
log.WithError(err).Warning("Unable to add server")
return
}
hostsLock.Lock()
hosts[u.Host] = true
hostsLock.Unlock()
if _, ok := existing[u.Host]; ok { if _, ok := existing[u.Host]; ok {
s.Redirects = r.servers[i].Redirects s.Redirects = r.servers[i].Redirects
@ -243,7 +252,7 @@ var metricReplacer = strings.NewReplacer(".", "_", "-", "_")
// addServer takes ServerConfig and constructs a server. // addServer takes ServerConfig and constructs a server.
// This will create duplicate servers, but it will overwrite existing ones when changed. // This will create duplicate servers, but it will overwrite existing ones when changed.
func (r *Redirector) addServer(server ServerConfig, u *url.URL) *Server { func (r *Redirector) addServer(server ServerConfig, u *url.URL) (*Server, error) {
s := &Server{ s := &Server{
Available: true, Available: true,
Host: u.Host, Host: u.Host,
@ -275,7 +284,7 @@ func (r *Redirector) addServer(server ServerConfig, u *url.URL) *Server {
"error": err, "error": err,
"server": s.Host, "server": s.Host,
}).Warning("Could not resolve address") }).Warning("Could not resolve address")
return nil return nil, err
} }
var city City var city City
@ -287,7 +296,7 @@ func (r *Redirector) addServer(server ServerConfig, u *url.URL) *Server {
"server": s.Host, "server": s.Host,
"ip": ips[0], "ip": ips[0],
}).Warning("Could not geolocate address") }).Warning("Could not geolocate address")
return nil return nil, err
} }
if s.Continent == "" { if s.Continent == "" {
@ -299,7 +308,7 @@ func (r *Redirector) addServer(server ServerConfig, u *url.URL) *Server {
s.Longitude = city.Location.Longitude s.Longitude = city.Location.Longitude
} }
return s return s, nil
} }
func (r *Redirector) reloadMap() error { func (r *Redirector) reloadMap() error {