Просмотр исходного кода

ZOOKEEPER-898. C Client might not cleanup correctly during close (jared cantwell via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/zookeeper/trunk@1028426 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 14 лет назад
Родитель
Сommit
5e530bd830
2 измененных файлов с 7 добавлено и 3 удалено
  1. 3 0
      CHANGES.txt
  2. 4 3
      src/c/src/zookeeper.c

+ 3 - 0
CHANGES.txt

@@ -142,6 +142,9 @@ BUGFIXES:
 
   ZOOKEEPER-897. C Client seg faults during close (jared cantwell via mahadev)
 
+  ZOOKEEPER-898. C Client might not cleanup correctly during close 
+  (jared cantwell via mahadev)
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

+ 4 - 3
src/c/src/zookeeper.c

@@ -2229,14 +2229,15 @@ static int add_completion(zhandle_t *zh, int xid, int completion_type,
     lock_completion_list(&zh->sent_requests);
     if (zh->close_requested != 1) {
         queue_completion_nolock(&zh->sent_requests, c, add_to_front);
+        if (dc == SYNCHRONOUS_MARKER) {
+            zh->outstanding_sync++;
+        }
         rc = ZOK;
     } else {
+        free(c);
         rc = ZINVALIDSTATE;
     }
     unlock_completion_list(&zh->sent_requests);
-    if (dc == SYNCHRONOUS_MARKER) {
-        zh->outstanding_sync++;
-    }
     return rc;
 }