From: Yusuf Simonson Date: Thu, 16 Aug 2012 00:54:56 +0000 (-0700) Subject: Do not remove empty GET/POST parameters X-Git-Tag: v3.0.0~272^2~16^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebf17aa;p=thirdparty%2Ftornado.git Do not remove empty GET/POST parameters --- 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)