]> xenbits.xensource.com Git - libvirt.git/commitdiff
remote: Add missing virCondDestroy calls
authorMatthias Bolte <matthias.bolte@googlemail.com>
Thu, 17 Mar 2011 16:51:33 +0000 (17:51 +0100)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Thu, 17 Mar 2011 16:51:33 +0000 (17:51 +0100)
The virCond of the remote_thread_call struct was leaked in some
places. This results in leaking the underlying mutex. Which in turn
leaks a handle on Windows.

Reported by Aliaksandr Chabatar and Ihar Smertsin.

src/remote/remote_driver.c

index 82e094bdbfc9985491a3748e4b752058c09ea9e1..8aa88010e3592a96d8beaa04d20135f77b8017bf 100644 (file)
@@ -8609,6 +8609,7 @@ remoteStreamPacket(virStreamPtr st,
     xdr_destroy (&xdr);
 
     ret = remoteIO(st->conn, priv, 0, thiscall);
+    ignore_value(virCondDestroy(&thiscall->cond));
     VIR_FREE(thiscall);
     if (ret < 0)
         return -1;
@@ -8617,6 +8618,7 @@ remoteStreamPacket(virStreamPtr st,
 
 error:
     xdr_destroy (&xdr);
+    ignore_value(virCondDestroy(&thiscall->cond));
     VIR_FREE(thiscall);
     return -1;
 }
@@ -8746,6 +8748,7 @@ remoteStreamRecv(virStreamPtr st,
         }
 
         ret = remoteIO(st->conn, priv, 0, thiscall);
+        ignore_value(virCondDestroy(&thiscall->cond));
         VIR_FREE(thiscall);
         if (ret < 0)
             goto cleanup;
@@ -9719,6 +9722,7 @@ prepareCall(struct private_data *priv,
 
 error:
     xdr_destroy (&xdr);
+    ignore_value(virCondDestroy(&rv->cond));
     VIR_FREE(rv);
     return NULL;
 }
@@ -10818,6 +10822,7 @@ call (virConnectPtr conn, struct private_data *priv,
     }
 
     rv = remoteIO(conn, priv, flags, thiscall);
+    ignore_value(virCondDestroy(&thiscall->cond));
     VIR_FREE(thiscall);
     return rv;
 }