From 02a92b7617bfaf9d3bbe9992ec578fbea1cd15ab Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Sat, 27 Oct 2018 13:51:07 -0400 Subject: plumbing: transport/http, Add missing host/port on redirect. Fixes #820 Signed-off-by: Dave Henderson --- plumbing/transport/http/common.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'plumbing/transport/http/common.go') diff --git a/plumbing/transport/http/common.go b/plumbing/transport/http/common.go index c034846..2909a06 100644 --- a/plumbing/transport/http/common.go +++ b/plumbing/transport/http/common.go @@ -4,6 +4,7 @@ package http import ( "bytes" "fmt" + "net" "net/http" "strconv" "strings" @@ -151,6 +152,18 @@ func (s *session) ModifyEndpointIfRedirect(res *http.Response) { return } + h, p, err := net.SplitHostPort(r.URL.Host) + if err != nil { + h = r.URL.Host + } + if p != "" { + port, err := strconv.Atoi(p) + if err == nil { + s.endpoint.Port = port + } + } + s.endpoint.Host = h + s.endpoint.Protocol = r.URL.Scheme s.endpoint.Path = r.URL.Path[:len(r.URL.Path)-len(infoRefsPath)] } -- cgit