From 5174a876efefbc047f631d9b635b75a8207d9d04 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 27 Jan 2022 16:59:42 -0700 Subject: [PATCH] maybe cookies are lowkey one header but delimited --- broker/broker.go | 15 +++++++++++---- broker/broker_test.go | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/broker/broker.go b/broker/broker.go index f9748c1..6b36019 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -42,9 +42,14 @@ func _do(db storage.DB, r *http.Request) (*http.Response, error) { logtr.Errorf("failed to get cookies: %v", err) } else { logtr.Verbosef("got cookies for %s: %+v", cookieJarKey, cookies) + cookieV := strings.Join(r.Header["Cookie"], "; ") for _, cookie := range cookies { - r.Header.Add("Cookie", cookie) + if len(cookieV) > 0 { + cookieV += "; " + } + cookieV += cookie } + r.Header.Set("Cookie", cookieV) } logtr.Verbosef("_do: %+v", r) resp, err := client.Do(r) @@ -75,13 +80,15 @@ func setCookies(db storage.DB, host string, resp *http.Response) error { continue } name := strings.Split(value, "=")[0] + value := strings.Split(value, ";")[0] nameValues = append(nameValues, [2]string{name, value}) } - for _, value := range resp.Header["Set-Cookie"] { - if len(value) == 0 { + for _, cookie := range resp.Header["Set-Cookie"] { + if len(cookie) == 0 { continue } - name := strings.Split(value, "=")[0] + name := strings.Split(cookie, "=")[0] + value := strings.Split(cookie, ";")[0] found := false for i := range nameValues { if nameValues[i][0] == name { diff --git a/broker/broker_test.go b/broker/broker_test.go index 3474b9a..3897bb8 100644 --- a/broker/broker_test.go +++ b/broker/broker_test.go @@ -32,9 +32,9 @@ func TestDoCookies(t *testing.T) { if calls != 1 { if !strings.Contains(fmt.Sprint(r.Header["Cookie"]), "name=value"+strconv.Itoa(calls-1)) { w.WriteHeader(http.StatusBadRequest) - t.Error("cookie not set as latest") + t.Error("cookie not set as latest: " + fmt.Sprint(r.Header["Cookie"])) } - if !strings.Contains(fmt.Sprint(r.Header["Cookie"]), "Expires") { + if strings.Contains(fmt.Sprint(r.Header["Cookie"]), "Expires") { w.WriteHeader(http.StatusBadRequest) t.Error("cookie not expiration: ", r.Header["Cookie"]) }