Skip to content

Commit 94063bd

Browse files
committed
ipn/proxies: m onNotOK api change
1 parent a4320f6 commit 94063bd

2 files changed

Lines changed: 19 additions & 30 deletions

File tree

intra/ipn/proxies.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ type Proxy interface {
152152
// guaranteed to implement Dial.
153153
Dialer() protect.RDialer
154154
// onNotOK is called by clients when the proxy is not responsive.
155-
onNotOK() bool
155+
onNotOK() (refreshed, allok bool)
156156
// onProtoChange returns true if the proxy must be re-added with cfg on proto changes.
157157
OnProtoChange(lp LinkProps) (cfg string, readd bool)
158158
// Gateway sets proxy p as the gateway for this router.

intra/ipn/wgproxy.go

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -277,32 +277,32 @@ func waitForViaHandshake() {
277277
}
278278

279279
// onNotOK implements Proxy.
280-
func (w *wgproxy) onNotOK() (handled bool) {
281-
var didRefresh, didPing, didCallVia bool
280+
func (w *wgproxy) onNotOK() (didRefresh, allok bool) {
281+
var didPing, viaDidRefresh, viaOK bool
282282

283283
if via := w.getViaIfDialed(); via != nil {
284-
didCallVia = via.onNotOK()
284+
viaDidRefresh, viaOK = via.onNotOK()
285285
}
286286

287287
var err error
288-
if didCallVia {
288+
if viaDidRefresh {
289289
waitForViaHandshake() // wait for via to be OK
290290
err = w.Refresh()
291291
didRefresh = true
292-
handled = err == nil
292+
allok = err == nil
293293
} else {
294-
handled, err = w.refreshBa.DoIt(w.id, func() (bool, error) {
294+
allok, err = w.refreshBa.DoIt(w.id, func() (bool, error) {
295295
rerr := w.Refresh()
296296
didRefresh = true
297297
return rerr == nil, rerr
298298
})
299299
}
300300
if !didRefresh { // attempt Ping if refresh skipped by the barrier
301-
handled = handled && w.Ping() // ping / sendkeepalive is async
301+
allok = allok && w.Ping() // ping / sendkeepalive is async
302302
didPing = true
303303
}
304-
loged(err)("proxy: wg: %s (%s); onNotOK: via? %t refresh? %t ping? %t; ok? %t; err? %v",
305-
w.id, w.viaStatus(), didCallVia, didRefresh, didPing, handled, err)
304+
loged(err)("proxy: wg: (%s + %s); onNotOK: refresh? %t+%t; ping? %t; ok? %t+%t; err? %v",
305+
w.id, w.viaStatus(), viaDidRefresh, didRefresh, didPing, viaOK, allok, err)
306306
return
307307
}
308308

@@ -320,36 +320,25 @@ func (w *wgproxy) Refresh() (err error) {
320320
nn := w.remote.Load().Refresh()
321321

322322
via := w.getVia()
323-
324-
viaHandled, didWait := false, false
323+
viaOK, didWait := false, false
325324
if via != nil {
326-
if viaHandled = via.onNotOK(); viaHandled {
325+
var viaDidRefresh bool
326+
if viaDidRefresh, viaOK = via.onNotOK(); viaDidRefresh {
327327
waitForViaHandshake()
328328
didWait = true
329329
}
330330
}
331331

332-
if err := w.resetMtu(via); err != nil {
333-
log.E("proxy: wg: (%s / %s) refresh failed; resetMtu: len(dns): %d, len(peer): %d, err: %v",
334-
w.id, w.viaStatus(), n, nn, err)
335-
return err
332+
if err = w.resetMtu(via); err == nil {
333+
if err = w.Device.Down(); err == nil {
334+
err = w.Device.Up()
335+
}
336336
}
337337

338-
if err = w.Device.Down(); err != nil {
339-
log.E("proxy: wg: (%s / %s) refresh failed; down: len(dns): %d, len(peer): %d, err: %v",
340-
w.id, w.viaStatus(), n, nn, err)
341-
return
342-
}
343-
if err = w.Device.Up(); err != nil {
344-
log.E("proxy: wg: (%s / %s) refresh failed; up: len(dns): %d, len(peer): %d, err: %v",
345-
w.id, w.viaStatus(), n, nn, err)
346-
return
347-
}
348338
// not required since wgconn:NewBind() is namespace aware
349339
// bindok := bindWgSockets(w.ID(), w.remote.AnyAddr(), w.wgdev, w.ctl)
350-
log.I("proxy: wg: (%s / %s): refresh done; len(dns): %d, len(peer): %d; viaHandled? %t, didWait? %t; err? %v",
351-
w.id, w.viaStatus(), n, nn, viaHandled, didWait, err)
352-
340+
logei(err)("proxy: wg: (%s + %s): refresh done; len(dns): %d, len(peer): %d; viaOK? %t, didWait? %t; err? %v",
341+
w.id, w.viaStatus(), n, nn, viaOK, didWait, err)
353342
return
354343
}
355344

0 commit comments

Comments
 (0)