This was previously done just for py3 compatibility, but following https://github.com/python/cpython/commit/bb8071a our stable gates are
all broken -- apparently, they're running a 2.7 pre-release?
(cherry picked from commit c0ae48ba9aafb0b91869ea3bae8da07a32088777)
(cherry picked from commit 2b4d58952cae8b174fb60529d5284c1d328e9287)
---
bufferedhttp: ensure query params are properly quoted
Recent versions of py27 [1] have begun raising InvalidURL if you try to
include non-ASCII characters in the request path. This was observed
recently in the periodic checks of stable/ocata and stable/pike. In
particular, we would spin up some in-process servers in
test.unit.proxy.test_server.TestSocketObjectVersions and do a container
listing with a prefix param that included raw (unquoted) UTF-8. This
query string would pass unmolested through the proxy, tripping the
InvalidURL error when bufferedhttp called putrequest.
More recent versions of Swift would not exhibit this particular failure,
as the listing_formats middleware would force a decoding/re-encoding of
the query string for account and container requests. However, object
requests with errant query strings would likely be able to trip the same
error.
Swift on py3 should not exhibit this behavior, as we so
thoroughly re-write the request line to avoid hitting https://bugs.python.org/issue33973.
Now, always parse and re-encode the query string in bufferedhttp. This
prevents any errors on object requests and cleans up any callers that
might use bufferedhttp directly.
Reviewed: https:/ /review. opendev. org/683757 /git.openstack. org/cgit/ openstack/ swift/commit/ ?id=53a6386791e 3237e2a95db3a1a 86a046b11e0664
Committed: https:/
Submitter: Zuul
Branch: stable/ocata
commit 53a6386791e3237 e2a95db3a1a86a0 46b11e0664
Author: Tim Burke <email address hidden>
Date: Tue Mar 12 13:36:21 2019 -0700
Fix stable gate
This is a combination of 2 commits.
---
py2/3: Stop using stdlib's putrequest(); it only does ASCII
Note that this only affects the functest client.
See also: https:/ /bugs.python. org/issue36274 and /bugs.python. org/issue38216
https:/
This was previously done just for py3 compatibility, but following /github. com/python/ cpython/ commit/ bb8071a our stable gates are
https:/
all broken -- apparently, they're running a 2.7 pre-release?
(cherry picked from commit c0ae48ba9aafb0b 91869ea3bae8da0 7a32088777) 74fb60529d5284c 1d328e9287)
(cherry picked from commit 2b4d58952cae8b1
---
bufferedhttp: ensure query params are properly quoted
Recent versions of py27 [1] have begun raising InvalidURL if you try to unit.proxy. test_server. TestSocketObjec tVersions and do a container
include non-ASCII characters in the request path. This was observed
recently in the periodic checks of stable/ocata and stable/pike. In
particular, we would spin up some in-process servers in
test.
listing with a prefix param that included raw (unquoted) UTF-8. This
query string would pass unmolested through the proxy, tripping the
InvalidURL error when bufferedhttp called putrequest.
More recent versions of Swift would not exhibit this particular failure, re-encoding of
as the listing_formats middleware would force a decoding/
the query string for account and container requests. However, object
requests with errant query strings would likely be able to trip the same
error.
Swift on py3 should not exhibit this behavior, as we so /bugs.python. org/issue33973.
thoroughly re-write the request line to avoid hitting
https:/
Now, always parse and re-encode the query string in bufferedhttp. This
prevents any errors on object requests and cleans up any callers that
might use bufferedhttp directly.
[1] Anything after https:/ /github. com/python/ cpython/ commit/ bb8071a; /bugs.python. org/issue30458
see https:/
Closes-Bug: 1843816 d8dd5784ce329d7 cb4fbaf700d f3b620fb196fa56 7ce7575d522 33e9b5bfbcaafa4 b45b592d34) 516fdf579ac084c b954ea6b06)
Related-Change: Id3ce37aa0402e2
Related-Change: Ie648f5c04d4415
(cherry picked from commit 49f62f6ab7fd1b8
(cherry picked from commit 9cc6d4138946034
---
Change-Id: I4eafc5f057df8a 3c15560ace255d0 5602db56ef6