Improved openvpn run loop

This commit is contained in:
Quentin McGaw
2020-05-09 00:43:09 +00:00
parent da739a0c3d
commit b45fa026dd

View File

@@ -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: