From: Joakim Sernbrant Date: Thu, 20 Dec 2012 00:24:38 +0000 (-0800) Subject: net/http: only call client SetCookie when needed X-Git-Tag: go1.1rc2~1583 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d0283ab62ab692ee4c28e31d85740a5804b5540a;p=gostls13.git net/http: only call client SetCookie when needed R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/6968049 --- diff --git a/src/pkg/net/http/client.go b/src/pkg/net/http/client.go index d0e50f6082..5ee0804c7d 100644 --- a/src/pkg/net/http/client.go +++ b/src/pkg/net/http/client.go @@ -98,7 +98,9 @@ func (c *Client) send(req *Request) (*Response, error) { return nil, err } if c.Jar != nil { - c.Jar.SetCookies(req.URL, resp.Cookies()) + if rc := resp.Cookies(); len(rc) > 0 { + c.Jar.SetCookies(req.URL, rc) + } } return resp, err } diff --git a/src/pkg/net/http/client_test.go b/src/pkg/net/http/client_test.go index c2a836c948..9514a4b961 100644 --- a/src/pkg/net/http/client_test.go +++ b/src/pkg/net/http/client_test.go @@ -418,6 +418,9 @@ func matchReturnedCookies(t *testing.T, expected, given []*Cookie) { func TestJarCalls(t *testing.T) { ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { pathSuffix := r.RequestURI[1:] + if r.RequestURI == "/nosetcookie" { + return // dont set cookies for this path + } SetCookie(w, &Cookie{Name: "name" + pathSuffix, Value: "val" + pathSuffix}) if r.RequestURI == "/" { Redirect(w, r, "http://secondhost.fake/secondpath", 302) @@ -437,11 +440,16 @@ func TestJarCalls(t *testing.T) { if err != nil { t.Fatal(err) } + _, err = c.Get("http://firsthost.fake/nosetcookie") + if err != nil { + t.Fatal(err) + } got := jar.log.String() want := `Cookies("http://firsthost.fake/") SetCookie("http://firsthost.fake/", [name=val]) Cookies("http://secondhost.fake/secondpath") SetCookie("http://secondhost.fake/secondpath", [namesecondpath=valsecondpath]) +Cookies("http://firsthost.fake/nosetcookie") ` if got != want { t.Errorf("Got Jar calls:\n%s\nWant:\n%s", got, want)