diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2002-07-07 16:51:37 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2002-07-07 16:51:37 (GMT) |
commit | 6d0a4c79cff39f45b6990b3dcb6bd653950a8014 (patch) | |
tree | f66c8c15fad61a6750e74eb39316fc38a776bef1 /Lib/test/test_httplib.py | |
parent | 803526b9e222077c5f9391d7e7348156eb7ba7da (diff) | |
download | cpython-6d0a4c79cff39f45b6990b3dcb6bd653950a8014.zip cpython-6d0a4c79cff39f45b6990b3dcb6bd653950a8014.tar.gz cpython-6d0a4c79cff39f45b6990b3dcb6bd653950a8014.tar.bz2 |
Fix for SF bug #432621: httplib: multiple Set-Cookie headers
If multiple header fields with the same name occur, they are combined
according to the rules in RFC 2616 sec 4.2:
Appending each subsequent field-value to the first, each separated by
a comma. The order in which header fields with the same field-name are
received is significant to the interpretation of the combined field
value.
Diffstat (limited to 'Lib/test/test_httplib.py')
-rw-r--r-- | Lib/test/test_httplib.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 39b1e13..1edb062 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -15,14 +15,14 @@ class FakeSocket: body = "HTTP/1.1 200 Ok\r\n\r\nText" sock = FakeSocket(body) -resp = httplib.HTTPResponse(sock,1) +resp = httplib.HTTPResponse(sock, 1) resp._begin() print resp.read() resp.close() body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText" sock = FakeSocket(body) -resp = httplib.HTTPResponse(sock,1) +resp = httplib.HTTPResponse(sock, 1) try: resp._begin() except httplib.BadStatusLine: @@ -39,3 +39,21 @@ for hp in ("www.python.org:abc", "www.python.org:"): print "InvalidURL raised as expected" else: print "Expect InvalidURL" + +# test response with multiple message headers with the same field name. +text = ('HTTP/1.1 200 OK\r\n' + 'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n' + 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";' + ' Path="/acme"\r\n' + '\r\n' + 'No body\r\n') +hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"' + ', ' + 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"') +s = FakeSocket(text) +r = httplib.HTTPResponse(s, 1) +r._begin() +cookies = r.getheader("Set-Cookie") +if cookies != hdr: + raise AssertionError, "multiple headers not combined properly" + |