fix: ensure ipv4 is checked, not sometimes ipv6
See coop-cloud/organising#490
This commit is contained in:
parent
d11ad61efb
commit
bc9f9fee22
|
@ -7,11 +7,16 @@ import (
|
||||||
|
|
||||||
// EnsureIPv4 ensures that an ipv4 address is set for a domain name
|
// EnsureIPv4 ensures that an ipv4 address is set for a domain name
|
||||||
func EnsureIPv4(domainName string) (string, error) {
|
func EnsureIPv4(domainName string) (string, error) {
|
||||||
ipv4, err := net.ResolveIPAddr("ip", domainName)
|
ipv4, err := net.ResolveIPAddr("ip4", domainName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE(d1): e.g. when there is only an ipv6 record available
|
||||||
|
if ipv4 == nil {
|
||||||
|
return "", fmt.Errorf("unable to resolve ipv4 address for %s", domainName)
|
||||||
|
}
|
||||||
|
|
||||||
return ipv4.String(), nil
|
return ipv4.String(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ package dns
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"gotest.tools/v3/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEnsureDomainsResolveSameIPv4(t *testing.T) {
|
func TestEnsureDomainsResolveSameIPv4(t *testing.T) {
|
||||||
|
@ -36,3 +38,22 @@ func TestEnsureDomainsResolveSameIPv4(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEnsureIpv4(t *testing.T) {
|
||||||
|
domainName := "collabora.ostrom.collective.tools"
|
||||||
|
serverName := "ostrom.collective.tools"
|
||||||
|
|
||||||
|
for i := 0; i < 15; i++ {
|
||||||
|
domainIpv4, err := EnsureIPv4(domainName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
serverIpv4, err := EnsureIPv4(serverName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.Equal(t, domainIpv4, serverIpv4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue