void virNetClientStreamFree(virNetClientStreamPtr st) { virMutexLock(&st->lock); st->refs--; if (st->refs > 0) { virMutexUnlock(&st->lock); return; } virMutexUnlock(&st->lock); virResetError(&st->err); VIR_FREE(st->incoming); virMutexDestroy(&st->lock); virNetClientProgramFree(st->prog); VIR_FREE(st); }
void virNetClientFree(virNetClientPtr client) { int i; if (!client) return; virNetClientLock(client); PROBE(RPC_CLIENT_FREE, "client=%p refs=%d", client, client->refs); client->refs--; if (client->refs > 0) { virNetClientUnlock(client); return; } for (i = 0 ; i < client->nprograms ; i++) virNetClientProgramFree(client->programs[i]); VIR_FREE(client->programs); VIR_FORCE_CLOSE(client->wakeupSendFD); VIR_FORCE_CLOSE(client->wakeupReadFD); VIR_FREE(client->hostname); if (client->sock) virNetSocketRemoveIOCallback(client->sock); virNetSocketFree(client->sock); virNetTLSSessionFree(client->tls); #if HAVE_SASL virNetSASLSessionFree(client->sasl); #endif virNetClientUnlock(client); virMutexDestroy(&client->lock); VIR_FREE(client); }