@@ -422,13 +422,7 @@ func (w *wgproxy) Refresh() (err error) {
422422 // Re-apply peer config so wireguard device uses freshly resolved endpoint IPs.
423423 // remote.Refresh() above may have updated IPs; Device.Up() alone does not
424424 // re-call ParseEndpoint, so peers would keep sending handshakes to stale IPs.
425- if cfg := w .wgtun .uapicfg .Load (); len (cfg ) > 0 {
426- cpcfg := cfg // copies string
427- _ , _ = wgIfConfigOf (w .id , & cpcfg ) // removes non-uapi fields
428- if ipcerr := w .Device .IpcSet (cpcfg ); ipcerr != nil {
429- log .W ("proxy: wg: %s: refresh: re-apply ipcset failed; err %v" , w .tag (), ipcerr )
430- }
431- }
425+ w .redoPeers ()
432426 }
433427 }
434428 // not required since wgconn:NewBind() is namespace aware
@@ -438,6 +432,16 @@ func (w *wgproxy) Refresh() (err error) {
438432 return
439433}
440434
435+ func (w * wgproxy ) redoPeers () {
436+ if cfg := w .wgtun .uapicfg .Load (); len (cfg ) > 0 {
437+ cpcfg := cfg // copies string
438+ _ , _ = wgIfConfigOf (w .id , & cpcfg ) // removes non-uapi fields
439+ if ipcerr := w .Device .IpcSet (cpcfg ); ipcerr != nil {
440+ log .W ("proxy: wg: %s: refresh: re-apply ipcset failed; err %v" , w .tag (), ipcerr )
441+ }
442+ }
443+ }
444+
441445func (h * wgproxy ) Dialer () protect.RDialer {
442446 return h
443447}
@@ -1753,6 +1757,7 @@ func (h *wgtun) listener(op wg.PktDir, err error) {
17531757 log .I ("wg: %s listener: %s, state: %s; refreshed %d dns / %d peers; why: %s" ,
17541758 h .tag (), op , pxstatus (s ), m , n , why )
17551759 }
1760+ // TODO: h.redoPeers()
17561761 }
17571762}
17581763
0 commit comments