]> Cypherpunks repositories - gostls13.git/commitdiff
http: fix req.Cookie(name) with cookies in one header
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 20 Jun 2011 17:33:07 +0000 (10:33 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 20 Jun 2011 17:33:07 +0000 (10:33 -0700)
Fixes #1974

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

src/pkg/http/cookie.go
src/pkg/http/cookie_test.go

index 29c4ea7e9a1bc4aca67b25f67eba4701e6048ced..79c239b46e74471e46b3ea5e3eb0c351bfa53e9a 100644 (file)
@@ -173,7 +173,7 @@ func readCookies(h Header, filter string) []*Cookie {
        if !ok {
                return cookies
        }
-Lines:
+
        for _, line := range lines {
                parts := strings.Split(strings.TrimSpace(line), ";", -1)
                if len(parts) == 1 && parts[0] == "" {
@@ -194,7 +194,7 @@ Lines:
                                continue
                        }
                        if filter != "" && filter != name {
-                               continue Lines
+                               continue
                        }
                        val, success := parseCookieValue(val)
                        if !success {
index 9aad167e613a7f8a827a6ff94f35eddb73a6a78a..d7aeda0be175b6cd7b0a48f2d165549807db7b15 100644 (file)
@@ -171,6 +171,21 @@ var readCookiesTests = []struct {
                        &Cookie{Name: "c2", Value: "v2"},
                },
        },
+       {
+               Header{"Cookie": {"Cookie-1=v$1; c2=v2"}},
+               "",
+               []*Cookie{
+                       &Cookie{Name: "Cookie-1", Value: "v$1"},
+                       &Cookie{Name: "c2", Value: "v2"},
+               },
+       },
+       {
+               Header{"Cookie": {"Cookie-1=v$1; c2=v2"}},
+               "c2",
+               []*Cookie{
+                       &Cookie{Name: "c2", Value: "v2"},
+               },
+       },
 }
 
 func TestReadCookies(t *testing.T) {
@@ -178,7 +193,7 @@ func TestReadCookies(t *testing.T) {
                for n := 0; n < 2; n++ { // to verify readCookies doesn't mutate its input                                                  
                        c := readCookies(tt.Header, tt.Filter)
                        if !reflect.DeepEqual(c, tt.Cookies) {
-                               t.Errorf("#%d readCookies: have\n%s\nwant\n%s\n", i, toJSON(c), toJSON(tt.Cookies))
+                               t.Errorf("#%d readCookies:\nhave: %s\nwant: %s\n", i, toJSON(c), toJSON(tt.Cookies))
                                continue
                        }
                }