On Fri, 16 Nov 2018 21:37:07 -0500, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbi...@yahoo.com>
> # Date 1542408996 18000
> #      Fri Nov 16 17:56:36 2018 -0500
> # Node ID 9cada40ed879ce76c5dd3c44716cff61eecc8f16
> # Parent  610eb5c155df5ca300827e10cd2c3426f0ba0842
> http: allow 'auth.prefix' to have a username consistent with the URI
> 
> It may be a little weird to put a username in the prefix, but the 
> documentation
> doesn't disallow it, and silently disallowing it has caused confusion[1].  The
> username must match what is passed in (which seems to be from the URI via a
> circuitous route), as well as 'auth.username' if it was specified.  I thought
> about printing a warning for a mismatch, but we already don't print a warning 
> if
> the 'auth.username' and URI username don't match.
> 
> This change allows the first and second last new test cases to work as 
> expected.
> It looks like this would have been a problem since at least 0593e8f81c71.
> 
> [1] 
> https://www.mercurial-scm.org/pipermail/mercurial/2018-November/051069.html
> 
> diff --git a/mercurial/httpconnection.py b/mercurial/httpconnection.py
> --- a/mercurial/httpconnection.py
> +++ b/mercurial/httpconnection.py
> @@ -92,6 +92,18 @@ def readauthforuri(ui, uri, user):
>          prefix = auth.get('prefix')
>          if not prefix:
>              continue
> +
> +        prefixurl = util.url(prefix)
> +        if prefixurl.user and prefixurl.user != user:
> +            # If a username was set in the prefix, it must match the 
> username in
> +            # the URI.
> +            continue
> +
> +        # The URI passed in has been stripped of credentials, so erase the 
> user
> +        # here to allow simpler matching.
> +        prefixurl.user = None
> +        prefix = bytes(prefixurl)

Looks good given how we handle the <scheme>:// part embedded in the prefix.
Queued, thanks.

>          p = prefix.split('://', 1)
>          if len(p) > 1:
>              schemes, prefix = [p[0]], p[1]

Perhaps, this can be refactored to use the parsed prefixurl.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to