free_qparam_set (vars);
failed:
+ virNetClientClose(priv->client);
virNetClientFree(priv->client);
priv->client = NULL;
virNetTLSContextFree(priv->tls);
priv->tls = NULL;
+ virNetClientClose(priv->client);
virNetClientFree(priv->client);
priv->client = NULL;
virNetClientProgramFree(priv->remoteProgram);
VIR_FREE(client->hostname);
- virNetSocketRemoveIOCallback(client->sock);
+ if (client->sock)
+ virNetSocketRemoveIOCallback(client->sock);
virNetSocketFree(client->sock);
virNetTLSSessionFree(client->tls);
#if HAVE_SASL
}
+void virNetClientClose(virNetClientPtr client)
+{
+ virNetClientLock(client);
+ virNetSocketRemoveIOCallback(client->sock);
+ virNetSocketFree(client->sock);
+ client->sock = NULL;
+ virNetTLSSessionFree(client->tls);
+ client->tls = NULL;
+#if HAVE_SASL
+ virNetSASLSessionFree(client->sasl);
+ client->sasl = NULL;
+#endif
+ virNetClientUnlock(client);
+}
+
+
#if HAVE_SASL
void virNetClientSetSASLSession(virNetClientPtr client,
virNetSASLSessionPtr sasl)
virNetClientLock(client);
+ if (!client->sock)
+ goto done;
+
/* This should be impossible, but it doesn't hurt to check */
if (client->waitDispatch)
goto done;
int virNetClientGetTLSKeySize(virNetClientPtr client);
void virNetClientFree(virNetClientPtr client);
+void virNetClientClose(virNetClientPtr client);
#endif /* __VIR_NET_CLIENT_H__ */