opensubscriber
   Find in this group all groups
 
Unknown more information…

i : issues@subversion.tigris.org 18 June 2012 • 8:01PM -0400

[Issue 4195] properties after close_file on checkout over https
by philip

REPLY TO AUTHOR
 
REPLY TO GROUP




http://subversion.tigris.org/issues/show_bug.cgi?id=4195






------- Additional comments from philip@tigr... Mon Jun 18 05:01:23 -0700 2012 -------
So this is a serf bug.  It could be fixed by moving requeued requests from the
hold_requests list to the requests list, see patch below, or perhaps by having
reset_connection set the state to SERF_CONN_INIT earlier so that requeued
connections get added to the requests list.

Index: outgoing.c
===================================================================
--- outgoing.c  (revision 1622)
+++ outgoing.c  (working copy)
@@ -445,6 +449,20 @@
          */
         if (requeue_requests && !old_reqs->written) {
             serf_request_t *req = old_reqs;
+            /* cancel_request may have requeued some requests and
+             * populated hold_requests.
+             */
+            if (conn->hold_requests){
+              if (conn->requests_tail) {
+                conn->requests_tail->next = conn->hold_requests;
+              }
+              else {
+                conn->requests = conn->hold_requests;
+              }
+              conn->requests_tail = conn->hold_requests_tail;
+              conn->hold_requests = NULL;
+              conn->hold_requests_tail = NULL;
+            }
             old_reqs = old_reqs->next;
             req->next = NULL;
             link_requests(&conn->requests, &conn->requests_tail, req);
@@ -454,6 +472,21 @@
         }
     }

+    /* cancel_request may have requeued some requests and populated
+     * hold_requests.
+     */
+    if (conn->hold_requests) {
+      if (conn->requests_tail) {
+        conn->requests_tail->next = conn->hold_requests;
+      }
+      else {
+        conn->requests = conn->hold_requests;
+      }
+      conn->requests_tail = conn->hold_requests_tail;
+      conn->hold_requests = NULL;
+      conn->hold_requests_tail = NULL;
+    }
+
     if (conn->requests_tail) {
         conn->requests_tail->next = held_reqs;
     }

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=463&dsMessageId=2971831

To unsubscribe from this discussion, e-mail: [issues-unsubscribe@subv...].

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.