On Mon, Mar 17, 2003 at 03:14:18PM -0600, Karl Fogel wrote:
> David Summers <david@summersoft.fay.ar.us> writes:
> > Is anyone else seeing this? I've been seeing it for the last couple of
> > days.
> >
> > This run is on Rev 5363.
>
> Yes, I'm seeing this too now, only over ra_svn.
>
> I need to finish up issue #630 right now, so I won't get a chance to
> look at this until that's done. Hope someone else (hint hint) will be
> seized by a desire to have a whack at it before then...
ra_svn isn't passing the error code from svn_repos_get_logs to the
client. The following patch fixes it but it is not compatible
with older servers and clients. Does the Compatibility section of
HACKING refer to ra_svn as well as ra_dav?
* subversion/libsvn_ra_svn/client.c
(svn_ra_log): Process response after log message data.
* subversion/svnserve/serve.c
(log_cmd): Send response after log message data.
Index: subversion/libsvn_ra_svn/client.c
===================================================================
--- subversion/libsvn_ra_svn/client.c (revision 5365)
+++ subversion/libsvn_ra_svn/client.c (working copy)
@@ -789,9 +789,6 @@
SVN_ERR(svn_ra_svn_end_list(conn, pool));
SVN_ERR(svn_ra_svn_end_list(conn, pool));
- /* Read the response. */
- SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, ""));
-
/* Read the log messages. */
subpool = svn_pool_create(pool);
while (1)
@@ -832,6 +829,10 @@
apr_pool_clear(subpool);
}
apr_pool_destroy(subpool);
+
+ /* Read the response. */
+ SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, ""));
+
return SVN_NO_ERROR;
}
Index: subversion/svnserve/serve.c
===================================================================
--- subversion/svnserve/serve.c (revision 5365)
+++ subversion/svnserve/serve.c (working copy)
@@ -761,6 +761,7 @@
static svn_error_t *log_cmd(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
apr_array_header_t *params, void *baton)
{
+ svn_error_t *err;
server_baton_t *b = baton;
svn_revnum_t start_rev, end_rev;
const char *full_path;
@@ -785,17 +786,17 @@
*((const char **) apr_array_push(full_paths)) = full_path;
}
- /* Write an empty command-reponse, telling the client logs are coming. */
- SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
-
/* Get logs. (Can't report errors back to the client at this point.) */
lb.fs_path = b->fs_path;
lb.conn = conn;
- SVN_ERR(svn_repos_get_logs(b->repos, full_paths, start_rev, end_rev,
- changed_paths, strict_node, log_receiver, &lb,
- pool));
+ err = svn_repos_get_logs(b->repos, full_paths, start_rev, end_rev,
+ changed_paths, strict_node, log_receiver, &lb,
+ pool);
- return svn_ra_svn_write_word(conn, pool, "done");
+ SVN_ERR(svn_ra_svn_write_word(conn, pool, "done"));
+ SVN_CMD_ERR(err);
+ SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
+ return SVN_NO_ERROR;
}
static svn_error_t *check_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
Matt
--
Oink!
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Mar 18 03:12:16 2003