Revision: 4540 Author: edi URL: http://bknr.net/trac/changeset/4540
Quoted cookie values
U trunk/thirdparty/chunga/CHANGELOG.txt U trunk/thirdparty/chunga/read.lisp
Modified: trunk/thirdparty/chunga/CHANGELOG.txt =================================================================== --- trunk/thirdparty/chunga/CHANGELOG.txt 2010-05-19 15:31:48 UTC (rev 4539) +++ trunk/thirdparty/chunga/CHANGELOG.txt 2010-05-19 15:37:07 UTC (rev 4540) @@ -1,3 +1,5 @@ +Read quoted cookie values (Red Daly) + Version 1.1.0 2009-12-01 Exported TOKEN-CHAR-P
Modified: trunk/thirdparty/chunga/read.lisp =================================================================== --- trunk/thirdparty/chunga/read.lisp 2010-05-19 15:31:48 UTC (rev 4539) +++ trunk/thirdparty/chunga/read.lisp 2010-05-19 15:37:07 UTC (rev 4540) @@ -246,12 +246,16 @@ (defun read-cookie-value (stream &key (separators ";")) "Reads a cookie parameter value from STREAM which is returned as a string. Simply reads until a semicolon is seen (or an element of -SEPARATORS)." - (trim-whitespace - (with-output-to-string (out) - (loop for char = (peek-char* stream nil) - until (or (null char) (find char separators :test #'char=)) - do (write-char (read-char* stream) out))))) +SEPARATORS). Also reads quoted strings if the first non-whitespace +character is a quotation mark (as in RFC 2109) at +http://www.w3.org/Protocols/rfc2109/rfc2109" + (if (char= #" (peek-char* stream)) + (read-quoted-string stream) + (trim-whitespace + (with-output-to-string (out) + (loop for char = (peek-char* stream nil) + until (or (null char) (find char separators :test #'char=)) + do (write-char (read-char* stream) out))))))
(defun read-name-value-pair (stream &key (value-required-p t) cookie-syntax) "Reads a typical (in RFC 2616) name/value or attribute/value