]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/http/parsers/parsers.factor
http.parsers: Allow a lot more characters in the cookie key.
[factor.git] / basis / http / parsers / parsers.factor
index df6ccbede9861696e45443f39d34121ad42de206..dab80d9f211bca4f2974f7dd5127ec45cd61227b 100644 (file)
@@ -11,9 +11,15 @@ IN: http.parsers
 : except-these ( quots -- parser )
     [ 1|| ] curry except ; inline
 
+: cookie-key-disallow? ( ch -- ? )
+    " \t,;=" member? ;
+
 : tspecial? ( ch -- ? )
     "()<>@,;:\\\"/[]?={} \t" member? ;
 
+: cookie-key-parser ( -- parser )
+    { [ control? ] [ cookie-key-disallow? ] } except-these repeat1 ;
+
 : token-parser ( -- parser )
     { [ control? ] [ tspecial? ] } except-these repeat1 ;
 
@@ -144,7 +150,7 @@ PEG: parse-header-line ( string -- pair )
     2choice case-sensitive ;
 
 : attr-parser ( -- parser )
-    token-parser case-sensitive ;
+    cookie-key-parser case-sensitive ;
 
 : av-pair-parser ( -- parser )
     [