diff --git a/internal/openvpn/helpers.go b/internal/openvpn/helpers.go index 8145c0a4..2d9a40f8 100644 --- a/internal/openvpn/helpers.go +++ b/internal/openvpn/helpers.go @@ -4,9 +4,15 @@ import ( "context" "time" + "github.com/qdm12/gluetun/internal/constants" "github.com/qdm12/gluetun/internal/models" ) +func (l *Loop) crashed(ctx context.Context, err error) { + l.signalOrSetStatus(constants.Crashed) + l.logAndWait(ctx, err) +} + func (l *Loop) signalOrSetStatus(status models.LoopStatus) { if l.userTrigger { l.userTrigger = false diff --git a/internal/openvpn/run.go b/internal/openvpn/run.go index ae5ddb5d..74b13ddf 100644 --- a/internal/openvpn/run.go +++ b/internal/openvpn/run.go @@ -32,40 +32,32 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) { var err error if openVPNSettings.Config == "" { connection, err = providerConf.GetOpenVPNConnection(providerSettings.ServerSelection) - if err != nil { - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) - continue + if err == nil { + lines = providerConf.BuildConf(connection, l.username, openVPNSettings) } - lines = providerConf.BuildConf(connection, l.username, openVPNSettings) } else { lines, connection, err = l.processCustomConfig(openVPNSettings) - if err != nil { - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) - continue - } + } + if err != nil { + l.crashed(ctx, err) + continue } if err := l.conf.WriteConfig(lines); err != nil { - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) + l.crashed(ctx, err) continue } if openVPNSettings.User != "" { - err := l.conf.WriteAuthFile( - openVPNSettings.User, openVPNSettings.Password) + err := l.conf.WriteAuthFile(openVPNSettings.User, openVPNSettings.Password) if err != nil { - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) + l.crashed(ctx, err) continue } } if err := l.fw.SetVPNConnection(ctx, connection); err != nil { - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) + l.crashed(ctx, err) continue } @@ -75,8 +67,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) { openvpnCtx, openVPNSettings.Version, openVPNSettings.Flags) if err != nil { openvpnCancel() - l.signalOrSetStatus(constants.Crashed) - l.logAndWait(ctx, err) + l.crashed(ctx, err) continue }