Lock test #37 and #42 is currently failing on Windows (with and
without the virus scanner).  See:

http://ci.apache.org/builders/svn-slik-w2k3-x64-ra/builds/4511/steps/Test%20fsfs+serf/logs/faillog

It is related to the special 405/409/500 handler in handle_response
which is "completely wrong".  *grin*

I think we're going out for dinner and stuff now, so I'll throw out
this incomplete patch and pick it up in the morning.

If someone else wants to take a look in the meantime, feel free!  -- justin

Index: subversion/libsvn_ra_serf/util.c
===================================================================
--- subversion/libsvn_ra_serf/util.c    (revision 1349376)
+++ subversion/libsvn_ra_serf/util.c    (working copy)
@@ -1836,18 +1836,23 @@ handle_response(serf_request_t *request,
     }
   handler->conn->last_status_code = handler->sline.code;

-  if (handler->sline.code == 405
+  if (!handler->server_error && (handler->sline.code == 405
       || handler->sline.code == 409
-      || handler->sline.code >= 500)
+      || handler->sline.code >= 500))
     {
       /* 405 Method Not allowed.
          409 Conflict: can indicate a hook error.
          5xx (Internal) Server error. */
-      /* ### this is completely wrong. it only catches the current network
-         ### packet. we need ongoing parsing. see SERVER_ERROR down below
-         ### in the process_body: area. we'll eventually move to that.  */
-      SVN_ERR(handle_server_error(request, response, scratch_pool));
+      svn_ra_serf__server_error_t *server_err;

+      server_err = begin_error_parsing(start_error, end_error, cdata_error,
+                                       handler->handler_pool);
+
+      /* Get the parser to set our DONE flag.  */
+      server_err->parser.done = &handler->done;
+
+      handler->server_error = server_err;
+
       if (!handler->session->pending_error)
         {
           apr_status_t apr_err = SVN_ERR_RA_DAV_REQUEST_FAILED;

Reply via email to