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:
parent
866982aa3a
commit
829007d629
3 changed files with 14 additions and 2 deletions
|
@ -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
|
||||
_ ->
|
||||
|
|
|
@ -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
2
debian/changelog
vendored
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue