Improve url parsing to handle some urls containing illegal [] characters in their paths.

Ie, "https://archive.org/download/zoom-2/Zoom - Release 2 (1996)(Active Software)[!].iso"
This commit is contained in:
Joey Hess 2015-06-14 13:39:44 -04:00
parent 866982aa3a
commit 829007d629
3 changed files with 14 additions and 2 deletions

View file

@ -139,7 +139,7 @@ startWeb relaxed optfile pathdepth s = go $ fromMaybe bad $ parseURI urlstring
where
(urlstring, downloader) = getDownloader s
bad = fromMaybe (error $ "bad url " ++ urlstring) $
parseURI $ escapeURIString isUnescapedInURI urlstring
Url.parseURIRelaxed $ urlstring
go url = case downloader of
QuviDownloader -> usequvi
_ ->

View file

@ -263,7 +263,17 @@ download' quiet url file uo = do
{- Allows for spaces and other stuff in urls, properly escaping them. -}
parseURIRelaxed :: URLString -> Maybe URI
parseURIRelaxed = parseURI . escapeURIString isAllowedInURI
parseURIRelaxed s = maybe (go escapemore) Just $ go isAllowedInURI
where
go f = parseURI $ escapeURIString f s
{- Some characters like '[' are allowed in eg, the address of
- an uri, but cannot appear unescaped elsewhere in the uri.
- If parsing fails with those characters unescaped, fall back
- to escaping them too.
-}
escapemore '[' = False
escapemore ']' = False
escapemore c = isAllowedInURI c
hAcceptEncoding :: CI.CI B.ByteString
hAcceptEncoding = "Accept-Encoding"

2
debian/changelog vendored
View file

@ -28,6 +28,8 @@ git-annex (5.20150529) UNRELEASED; urgency=medium
* Fix bug that prevented enumerating locally present objects in repos
tuned with annex.tune.objecthash1=true.
Fixes: unused, object count in info, unannex.
* Improve url parsing to handle some urls containing illegal []
characters in their paths.
-- Joey Hess <id@joeyh.name> Sat, 30 May 2015 02:07:18 -0400