From: Brad Fitzpatrick Date: Wed, 12 Dec 2012 20:23:01 +0000 (-0800) Subject: net/http: return nicer error when Client request Host is blank X-Git-Tag: go1.1rc2~1648 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f85b94aa85e6dffca51979538a9b4f0d96a3a645;p=gostls13.git net/http: return nicer error when Client request Host is blank Update #4271 R=golang-dev, rsc CC=golang-dev https://golang.org/cl/6931052 --- diff --git a/src/pkg/net/http/transport.go b/src/pkg/net/http/transport.go index 7b4afeb8ef..1dd5cc5308 100644 --- a/src/pkg/net/http/transport.go +++ b/src/pkg/net/http/transport.go @@ -144,6 +144,9 @@ func (t *Transport) RoundTrip(req *Request) (resp *Response, err error) { } return rt.RoundTrip(req) } + if req.URL.Host == "" { + return nil, errors.New("http: no Host in request URL") + } treq := &transportRequest{Request: req} cm, err := t.connectMethodForRequest(treq) if err != nil { diff --git a/src/pkg/net/http/transport_test.go b/src/pkg/net/http/transport_test.go index f1d415888c..4647d20fb3 100644 --- a/src/pkg/net/http/transport_test.go +++ b/src/pkg/net/http/transport_test.go @@ -1062,6 +1062,20 @@ func TestTransportAltProto(t *testing.T) { } } +func TestTransportNoHost(t *testing.T) { + tr := &Transport{} + _, err := tr.RoundTrip(&Request{ + Header: make(Header), + URL: &url.URL{ + Scheme: "http", + }, + }) + want := "http: no Host in request URL" + if got := fmt.Sprint(err); got != want { + t.Errorf("error = %v; want %q", err, want) + } +} + var proxyFromEnvTests = []struct { env string wanturl string