fix(protonvpn): crash service if port assigned changes
This commit is contained in:
@@ -2,6 +2,7 @@ package protonvpn
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -66,6 +67,8 @@ func checkExternalPorts(logger utils.Logger, udpPort, tcpPort uint16) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ErrExternalPortChanged = errors.New("external port changed")
|
||||||
|
|
||||||
func (p *Provider) KeepPortForward(ctx context.Context,
|
func (p *Provider) KeepPortForward(ctx context.Context,
|
||||||
objects utils.PortForwardObjects) (err error) {
|
objects utils.PortForwardObjects) (err error) {
|
||||||
client := natpmp.New()
|
client := natpmp.New()
|
||||||
@@ -98,9 +101,8 @@ func (p *Provider) KeepPortForward(ctx context.Context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if p.portForwarded != assignedExternalPort {
|
if p.portForwarded != assignedExternalPort {
|
||||||
objects.Logger.Warn(fmt.Sprintf("external port assigned %d changed to %d",
|
return fmt.Errorf("%w: %d changed to %d",
|
||||||
p.portForwarded, assignedExternalPort))
|
ErrExternalPortChanged, p.portForwarded, assignedExternalPort)
|
||||||
p.portForwarded = assignedExternalPort
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user