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