Skip to content

Commit c79b95a

Browse files
committed
[fix] [#465] [#418] Revert PR for now
Temporarily revert commit 8810cd2 since it looks like that change might cause problems with some browser + server combos (e.g. Chrome + http-kit).
1 parent 8810cd2 commit c79b95a

File tree

1 file changed

+7
-33
lines changed

1 file changed

+7
-33
lines changed

src/taoensso/sente.cljc

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,6 @@
369369
(allow-origin? #{"http://site.com"} {:headers {"referer" "http://attacker.com/"}})
370370
(allow-origin? #{"http://site.com"} {:headers {"referer" "http://site.com.attacker.com/"}}))
371371

372-
(def ^:private sente-csrf-token-prefix "sente-csrf-token-")
373-
374372
(defn make-channel-socket-server!
375373
"Takes a web server adapter[1] and returns a map with keys:
376374
@@ -635,21 +633,6 @@
635633
;; undefined):
636634
nil)
637635

638-
sente-csrf-token-pred
639-
(fn [s]
640-
(when (str/starts-with? s sente-csrf-token-prefix)
641-
(subs s (count sente-csrf-token-prefix))))
642-
643-
ws-csrf-token
644-
(fn [ring-req]
645-
(let [headers (get ring-req :headers)]
646-
(when-let [ws? (= "websocket" (get headers "upgrade") )]
647-
(let [sec-websocket-protocol (get headers "sec-websocket-protocol")
648-
protocol-vals
649-
(when (string? sec-websocket-protocol)
650-
(str/split sec-websocket-protocol #", *"))]
651-
(enc/rsome sente-csrf-token-pred protocol-vals)))))
652-
653636
bad-csrf?
654637
(fn [ring-req]
655638
(if (nil? csrf-token-fn) ; Provides a way to disable CSRF check
@@ -659,8 +642,7 @@
659642
(or
660643
(get-in ring-req [:params :csrf-token])
661644
(get-in ring-req [:headers "x-csrf-token"])
662-
(get-in ring-req [:headers "x-xsrf-token"])
663-
(ws-csrf-token ring-req))]
645+
(get-in ring-req [:headers "x-xsrf-token"]))]
664646

665647
(not
666648
(enc/const-str=
@@ -1334,8 +1316,7 @@
13341316
(enc/oget @?node-npm-websocket_ "w3cwebsocket"))]
13351317

13361318
(delay
1337-
(let [protocols (get headers :sec-websocket-protocol)
1338-
socket (WebSocket. uri-str protocols)]
1319+
(let [socket (WebSocket. uri-str)]
13391320
(doto socket
13401321
(aset "onerror" on-error)
13411322
(aset "onmessage" on-message) ; Nb receives both push & cb evs!
@@ -1588,20 +1569,13 @@
15881569
{:on-error on-error
15891570
:on-message on-message
15901571
:on-close on-close
1591-
:headers
1592-
(update headers :sec-websocket-protocol
1593-
(fn [x]
1594-
(let [csrf-token
1595-
(str sente-csrf-token-prefix
1596-
(get-client-csrf-token-str :dynamic (:csrf-token @state_)))]
1597-
(cond
1598-
(string? x) [x csrf-token]
1599-
(coll? x) (conj x csrf-token)
1600-
:else csrf-token))))
1601-
1572+
:headers headers
16021573
:uri-str
16031574
(enc/merge-url-with-query-string url
1604-
(assoc params :client-id client-id))}))
1575+
(merge params ; 1st (don't clobber impl.):
1576+
{:client-id client-id
1577+
:csrf-token (get-client-csrf-token-str :dynamic
1578+
(:csrf-token @state_))}))}))
16051579

16061580
(catch #?(:clj Throwable :cljs :default) t
16071581
(timbre/errorf t "Error creating WebSocket client")

0 commit comments

Comments
 (0)