From 66fa4fc8b9feb7f636955e630977b8862c0862aa Mon Sep 17 00:00:00 2001 From: Guilherme Rezende Date: Mon, 4 Sep 2017 09:28:27 -0300 Subject: [PATCH] net/http: use canonicalAddr on shouldCopyHeaderOnRedirect Change-Id: Ic3f7f575d3640706adb7d64545ed8027add6c58f Reviewed-on: https://go-review.googlesource.com/61350 Run-TryBot: Tom Bergan Reviewed-by: Tom Bergan --- src/net/http/client.go | 12 ++---------- src/net/http/client_test.go | 8 ++++++-- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/net/http/client.go b/src/net/http/client.go index 4c9084ae51..25cd5739fe 100644 --- a/src/net/http/client.go +++ b/src/net/http/client.go @@ -843,16 +843,8 @@ func shouldCopyHeaderOnRedirect(headerKey string, initial, dest *url.URL) bool { // directly, we don't know their scope, so we assume // it's for *.domain.com. - // TODO(bradfitz): once issue 16142 is fixed, make - // this code use those URL accessors, and consider - // "http://foo.com" and "http://foo.com:80" as - // equivalent? - - // TODO(bradfitz): better hostname canonicalization, - // at least once we figure out IDNA/Punycode (issue - // 13835). - ihost := strings.ToLower(initial.Host) - dhost := strings.ToLower(dest.Host) + ihost := canonicalAddr(initial) + dhost := canonicalAddr(dest) return isDomainOrSubdomain(dhost, ihost) } // All other headers are copied: diff --git a/src/net/http/client_test.go b/src/net/http/client_test.go index b9a1c31e43..7db74dd4cb 100644 --- a/src/net/http/client_test.go +++ b/src/net/http/client_test.go @@ -1599,8 +1599,12 @@ func TestShouldCopyHeaderOnRedirect(t *testing.T) { {"www-authenticate", "http://foo.com/", "http://foo.com/", true}, {"www-authenticate", "http://foo.com/", "http://sub.foo.com/", true}, {"www-authenticate", "http://foo.com/", "http://notfoo.com/", false}, - // TODO(bradfitz): make this test work, once issue 16142 is fixed: - // {"www-authenticate", "http://foo.com:80/", "http://foo.com/", true}, + {"www-authenticate", "http://foo.com/", "https://foo.com/", false}, + {"www-authenticate", "http://foo.com:80/", "http://foo.com/", true}, + {"www-authenticate", "http://foo.com:80/", "http://sub.foo.com/", true}, + {"www-authenticate", "http://foo.com:443/", "https://foo.com/", true}, + {"www-authenticate", "http://foo.com:443/", "https://sub.foo.com/", true}, + {"www-authenticate", "http://foo.com:1234/", "http://foo.com/", false}, } for i, tt := range tests { u0, err := url.Parse(tt.initialURL) -- 2.48.1