You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2013/03/06 20:18:52 UTC

svn commit: r1453491 - /subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c

Author: cmpilato
Date: Wed Mar  6 19:18:51 2013
New Revision: 1453491

URL: http://svn.apache.org/r1453491
Log:
On the '1.7.x-issue4332' branch: Fix issue #4332 ("neon OPTIONS
request on repository root causes authz access denied").

* subversion/libsvn_ra_neon/props.c
  (svn_ra_neon__do_check_path): When checking a patch against an
    invalid revision number (that is, HEAD), query its public URL rather
    than trying to resolve HEAD into a fixed revision number and then
    querying the baseline URL for the path in that revision.

Modified:
    subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c

Modified: subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c?rev=1453491&r1=1453490&r2=1453491&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c (original)
+++ subversion/branches/1.7.x-issue4332/subversion/libsvn_ra_neon/props.c Wed Mar  6 19:18:51 2013
@@ -1313,9 +1313,7 @@ svn_ra_neon__do_check_path(svn_ra_sessio
 {
   svn_ra_neon__session_t *ras = session->priv;
   const char *url = ras->url->data;
-  const char *bc_url;
-  const char *bc_relative;
-  svn_error_t *err;
+  svn_error_t *err = SVN_NO_ERROR;
   svn_boolean_t is_dir;
 
   /* ### For now, using svn_ra_neon__get_starting_props() works because
@@ -1350,18 +1348,25 @@ svn_ra_neon__do_check_path(svn_ra_sessio
   if (path)
     url = svn_path_url_add_component2(url, path, pool);
 
-  err = svn_ra_neon__get_baseline_info(&bc_url, &bc_relative, NULL, ras,
-                                       url, revision, pool);
+  /* If we're querying HEAD, we can do so against the public URL;
+     otherwise, we have to get a revision-specific URL to work with.  */
+  if (SVN_IS_VALID_REVNUM(revision))
+    {
+      const char *bc_url;
+      const char *bc_relative;
+
+      err = svn_ra_neon__get_baseline_info(&bc_url, &bc_relative, NULL, ras,
+                                           url, revision, pool);
+      if (! err)
+        url = svn_path_url_add_component2(bc_url, bc_relative, pool);
+    }
 
   if (! err)
     {
       svn_ra_neon__resource_t *rsrc;
-      const char *full_bc_url = svn_path_url_add_component2(bc_url,
-                                                            bc_relative,
-                                                            pool);
-
-      /* query the DAV:resourcetype of the full, assembled URL. */
-      err = svn_ra_neon__get_starting_props(&rsrc, ras, full_bc_url, pool);
+          
+      /* Query the DAV:resourcetype.  */
+      err = svn_ra_neon__get_starting_props(&rsrc, ras, url, pool);
       if (! err)
         is_dir = rsrc->is_collection;
     }