diff options
author | Christopher Speller <crspeller@gmail.com> | 2017-11-13 09:09:58 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-13 09:09:58 -0800 |
commit | 1329aa51b605cb54ba9aae3a82a0a87b881fb7b3 (patch) | |
tree | 93cbf354ab894a560fc2cef8ef685d681b4ff889 /vendor/github.com/miekg/dns/dnsutil | |
parent | 7304a61ef597970be3031b14e652fb3a4df44304 (diff) | |
download | chat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.tar.gz chat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.tar.bz2 chat-1329aa51b605cb54ba9aae3a82a0a87b881fb7b3.zip |
Updating server dependancies. (#7816)
Diffstat (limited to 'vendor/github.com/miekg/dns/dnsutil')
-rw-r--r-- | vendor/github.com/miekg/dns/dnsutil/util.go | 18 | ||||
-rw-r--r-- | vendor/github.com/miekg/dns/dnsutil/util_test.go | 22 |
2 files changed, 22 insertions, 18 deletions
diff --git a/vendor/github.com/miekg/dns/dnsutil/util.go b/vendor/github.com/miekg/dns/dnsutil/util.go index c8c6af7b3..76ac4de66 100644 --- a/vendor/github.com/miekg/dns/dnsutil/util.go +++ b/vendor/github.com/miekg/dns/dnsutil/util.go @@ -20,7 +20,9 @@ import ( func AddOrigin(s, origin string) string { // ("foo.", "origin.") -> "foo." (already a FQDN) // ("foo", "origin.") -> "foo.origin." - // ("foo"), "origin" -> "foo.origin" + // ("foo", "origin") -> "foo.origin" + // ("foo", ".") -> "foo." (Same as dns.Fqdn()) + // ("foo.", ".") -> "foo." (Same as dns.Fqdn()) // ("@", "origin.") -> "origin." (@ represents the apex (bare) domain) // ("", "origin.") -> "origin." (not obvious) // ("foo", "") -> "foo" (not obvious) @@ -34,32 +36,34 @@ func AddOrigin(s, origin string) string { if s == "@" || len(s) == 0 { return origin // Expand apex. } - if origin == "." { - return s + origin // AddOrigin(s, ".") is an expensive way to add a ".". + return dns.Fqdn(s) } return s + "." + origin // The simple case. } // TrimDomainName trims origin from s if s is a subdomain. -// This function will never return "", but returns "@" instead (@ represents the apex (bare) domain). +// This function will never return "", but returns "@" instead (@ represents the apex domain). func TrimDomainName(s, origin string) string { // An apex (bare) domain is always returned as "@". // If the return value ends in a ".", the domain was not the suffix. // origin can end in "." or not. Either way the results should be the same. if len(s) == 0 { - return "@" // Return the apex (@) rather than "". + return "@" } // Someone is using TrimDomainName(s, ".") to remove a dot if it exists. if origin == "." { return strings.TrimSuffix(s, origin) } - // Dude, you aren't even if the right subdomain! + original := s + s = dns.Fqdn(s) + origin = dns.Fqdn(origin) + if !dns.IsSubDomain(origin, s) { - return s + return original } slabels := dns.Split(s) diff --git a/vendor/github.com/miekg/dns/dnsutil/util_test.go b/vendor/github.com/miekg/dns/dnsutil/util_test.go index 0f1ecec8e..6754789bc 100644 --- a/vendor/github.com/miekg/dns/dnsutil/util_test.go +++ b/vendor/github.com/miekg/dns/dnsutil/util_test.go @@ -10,6 +10,8 @@ func TestAddOrigin(t *testing.T) { {"@", "example.com.", "example.com."}, {"foo", "example.com.", "foo.example.com."}, {"foo.", "example.com.", "foo."}, + {"example.com", ".", "example.com."}, + {"example.com.", ".", "example.com."}, // Oddball tests: // In general origin should not be "" or "." but at least // these tests verify we don't crash and will keep results @@ -26,16 +28,15 @@ func TestAddOrigin(t *testing.T) { for _, test := range tests { actual := AddOrigin(test.e1, test.e2) if test.expected != actual { - t.Errorf("AddOrigin(%#v, %#v) expected %#v, go %#v\n", test.e1, test.e2, test.expected, actual) + t.Errorf("AddOrigin(%#v, %#v) expected %#v, got %#v\n", test.e1, test.e2, test.expected, actual) } } } func TestTrimDomainName(t *testing.T) { - // Basic tests. // Try trimming "example.com" and "example.com." from typical use cases. - var tests_examplecom = []struct{ experiment, expected string }{ + testsEx := []struct{ experiment, expected string }{ {"foo.example.com", "foo"}, {"foo.example.com.", "foo"}, {".foo.example.com", ".foo"}, @@ -51,10 +52,10 @@ func TestTrimDomainName(t *testing.T) { {".foo.ronco.com.", ".foo.ronco.com."}, } for _, dom := range []string{"example.com", "example.com."} { - for i, test := range tests_examplecom { + for i, test := range testsEx { actual := TrimDomainName(test.experiment, dom) if test.expected != actual { - t.Errorf("%d TrimDomainName(%#v, %#v): expected (%v) got (%v)\n", i, test.experiment, dom, test.expected, actual) + t.Errorf("%d TrimDomainName(%#v, %#v): expected %v, got %v\n", i, test.experiment, dom, test.expected, actual) } } } @@ -63,7 +64,7 @@ func TestTrimDomainName(t *testing.T) { // These test shouldn't be needed but I was weary of off-by-one errors. // In theory, these can't happen because there are no single-letter TLDs, // but it is good to exercize the code this way. - var tests = []struct{ experiment, expected string }{ + tests := []struct{ experiment, expected string }{ {"", "@"}, {".", "."}, {"a.b.c.d.e.f.", "a.b.c.d.e"}, @@ -105,7 +106,7 @@ func TestTrimDomainName(t *testing.T) { for i, test := range tests { actual := TrimDomainName(test.experiment, dom) if test.expected != actual { - t.Errorf("%d TrimDomainName(%#v, %#v): expected (%v) got (%v)\n", i, test.experiment, dom, test.expected, actual) + t.Errorf("%d TrimDomainName(%#v, %#v): expected %v, got %v\n", i, test.experiment, dom, test.expected, actual) } } } @@ -114,17 +115,16 @@ func TestTrimDomainName(t *testing.T) { // These test cases provide both origin, s, and the expected result. // If you find a bug in the while, this is probably the easiest place // to add it as a test case. - var tests_wild = []struct{ e1, e2, expected string }{ + var testsWild = []struct{ e1, e2, expected string }{ {"mathoverflow.net.", ".", "mathoverflow.net"}, {"mathoverflow.net", ".", "mathoverflow.net"}, {"", ".", "@"}, {"@", ".", "@"}, } - for i, test := range tests_wild { + for i, test := range testsWild { actual := TrimDomainName(test.e1, test.e2) if test.expected != actual { - t.Errorf("%d TrimDomainName(%#v, %#v): expected (%v) got (%v)\n", i, test.e1, test.e2, test.expected, actual) + t.Errorf("%d TrimDomainName(%#v, %#v): expected %v, got %v\n", i, test.e1, test.e2, test.expected, actual) } } - } |