On Thu, 2009-12-17, Kannan wrote:
> Julian Foad wrote:
> [..]
> > It would be great if you could trace the calls back to wherever the
> > non-canonical paths are generated, and fix them at that point.
>
> Thank you Julian, for the comments. Attached herewith is the patch to
> canonicalize the URLs. If this seems fine, I shall send the patch to
> upgrade ..add_component() to ..add_component2().
>
> [[[
> Log:
> Ensure the URLs are canonical before passing to the new
> `svn_path_url_add_component2()'.
>
> [ in subversion/libsvn_ra_neon ]
>
> * commit.c
> (checkout_resource): Canonicalize the 'BASE' as
> `svn_path_url_add_component2()' won't handle it.
>
> * props.c
> (svn_ra_neon__get_baseline_info, svn_ra_neon__get_one_prop): Same.
>
> * options.c
> (svn_ra_neon__exchange_capabilities): Same.
Hi Kannan.
With your patch, the code in "commit.c" now looks like this (ignoring
all the error handling):
do_checkout():
...
*locn = svn_ra_neon__request_get_location(request, pool);
checkout_resource():
do_checkout(cc, rsrc->vsn_url, allow_404, token, &code, &locn, pool);
ne_uri_parse(locn, &parse);
rsrc->wr_url = svn_uri_canonicalize(parse.path, rsrc->pool);
Does the "ne_uri_parse" function create a non-canonical ".path", or does
the do_checkout() function create a non-canonical URL?
If the former, we should look for all other uses of ne_uri_parse() and
canonicalize after them as well. If the latter, we should fix the
do_checkout() function and look for all other uses of
svn_ra_neon__request_get_location().
(What does the non-canonical URL or URI look like?)
- Julian
Received on 2009-12-22 11:34:47 CET