From 9770773fd6cca5a074ce438a977be63e0f956954 Mon Sep 17 00:00:00 2001 From: Ryan Martin Date: Sat, 29 Jun 2024 14:59:35 +0700 Subject: [PATCH] feat: support http2 request headers that contains multiple cookie fields --- .gitignore | 2 ++ src/ring/adapter/jetty9/common.clj | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e02931e..bc547c7 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ pom.xml.asc .idea/ *.iml /.nrepl-port +/.clj-kondo +/.lsp diff --git a/src/ring/adapter/jetty9/common.clj b/src/ring/adapter/jetty9/common.clj index 66d74d6..9dcecaa 100644 --- a/src/ring/adapter/jetty9/common.clj +++ b/src/ring/adapter/jetty9/common.clj @@ -21,10 +21,22 @@ [^HttpField header] [(.getLowerCaseName header) (.getValue header)]) +(defn- combine-headers + ([] {}) + ([result] result) + ([result [k v]] + (if (and (= "cookie" k) (get result k)) + (update result k #(str % "; " v)) + (assoc result k v)))) + (defn get-headers "Creates a name/value map of all the request headers." [^Request request] - (into {} (map header-kv*) (.getHeaders request))) + (transduce + (map header-kv*) + combine-headers + {} + (.getHeaders request))) (defonce noop (constantly nil))