Properly decrement inode refcounts when finishing a request.
[bluesky.git] / nfs3 / rpc.c
index ae39154..7b73840 100644 (file)
@@ -212,6 +212,13 @@ async_rpc_send_failure(RPCRequest *req, enum accept_stat stat)
     if (req->raw_args != NULL)
         g_string_free(req->raw_args, TRUE);
 
+    while (req->cleanup != NULL) {
+        struct cleanup_list *c = req->cleanup;
+        req->cleanup = c->next;
+        c->func(c->arg);
+        g_free(c);
+    }
+
     g_free(req);
 }
 
@@ -264,6 +271,13 @@ async_rpc_send_reply(RPCRequest *req, void *result)
     if (req->raw_args != NULL)
         g_string_free(req->raw_args, TRUE);
 
+    while (req->cleanup != NULL) {
+        struct cleanup_list *c = req->cleanup;
+        req->cleanup = c->next;
+        c->func(c->arg);
+        g_free(c);
+    }
+
     g_free(req);
 }