You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2015/03/06 17:00:16 UTC

svn commit: r1664672 - /subversion/trunk/subversion/mod_dav_svn/repos.c

Author: rhuijben
Date: Fri Mar  6 16:00:15 2015
New Revision: 1664672

URL: http://svn.apache.org/r1664672
Log:
Following up on r1664664, make mod_dav return a proper error when a commit
specifies a higher revision than the one committing against. This fixes
out of date detection for too-new revisions via httpv2.
(For httpv1 this happens on the checkout requests)

* subversion/mod_dav_svn/repos.c
  (do_out_of_date_check): Verify that a passed revision makes sense, instead
    of that it is ok when it is higher than anything we know.

Modified:
    subversion/trunk/subversion/mod_dav_svn/repos.c

Modified: subversion/trunk/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/repos.c?rev=1664672&r1=1664671&r2=1664672&view=diff
==============================================================================
--- subversion/trunk/subversion/mod_dav_svn/repos.c (original)
+++ subversion/trunk/subversion/mod_dav_svn/repos.c Fri Mar  6 16:00:15 2015
@@ -1858,6 +1858,22 @@ do_out_of_date_check(dav_resource_combin
                                       "Attempting to modify out-of-date resource.",
                                       r->pool);
         }
+      else if (comb->priv.version_name > created_rev)
+        {
+          svn_revnum_t txn_base_rev;
+
+          txn_base_rev = svn_fs_txn_base_revision(comb->res.info->root.txn);
+          if (comb->priv.version_name > txn_base_rev)
+            {
+              serr = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL,
+                                       "No such revision %ld",
+                                       comb->priv.version_name);
+
+              return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
+                                          "Unknown base revision",
+                                          r->pool);
+            }
+        }
     }
   else if (comb->res.collection)
     {