diff --git a/internal/provider/utils/connection.go b/internal/provider/utils/connection.go index 35a06d74..5761208c 100644 --- a/internal/provider/utils/connection.go +++ b/internal/provider/utils/connection.go @@ -2,6 +2,7 @@ package utils import ( "fmt" + "slices" "github.com/qdm12/gluetun/internal/configuration/settings" "github.com/qdm12/gluetun/internal/constants/vpn" @@ -75,5 +76,18 @@ func GetConnection(provider string, } } + slices.SortStableFunc(connections, func(a, b models.Connection) int { + aIPv6 := a.IP.Is6() + bIPv6 := b.IP.Is6() + switch { + case aIPv6 && !bIPv6: + return -1 + case !aIPv6 && bIPv6: + return 1 + default: + return 0 + } + }) + return pickConnection(connections, selection, connPicker) } diff --git a/internal/provider/utils/connection_test.go b/internal/provider/utils/connection_test.go index f9f015bc..144f1325 100644 --- a/internal/provider/utils/connection_test.go +++ b/internal/provider/utils/connection_test.go @@ -124,8 +124,8 @@ func Test_GetConnection(t *testing.T) { VPN: vpn.OpenVPN, UDP: true, IPs: []netip.Addr{ - netip.IPv6Unspecified(), netip.AddrFrom4([4]byte{1, 1, 1, 1}), + netip.IPv6Unspecified(), }, }, },