diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2002-07-07 16:51:37 +0000 |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2002-07-07 16:51:37 +0000 |
commit | 287834fef7d917e9a3f00d1850174ac5082da94b (patch) | |
tree | d7a5db80d64cd8a125aed87b6a10ac27465151f4 /Lib/test/test_httplib.py | |
parent | 176543b3ff681b1439637c6f8d37fb816c7ef2b8 (diff) | |
download | cpython-287834fef7d917e9a3f00d1850174ac5082da94b.tar.gz |
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 39b1e13f80..1edb062784 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" + |