mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Fix leak of remote driver if final 'CLOSE' RPC call fails
When closing a remote connection we issue a (fairly pointless) 'CLOSE' RPC call to the daemon. If this fails we skip all the cleanup of private data, but the virConnectPtr object still gets released as normal. This causes a memory leak. Since the CLOSE RPC call is pretty pointless, just carry on freeing the remote driver if it fails. * src/remote/remote_driver.c: Ignore failure to issue CLOSE RPC call
This commit is contained in:
parent
2c85644b0b
commit
afe8839f01
@ -824,10 +824,12 @@ get_transport_from_scheme (char *scheme)
|
|||||||
static int
|
static int
|
||||||
doRemoteClose (virConnectPtr conn, struct private_data *priv)
|
doRemoteClose (virConnectPtr conn, struct private_data *priv)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
if (call (conn, priv, 0, REMOTE_PROC_CLOSE,
|
if (call (conn, priv, 0, REMOTE_PROC_CLOSE,
|
||||||
(xdrproc_t) xdr_void, (char *) NULL,
|
(xdrproc_t) xdr_void, (char *) NULL,
|
||||||
(xdrproc_t) xdr_void, (char *) NULL) == -1)
|
(xdrproc_t) xdr_void, (char *) NULL) == -1)
|
||||||
return -1;
|
ret = -1;
|
||||||
|
|
||||||
virNetTLSContextFree(priv->tls);
|
virNetTLSContextFree(priv->tls);
|
||||||
priv->tls = NULL;
|
priv->tls = NULL;
|
||||||
@ -846,7 +848,7 @@ doRemoteClose (virConnectPtr conn, struct private_data *priv)
|
|||||||
virDomainEventStateFree(priv->domainEventState);
|
virDomainEventStateFree(priv->domainEventState);
|
||||||
priv->domainEventState = NULL;
|
priv->domainEventState = NULL;
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user