In Mailman, I use a version of Cookie.py written by Timothy dated from 1998. I'm now trying to see if I can get rid of my independent copy and just use Cookie.py in the Python 2.x standard library. I've hit a snag; in Mailman's copy, it is legal to have a `:' in the key name, but in Python's Cookie.py it isn't: -------------------- snip snip -------------------- % python Python 2.1.1 (#1, Aug 31 2001, 17:07:00) [GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2 Type "copyright", "credits" or "license" for more information. >>> import Cookie >>> c = Cookie.Cookie() >>> c['foo:bar'] = 'hello' Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/local/lib/python2.1/Cookie.py", line 583, in __setitem__ self.__set(key, rval, cval) File "/usr/local/lib/python2.1/Cookie.py", line 576, in __set M.set(key, real_value, coded_value) File "/usr/local/lib/python2.1/Cookie.py", line 456, in set raise CookieError("Illegal key value: %s" % key) Cookie.CookieError: Illegal key value: foo:bar >>> % PYTHONPATH=/path/to/mailman/misc python Python 2.1.1 (#1, Aug 31 2001, 17:07:00) [GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2 Type "copyright", "credits" or "license" for more information. >>> import Cookie >>> c = Cookie.Cookie() >>> c['foo:bar'] = 'hello' >>> print c Set-Cookie: foo:bar=hello; >>> -------------------- snip snip -------------------- I don't see any reason why `:' shouldn't be allowed in Set-Cookie: value, but maybe I'm missing something in the RFCs. This patch fixes the problem but perhaps not in the right way. Comments? -Barry -------------------- snip snip -------------------- Index: Cookie.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/Cookie.py,v retrieving revision 1.11 diff -u -r1.11 Cookie.py --- Cookie.py 2001/08/02 07:15:29 1.11 +++ Cookie.py 2001/10/03 01:38:39 @@ -249,7 +249,7 @@ # _LegalChars is the list of chars which don't require "'s # _Translator hash-table for fast quoting # -_LegalChars = string.ascii_letters + string.digits + "!#$%&'*+-.^_`|~" +_LegalChars = string.ascii_letters + string.digits + "!#$%&'*+-.^_`|~:" _Translator = { '\000' : '\\000', '\001' : '\\001', '\002' : '\\002', '\003' : '\\003', '\004' : '\\004', '\005' : '\\005',
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4