]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: return nicer error when Client request Host is blank
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 12 Dec 2012 20:23:01 +0000 (12:23 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 12 Dec 2012 20:23:01 +0000 (12:23 -0800)
Update #4271

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6931052

src/pkg/net/http/transport.go
src/pkg/net/http/transport_test.go

index 7b4afeb8efca88dfc7cf4896bdefb64e7340af60..1dd5cc53085f8248f49c9e0fcda312289f73f368 100644 (file)
@@ -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 {
index f1d415888ca870e407a9d519b2aa0fab88933c7a..4647d20fb3cf22e23494bfac74d3c71f04f5ae6e 100644 (file)
@@ -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