Commit d0283ab6 authored by Joakim Sernbrant's avatar Joakim Sernbrant Committed by Brad Fitzpatrick

net/http: only call client SetCookie when needed

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6968049
parent ff5d47eb
...@@ -98,7 +98,9 @@ func (c *Client) send(req *Request) (*Response, error) { ...@@ -98,7 +98,9 @@ func (c *Client) send(req *Request) (*Response, error) {
return nil, err return nil, err
} }
if c.Jar != nil { 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 return resp, err
} }
......
...@@ -418,6 +418,9 @@ func matchReturnedCookies(t *testing.T, expected, given []*Cookie) { ...@@ -418,6 +418,9 @@ func matchReturnedCookies(t *testing.T, expected, given []*Cookie) {
func TestJarCalls(t *testing.T) { func TestJarCalls(t *testing.T) {
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
pathSuffix := r.RequestURI[1:] pathSuffix := r.RequestURI[1:]
if r.RequestURI == "/nosetcookie" {
return // dont set cookies for this path
}
SetCookie(w, &Cookie{Name: "name" + pathSuffix, Value: "val" + pathSuffix}) SetCookie(w, &Cookie{Name: "name" + pathSuffix, Value: "val" + pathSuffix})
if r.RequestURI == "/" { if r.RequestURI == "/" {
Redirect(w, r, "http://secondhost.fake/secondpath", 302) Redirect(w, r, "http://secondhost.fake/secondpath", 302)
...@@ -437,11 +440,16 @@ func TestJarCalls(t *testing.T) { ...@@ -437,11 +440,16 @@ func TestJarCalls(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
_, err = c.Get("http://firsthost.fake/nosetcookie")
if err != nil {
t.Fatal(err)
}
got := jar.log.String() got := jar.log.String()
want := `Cookies("http://firsthost.fake/") want := `Cookies("http://firsthost.fake/")
SetCookie("http://firsthost.fake/", [name=val]) SetCookie("http://firsthost.fake/", [name=val])
Cookies("http://secondhost.fake/secondpath") Cookies("http://secondhost.fake/secondpath")
SetCookie("http://secondhost.fake/secondpath", [namesecondpath=valsecondpath]) SetCookie("http://secondhost.fake/secondpath", [namesecondpath=valsecondpath])
Cookies("http://firsthost.fake/nosetcookie")
` `
if got != want { if got != want {
t.Errorf("Got Jar calls:\n%s\nWant:\n%s", got, want) t.Errorf("Got Jar calls:\n%s\nWant:\n%s", got, want)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment