Improved openvpn run loop
This commit is contained in:
26
cmd/main.go
26
cmd/main.go
@@ -323,18 +323,16 @@ func collectStreamLines(ctx context.Context, streamMerger command.StreamMerger,
|
|||||||
signalConnected()
|
signalConnected()
|
||||||
}
|
}
|
||||||
}, func(err error) {
|
}, func(err error) {
|
||||||
logger.Error(err)
|
logger.Warn(err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func openvpnRunLoop(ctx context.Context, ovpnConf openvpn.Configurator, streamMerger command.StreamMerger,
|
func openvpnRunLoop(ctx context.Context, ovpnConf openvpn.Configurator, streamMerger command.StreamMerger,
|
||||||
logger logging.Logger, httpServer server.Server, waiter command.Waiter, fatalOnError func(err error)) {
|
logger logging.Logger, httpServer server.Server, waiter command.Waiter, fatalOnError func(err error)) {
|
||||||
|
logger = logger.WithPrefix("openvpn: ")
|
||||||
waitErrors := make(chan error)
|
waitErrors := make(chan error)
|
||||||
for {
|
for ctx.Err() == nil {
|
||||||
if ctx.Err() == context.Canceled {
|
logger.Info("starting")
|
||||||
break
|
|
||||||
}
|
|
||||||
logger.Info("openvpn: starting")
|
|
||||||
openvpnCtx, openvpnCancel := context.WithCancel(ctx)
|
openvpnCtx, openvpnCancel := context.WithCancel(ctx)
|
||||||
stream, waitFn, err := ovpnConf.Start(openvpnCtx)
|
stream, waitFn, err := ovpnConf.Start(openvpnCtx)
|
||||||
fatalOnError(err)
|
fatalOnError(err)
|
||||||
@@ -344,12 +342,16 @@ func openvpnRunLoop(ctx context.Context, ovpnConf openvpn.Configurator, streamMe
|
|||||||
return <-waitErrors
|
return <-waitErrors
|
||||||
})
|
})
|
||||||
err = waitFn()
|
err = waitFn()
|
||||||
waitErrors <- err
|
waitErrors <- fmt.Errorf("openvpn: %w", err)
|
||||||
if openvpnCtx.Err() == context.Canceled {
|
switch {
|
||||||
logger.Info("openvpn: shutting down")
|
case ctx.Err() != nil:
|
||||||
|
logger.Warn("context canceled: exiting openvpn run loop")
|
||||||
|
case openvpnCtx.Err() == context.Canceled:
|
||||||
|
logger.Info("triggered openvpn restart")
|
||||||
|
default:
|
||||||
|
logger.Warn(err)
|
||||||
|
openvpnCancel()
|
||||||
}
|
}
|
||||||
logger.Error("openvpn: %s", err)
|
|
||||||
openvpnCancel()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,6 +480,8 @@ func unboundRunLoop(ctx context.Context, logger logging.Logger, dnsConf dns.Conf
|
|||||||
logger.Warn("context canceled: exiting unbound run loop")
|
logger.Warn("context canceled: exiting unbound run loop")
|
||||||
case timer != nil && !timer.Stop():
|
case timer != nil && !timer.Stop():
|
||||||
logger.Info("planned restart of unbound")
|
logger.Info("planned restart of unbound")
|
||||||
|
case unboundCtx.Err() == context.Canceled:
|
||||||
|
logger.Info("triggered restart of unbound")
|
||||||
case setupErr != nil:
|
case setupErr != nil:
|
||||||
logger.Warn(setupErr)
|
logger.Warn(setupErr)
|
||||||
case startErr != nil:
|
case startErr != nil:
|
||||||
|
|||||||
Reference in New Issue
Block a user