Wait for openvpn to exit on program termination
This commit is contained in:
@@ -259,11 +259,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
// Runs openvpn and restarts it if it does not exit cleanly
|
// Runs openvpn and restarts it if it does not exit cleanly
|
||||||
go func() {
|
go func() {
|
||||||
|
waitErrors := make(chan error)
|
||||||
for {
|
for {
|
||||||
stream, waitFn, err := ovpnConf.Start(ctx)
|
stream, waitFn, err := ovpnConf.Start(ctx)
|
||||||
e.FatalOnError(err)
|
e.FatalOnError(err)
|
||||||
go streamMerger.Merge(ctx, stream, command.MergeName("openvpn"), command.MergeColor(constants.ColorOpenvpn()))
|
go streamMerger.Merge(ctx, stream, command.MergeName("openvpn"), command.MergeColor(constants.ColorOpenvpn()))
|
||||||
|
waiter.Add(func() error {
|
||||||
|
return <-waitErrors
|
||||||
|
})
|
||||||
if err := waitFn(); err != nil {
|
if err := waitFn(); err != nil {
|
||||||
|
waitErrors <- err
|
||||||
logger.Error("openvpn crashed: %s", err)
|
logger.Error("openvpn crashed: %s", err)
|
||||||
} else {
|
} else {
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user