From ebf17aa14a33eb2f5b65c2b84c62e043cfbdef9b Mon Sep 17 00:00:00 2001 From: Yusuf Simonson Date: Wed, 15 Aug 2012 17:54:56 -0700 Subject: [PATCH] Do not remove empty GET/POST parameters --- tornado/httpserver.py | 7 +------ tornado/test/httpserver_test.py | 5 +++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tornado/httpserver.py b/tornado/httpserver.py index 952a6a268..67b101576 100644 --- a/tornado/httpserver.py +++ b/tornado/httpserver.py @@ -382,12 +382,7 @@ class HTTPRequest(object): self._finish_time = None self.path, sep, self.query = uri.partition('?') - arguments = parse_qs_bytes(self.query) - self.arguments = {} - for name, values in arguments.iteritems(): - values = [v for v in values if v] - if values: - self.arguments[name] = values + self.arguments = parse_qs_bytes(self.query, keep_blank_values=True) def supports_http_1_1(self): """Returns True if this request supports HTTP/1.1 semantics""" diff --git a/tornado/test/httpserver_test.py b/tornado/test/httpserver_test.py index e9078da28..76242e806 100644 --- a/tornado/test/httpserver_test.py +++ b/tornado/test/httpserver_test.py @@ -300,6 +300,11 @@ class HTTPServerTest(AsyncHTTPTestCase, LogTrapTestCase): data = json_decode(response.body) self.assertEqual(data, {u"foo": [u"\u00e9"]}) + def test_empty_query_string(self): + response = self.fetch("/echo?foo=&foo=") + data = json_decode(response.body) + self.assertEqual(data, {u"foo": [u"", u""]}) + def test_types(self): headers = {"Cookie": "foo=bar"} response = self.fetch("/typecheck?foo=bar", headers=headers) -- 2.47.2