You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2010/08/12 21:25:38 UTC

svn commit: r984923 - in /subversion/trunk/subversion: libsvn_ra_neon/options.c libsvn_ra_serf/options.c svnsync/main.c

Author: danielsh
Date: Thu Aug 12 19:25:37 2010
New Revision: 984923

URL: http://svn.apache.org/viewvc?rev=984923&view=rev
Log:
Fix a bug in the neon/serf capabilities exchange, and plug a related error
leak in svnsync.

* subversion/libsvn_ra_neon/options.c (parse_capabilities),
* subversion/libsvn_ra_serf/options.c (options_response_handler):
    Initialize SVN_RA_CAPABILITY_PARTIAL_REPLAY in the capabilities hash.

* subversion/svnsync/main.c
  (do_initialize):
    Plug an error leak, and start considering "unknown capability" as an
    actual error.

Modified:
    subversion/trunk/subversion/libsvn_ra_neon/options.c
    subversion/trunk/subversion/libsvn_ra_serf/options.c
    subversion/trunk/subversion/svnsync/main.c

Modified: subversion/trunk/subversion/libsvn_ra_neon/options.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/options.c?rev=984923&r1=984922&r2=984923&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/options.c (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/options.c Thu Aug 12 19:25:37 2010
@@ -144,6 +144,8 @@ parse_capabilities(ne_request *req,
   *youngest_rev = SVN_INVALID_REVNUM;
 
   /* Start out assuming all capabilities are unsupported. */
+  apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_PARTIAL_REPLAY,
+               APR_HASH_KEY_STRING, capability_no);
   apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_DEPTH,
                APR_HASH_KEY_STRING, capability_no);
   apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_MERGEINFO,

Modified: subversion/trunk/subversion/libsvn_ra_serf/options.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/options.c?rev=984923&r1=984922&r2=984923&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/options.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/options.c Thu Aug 12 19:25:37 2010
@@ -396,6 +396,8 @@ options_response_handler(serf_request_t 
   serf_bucket_t *hdrs = serf_bucket_response_get_headers(response);
 
   /* Start out assuming all capabilities are unsupported. */
+  apr_hash_set(orc->session->capabilities, SVN_RA_CAPABILITY_PARTIAL_REPLAY,
+               APR_HASH_KEY_STRING, capability_no);
   apr_hash_set(orc->session->capabilities, SVN_RA_CAPABILITY_DEPTH,
                APR_HASH_KEY_STRING, capability_no);
   apr_hash_set(orc->session->capabilities, SVN_RA_CAPABILITY_MERGEINFO,

Modified: subversion/trunk/subversion/svnsync/main.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnsync/main.c?rev=984923&r1=984922&r2=984923&view=diff
==============================================================================
--- subversion/trunk/subversion/svnsync/main.c (original)
+++ subversion/trunk/subversion/svnsync/main.c Thu Aug 12 19:25:37 2010
@@ -723,14 +723,11 @@ do_initialize(svn_ra_session_t *to_sessi
                                                &server_supports_partial_replay,
                                                SVN_RA_CAPABILITY_PARTIAL_REPLAY,
                                                pool);
-      if (err && err->apr_err == SVN_ERR_UNKNOWN_CAPABILITY)
-        {
-          svn_error_clear(err);
-          server_supports_partial_replay = FALSE;
-        }
+      if (err && err->apr_err != SVN_ERR_UNKNOWN_CAPABILITY)
+        return svn_error_return(err);
 
-      if (!server_supports_partial_replay)
-        return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, NULL,
+      if (err || !server_supports_partial_replay)
+        return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, err,
                                 NULL);
     }