summaryrefslogtreecommitdiff
path: root/swift/common/bufferedhttp.py
diff options
context:
space:
mode:
Diffstat (limited to 'swift/common/bufferedhttp.py')
-rw-r--r--swift/common/bufferedhttp.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/swift/common/bufferedhttp.py b/swift/common/bufferedhttp.py
index 129460913..ecf9b155e 100644
--- a/swift/common/bufferedhttp.py
+++ b/swift/common/bufferedhttp.py
@@ -35,7 +35,7 @@ import socket
import eventlet
from eventlet.green.httplib import CONTINUE, HTTPConnection, HTTPMessage, \
HTTPResponse, HTTPSConnection, _UNKNOWN
-from six.moves.urllib.parse import quote
+from six.moves.urllib.parse import quote, parse_qsl, urlencode
import six
if six.PY2:
@@ -240,6 +240,15 @@ def http_connect_raw(ipaddr, port, method, path, headers=None,
else:
conn = BufferedHTTPConnection('%s:%s' % (ipaddr, port))
if query_string:
+ # Round trip to ensure proper quoting
+ if six.PY2:
+ query_string = urlencode(parse_qsl(
+ query_string, keep_blank_values=True))
+ else:
+ query_string = urlencode(
+ parse_qsl(query_string, keep_blank_values=True,
+ encoding='latin1'),
+ encoding='latin1')
path += '?' + query_string
conn.path = path
conn.putrequest(method, path, skip_host=(headers and 'Host' in headers))