On Mon, Nov 30, 2009 at 08:28:19PM +0530, Kannan wrote: > @@ -518,7 +518,11 @@ > _("Unable to parse URL '%s'"), locn); > } > > - rsrc->wr_url = apr_pstrdup(rsrc->pool, parse.path); > + /* Canonicalize the base here as `svn_path_url_add_component2()' > + won't handle it */
You don't need the above comment. We always canonicalise paths received from input before using them. > + rsrc->wr_url = svn_uri_canonicalize > + (apr_pstrdup(rsrc->pool, parse.path), pool); > + This duplicates the string twice. You don't need to duplicate the string before canonicalising it. Canonicalisation will also create a copy. Just do: rsrc->wr_url = svn_uri_canonicalize(parse.path, rsrc->pool); > ne_uri_free(&parse); > > return SVN_NO_ERROR; > @@ -773,7 +777,7 @@ > > Note that we're not sending the locks in the If: header, for > the same reason we're not sending in MERGE's headers: httpd has > - limits on the amount of data it's willing to receive in headers. */ > + limits on the amount of data it's willing to receive in headers. */ Why was this changed? > apr_hash_t *child_tokens = NULL; > svn_ra_neon__request_t *request; > @@ -1389,8 +1393,11 @@ > vcc, NULL, > &svn_ra_neon__checked_in_prop, pool)); > baseline_rsrc.pool = pool; > - baseline_rsrc.vsn_url = baseline_url->data; > > + /* Canonicalize the base here as `svn_path_url_add_component2()' > + won't handle it. */ Again, the comment is not necessary. > + baseline_rsrc.vsn_url = svn_uri_canonicalize(baseline_url->data, pool); > + > /* To set the revision properties, we must checkout the latest baseline > and get back a mutable "working" baseline. */ > err = checkout_resource(cc, &baseline_rsrc, FALSE, NULL, pool); > @@ -1452,6 +1459,10 @@ > /* ### should we perform an OPTIONS to validate the server we're about > ### to talk to? */ > > + /* Canonicalize the base here as `svn_path_url_add_component2()' > + won't handle it */ Same. > + cc->ras->act_coll = svn_uri_canonicalize(cc->ras->act_coll, pool); > + > /* > ** Create an Activity. This corresponds directly to an FS transaction. > ** We will check out all further resources within the context of this > Index: subversion/libsvn_ra_neon/props.c > =================================================================== > --- subversion/libsvn_ra_neon/props.c (revision 885339) > +++ subversion/libsvn_ra_neon/props.c (working copy) > @@ -991,7 +991,12 @@ > > /* maybe return bc_url to the caller */ > if (bc_url) > - *bc_url = *my_bc_url; > + { > + /* Canonicalize the base here as `svn_path_url_add_component2()' > + won't handle it */ Same. Thanks, Stefan > + bc_url->data = svn_uri_canonicalize(my_bc_url->data, pool); > + bc_url->len = my_bc_url->len; > + } > > if (latest_rev != NULL) > {