Author: rhuijben
Date: Thu Nov  5 00:29:38 2015
New Revision: 1712694

URL: http://svn.apache.org/viewvc?rev=1712694&view=rev
Log:
Combine a bit of cleanup code for explicit cleanup and that via the
cleanup pools.

* connection_request.c
  (clean_resp): Introduce a bit of cleanup code here.
  (serf__destroy_request): And explicitly call it from here, which
     now doesn't have to do that itself.

Modified:
    serf/trunk/connection_request.c

Modified: serf/trunk/connection_request.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/connection_request.c?rev=1712694&r1=1712693&r2=1712694&view=diff
==============================================================================
--- serf/trunk/connection_request.c (original)
+++ serf/trunk/connection_request.c Thu Nov  5 00:29:38 2015
@@ -40,10 +40,14 @@ static apr_status_t clean_resp(void *dat
        make sure to set their fields to NULL so connection closure does
        not attempt to free them again.  */
     if (request->resp_bkt) {
+        if (request->respool)
+            serf_debug__closed_conn(request->resp_bkt->allocator);
         serf_bucket_destroy(request->resp_bkt);
         request->resp_bkt = NULL;
     }
     if (request->req_bkt) {
+        if (request->respool)
+            serf_debug__closed_conn(request->req_bkt->allocator);
         if (!request->writing_started)
             serf_bucket_destroy(request->req_bkt);
         request->req_bkt = NULL;
@@ -77,26 +81,13 @@ apr_status_t serf__destroy_request(serf_
 {
     serf_connection_t *conn = request->conn;
 
-    /* The request and response buckets are no longer needed,
-       nor is the request's pool.  */
-    if (request->resp_bkt) {
-        serf_debug__closed_conn(request->resp_bkt->allocator);
-        serf_bucket_destroy(request->resp_bkt);
-        request->resp_bkt = NULL;
-    }
-    if (request->req_bkt) {
-        serf_debug__closed_conn(request->req_bkt->allocator);
+    if (request->respool) {
+        apr_pool_t *pool = request->respool;
 
-        if (!request->writing_started)
-            serf_bucket_destroy(request->req_bkt);
-        request->req_bkt = NULL;
-    }
+        apr_pool_cleanup_run(pool, request, clean_resp);
+        apr_pool_destroy(pool);
 
-    if (request->respool) {
         serf_debug__bucket_alloc_check(request->allocator);
-
-        /* ### unregister the pool cleanup for self?  */
-        apr_pool_destroy(request->respool);
     }
 
     serf_bucket_mem_free(conn->allocator, request);


Reply via email to