Work around a bug in Network.URI's handling of bracketed ipv6 addresses.
This commit is contained in:
parent
f1fbe33cfe
commit
078a6fbd76
3 changed files with 37 additions and 3 deletions
18
GitRepo.hs
18
GitRepo.hs
|
@ -280,9 +280,21 @@ urlScheme :: Repo -> String
|
|||
urlScheme Repo { location = Url u } = uriScheme u
|
||||
urlScheme repo = assertUrl repo $ error "internal"
|
||||
|
||||
{- Work around a bug in the real uriRegName
|
||||
- <http://trac.haskell.org/network/ticket/40> -}
|
||||
uriRegName' :: URIAuth -> String
|
||||
uriRegName' a = fixup $ uriRegName a
|
||||
where
|
||||
fixup x@('[':rest)
|
||||
| rest !! len == ']' = take len rest
|
||||
| otherwise = x
|
||||
where
|
||||
len = (length rest) - 1
|
||||
fixup x = x
|
||||
|
||||
{- Hostname of an URL repo. -}
|
||||
urlHost :: Repo -> String
|
||||
urlHost = urlAuthPart uriRegName
|
||||
urlHost = urlAuthPart uriRegName'
|
||||
|
||||
{- Port of an URL repo, if it has a nonstandard one. -}
|
||||
urlPort :: Repo -> Maybe Integer
|
||||
|
@ -294,11 +306,11 @@ urlPort r =
|
|||
|
||||
{- Hostname of an URL repo, including any username (ie, "user@host") -}
|
||||
urlHostUser :: Repo -> String
|
||||
urlHostUser r = urlAuthPart uriUserInfo r ++ urlAuthPart uriRegName r
|
||||
urlHostUser r = urlAuthPart uriUserInfo r ++ urlAuthPart uriRegName' r
|
||||
|
||||
{- The full authority portion an URL repo. (ie, "user@host:port") -}
|
||||
urlAuthority :: Repo -> String
|
||||
urlAuthority Repo { location = Url u } = uriUserInfo a ++ uriRegName a ++ uriPort a
|
||||
urlAuthority Repo { location = Url u } = uriUserInfo a ++ uriRegName' a ++ uriPort a
|
||||
where
|
||||
a = fromMaybe (error $ "bad url " ++ show u) (uriAuthority u)
|
||||
urlAuthority repo = assertUrl repo $ error "internal"
|
||||
|
|
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -1,3 +1,9 @@
|
|||
git-annex (0.20110504) UNRELEASED; urgency=low
|
||||
|
||||
* Work around a bug in Network.URI's handling of bracketed ipv6 addresses.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Fri, 06 May 2011 15:20:38 -0400
|
||||
|
||||
git-annex (0.20110503) unstable; urgency=low
|
||||
|
||||
* Fix hasKeyCheap setting for bup and rsync special remotes.
|
||||
|
|
|
@ -41,3 +41,19 @@ git-annex: bad url ssh://[2001/~/0:53aa:64c:24ef:5ce4:2ef9:cdda]:/home/paulprote
|
|||
(Note that both these .git/config entries work fine with "git fetch".)
|
||||
|
||||
-- Asheesh.
|
||||
|
||||
> Technically, this seems to be a bug in the haskell URI library; it honors
|
||||
> the `[]` in parsing, but does not remove them when the URI is queried for
|
||||
> the host part.
|
||||
|
||||
<pre>
|
||||
Prelude Network.URI> let (Just u) = parseURI "http://foo@[2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]/bar"
|
||||
Prelude Network.URI> let (Just a) = uriAuthority u
|
||||
Prelude Network.URI> uriRegName a
|
||||
"[2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]"
|
||||
Prelude Network.URI> isIPv6address $ uriRegName a
|
||||
False
|
||||
</pre>
|
||||
|
||||
> I have filed a [bug upstream](http://trac.haskell.org/network/ticket/40), and put a workaround in git-annex. [[done]]
|
||||
> --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue