aboutsummaryrefslogtreecommitdiff
path: root/src/libventi/conn.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2006-10-19 21:58:59 +0000
committerrsc <devnull@localhost>2006-10-19 21:58:59 +0000
commit6fc7da3c529ca7c610e8172f5b02980c75597dd5 (patch)
tree6e06f1a96414ceb59a8016fb257b46b6f87f9a1c /src/libventi/conn.c
parent067d852abe242ee1d267bcc0d652cd6bb31b7e17 (diff)
downloadplan9port-6fc7da3c529ca7c610e8172f5b02980c75597dd5.tar.gz
plan9port-6fc7da3c529ca7c610e8172f5b02980c75597dd5.tar.bz2
plan9port-6fc7da3c529ca7c610e8172f5b02980c75597dd5.zip
Fix a handful of small one-time memory leaks in vbackup,
and one per-package memory leak (in writethread).
Diffstat (limited to 'src/libventi/conn.c')
-rw-r--r--src/libventi/conn.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libventi/conn.c b/src/libventi/conn.c
index 990e7db2..5b6d5436 100644
--- a/src/libventi/conn.c
+++ b/src/libventi/conn.c
@@ -32,15 +32,19 @@ vtfreeconn(VtConn *z)
{
vthangup(z);
qlock(&z->lk);
- for(;;){
+ /*
+ * Wait for send and recv procs to notice
+ * the hangup and clear out the queues.
+ */
+ while(z->readq || z->writeq){
if(z->readq)
_vtqhangup(z->readq);
- else if(z->writeq)
+ if(z->writeq)
_vtqhangup(z->writeq);
- else
- break;
rsleep(&z->rpcfork);
}
packetfree(z->part);
+ vtfree(z->version);
+ vtfree(z->sid);
vtfree(z);
}