diff --git a/outbound/wireguard.go b/outbound/wireguard.go index c009b56264..769aff6993 100644 --- a/outbound/wireguard.go +++ b/outbound/wireguard.go @@ -210,27 +210,49 @@ func (w *WireGuard) Close() error { } func (w *WireGuard) InterfaceUpdated() { - w.logger.Warn("Hiddify! Wirguard! Interface updated!1") - err := w.device.BindUpdate() - // err := fmt.Errorf("Hiddify! downing wireguard interface failed") + w.logger.Warn("Hiddify! Wirguard! Interface updated!XXX") + // err := w.device.BindUpdate() + // // err := fmt.Errorf("Hiddify! downing wireguard interface failed") - if err != nil { - w.logger.Error("Hiddify! bind update failed", err) - e1 := w.device.Down() - if e1 != nil { - w.logger.Error("Hiddify! downing wireguard interface failed", e1) + // if err != nil { + // w.logger.Error("Hiddify! bind update failed", err) + w.logger.Error("Hiddify! downing...") + e1 := w.device.Down() + if e1 != nil { + w.logger.Error("Hiddify! downing wireguard interface failed", e1) + } else { + w.logger.Warn("Hiddify! downing Ok!") + } + // if w.pauseManager.IsNetworkPaused() { + // w.logger.Error("Hiddify! Network is paused!... returning") + // return + // } + for i := 0; i < 5; i++ { + if !w.pauseManager.IsNetworkPaused() { + break } - w.logger.Warn("Hiddify! uping.... wireguard interface") - e2 := w.device.Up() - if e2 != nil { - w.logger.Error("Hiddify! Uping wireguard interface failed", e2) - } else { - w.logger.Warn("Hiddify! OK!Updating wireguard interface") - + if i == 4 { + w.logger.Errorf("No network is availble after 4 seconds, stopping wireguard.") + return } + w.logger.Warn("Network is pause waiting ", i) + select { + case <-time.After(1 * time.Second): + case <-w.done: + return + } + } + w.logger.Warn("Hiddify! uping.... wireguard interface") + e2 := w.device.Up() + if e2 != nil { + w.logger.Error("Hiddify! Uping wireguard interface failed", e2) } else { - w.logger.Warn("Hiddify! OK2!Updating wireguard interface") + w.logger.Warn("Hiddify! OK!Updating wireguard interface") + } + // } else { + // w.logger.Warn("Hiddify! OK2!Updating wireguard interface") + // } return } @@ -240,12 +262,15 @@ func (w *WireGuard) onPauseUpdated(event int) { case pause.EventDevicePaused: w.device.Down() - // case EventNetworkPause://hiddify already handled in Interface Updated - // w.device.Down() + case pause.EventNetworkPause: //hiddify already handled in Interface Updated + err := w.device.Down() + w.logger.Warn("Hiddify! Wirguard! downing net! err=", err) + case pause.EventDeviceWake: w.device.Up() - // case pause.EventNetworkWake://hiddify already handled in Interface Updated - // w.device.Up() + case pause.EventNetworkWake: //hiddify already handled in Interface Updated + err := w.device.Up() + w.logger.Warn("Hiddify! Wirguard! Uping net! err=", err) } }