Skip to content

Commit c4ad2f3

Browse files
committed
dnscrypt: refresh routes when added or removed
1 parent af9815c commit c4ad2f3

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

intra/dnscrypt/multiserver.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,21 @@ func (proxy *DcMulti) Stop() error {
443443
return nil
444444
}
445445

446+
// refreshRoutes re-adds relay routes to all live/tracked servers
447+
func (proxy *DcMulti) refreshRoutes() {
448+
udp, tcp := route(proxy)
449+
if len(udp) <= 0 || len(tcp) <= 0 {
450+
log.W("dnscrypt: refreshRoutes: null relays")
451+
}
452+
n := 0
453+
for _, x := range proxy.serversInfo.getAll() {
454+
x.RelayUDPAddrs = udp // may be empty or nil
455+
x.RelayTCPAddrs = tcp // may be empty or nil
456+
n++
457+
}
458+
log.I("dnscrypt: refreshRoutes: %d/%d for %d servers", len(udp), len(tcp), n)
459+
}
460+
446461
// AddGateways adds relay servers
447462
func (proxy *DcMulti) AddGateways(routescsv string) (int, error) {
448463
if len(routescsv) <= 0 {
@@ -455,7 +470,10 @@ func (proxy *DcMulti) AddGateways(routescsv string) (int, error) {
455470
r := strings.Split(routescsv, ",")
456471
cat := xdns.FindUnique(proxy.routes, r)
457472
proxy.routes = append(proxy.routes, cat...)
458-
log.I("dnscrypt: added %d relays %s", len(cat), routescsv)
473+
log.I("dnscrypt: added %d/%d relays %s", len(cat), len(r), cat)
474+
if len(cat) > 0 {
475+
go proxy.refreshRoutes()
476+
}
459477
return len(cat), nil
460478
}
461479

@@ -471,6 +489,9 @@ func (proxy *DcMulti) RemoveGateways(routescsv string) (int, error) {
471489
rm := strings.Split(routescsv, ",")
472490
l := len(proxy.routes)
473491
proxy.routes = xdns.FindUnique(rm, proxy.routes)
492+
if l != len(proxy.routes) { // routes changed
493+
go proxy.refreshRoutes()
494+
}
474495
return l - len(proxy.routes), nil
475496
}
476497

0 commit comments

Comments
 (0)