]> git.saurik.com Git - apt.git/commit
https: Quote path in URL before passing it to curl
authorJulian Andres Klode <jak@debian.org>
Thu, 29 Dec 2016 13:16:07 +0000 (14:16 +0100)
committerJulian Andres Klode <jak@debian.org>
Tue, 17 Jan 2017 14:46:07 +0000 (15:46 +0100)
commit438b1d78b4c33d0a97406f0a7071e3c413dc0aa3
tree6212acec125d84898354d1640da3aeb661385713
parent8793e043c249ae5e0ce44027a3d353b01c002737
https: Quote path in URL before passing it to curl

Curl requires URLs to be urlencoded. We are however giving it
undecoded URLs. This causes it go completely nuts if there is
a space in the URI, producing requests like:

    GET /a file HTTP/1.1

which the servers then interpret as a GET request for "/a" with
HTTP version "file" or some other non-sense.

This works around the issue by encoding the path component of
the URL. I'm not sure if we should encode other parts of the URL
as well, this one seems to do the trick for the actual issue at
hand.

A more correct fix is to avoid the dequoting and (re-)quoting
of URLs when a redirect occurs / a new request is sent. That's
been on the radar for probably a year or two now, but nobody
bothered implementing that yet.

LP: #1651923
(cherry picked from commit 994515e689dcc5f963f5fed58284831750a5da03)
methods/https.cc
test/integration/test-ubuntu-bug-1651923-requote-https-uri [new file with mode: 0755]