Author: rhuijben
Date: Tue Sep 21 08:08:32 2010
New Revision: 999265
URL: http://svn.apache.org/viewvc?rev=999265&view=rev
Log:
Assert that we actually received the revision properties when calling
the revstart_func. Somehow this is not the case in several of the new
svnrdump tests.
* subversion/libsvn_ra_serf/replay.c
(replay_context_t): Name struct to improve debugging (and diff -x -p)
support. Add prop_ctx.
(start_replay): Assert that we already have the revision properties before
parsing them for the revstart/revfinish functions.
(svn_ra_serf__replay_range): Store the property context.
Modified:
subversion/trunk/subversion/libsvn_ra_serf/replay.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/replay.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/replay.c?rev=999265&r1=999264&r2=999265&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/replay.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/replay.c Tue Sep 21 08:08:32 2010
@@ -90,7 +90,7 @@ typedef struct {
replay_info_t *parent;
} prop_info_t;
-typedef struct {
+typedef struct replay_context_t {
apr_pool_t *src_rev_pool;
apr_pool_t *dst_rev_pool;
@@ -125,6 +125,9 @@ typedef struct {
/* Keep a reference to the XML parser ctx to report any errors. */
svn_ra_serf__xml_parser_t *parser_ctx;
+ /* The propfind for the revision properties of the current revision */
+ svn_ra_serf__propfind_context_t *prop_ctx;
+
} replay_context_t;
@@ -180,6 +183,9 @@ start_replay(svn_ra_serf__xml_parser_t *
{
push_state(parser, ctx, REPORT);
+ /* Before we can continue, we need the revision properties. */
+ SVN_ERR_ASSERT(svn_ra_serf__propfind_is_done(ctx->prop_ctx));
+
/* Create a pool for the commit editor. */
ctx->dst_rev_pool = svn_pool_create(ctx->src_rev_pool);
ctx->props = apr_hash_make(ctx->dst_rev_pool);
@@ -751,6 +757,7 @@ svn_ra_serf__replay_range(svn_ra_session
/* Request all properties of a certain revision. */
replay_ctx->report_target = report_target;
replay_ctx->revs_props = apr_hash_make(replay_ctx->src_rev_pool);
+ replay_ctx->prop_ctx = prop_ctx;
SVN_ERR(svn_ra_serf__deliver_props(&prop_ctx,
replay_ctx->revs_props, session,
session->conns[0], report_target,