[libvirt] [PATCH 3/3] libvirt-qemu: Dispatch errors from virDomainQemuAgentCommand()
The original implementation didn't follow the established pattern and did not dispatch errors in case of failure. --- src/libvirt-qemu.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libvirt-qemu.c b/src/libvirt-qemu.c index 747488d..e884e32 100644 --- a/src/libvirt-qemu.c +++ b/src/libvirt-qemu.c @@ -211,6 +211,7 @@ virDomainQemuAgentCommand(virDomainPtr domain, unsigned int flags) { virConnectPtr conn; +char *ret; VIR_DEBUG(domain=%p, cmd=%s, timeout=%d, flags=%x, domain, cmd, timeout, flags); @@ -228,13 +229,17 @@ virDomainQemuAgentCommand(virDomainPtr domain, conn = domain-conn; if (conn-driver-domainQemuAgentCommand) { -return conn-driver-domainQemuAgentCommand(domain, cmd, -timeout, flags); +ret = conn-driver-domainQemuAgentCommand(domain, cmd, + timeout, flags); +if (!ret) +goto error; +return ret; } virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); /* Copy to connection error object for back compatibility */ +error: virDispatchError(conn); return NULL; } -- 1.8.2.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 3/3] libvirt-qemu: Dispatch errors from virDomainQemuAgentCommand()
On 06/03/2013 04:35 PM, Peter Krempa wrote: The original implementation didn't follow the established pattern and did not dispatch errors in case of failure. --- src/libvirt-qemu.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libvirt-qemu.c b/src/libvirt-qemu.c index 747488d..e884e32 100644 --- a/src/libvirt-qemu.c +++ b/src/libvirt-qemu.c @@ -211,6 +211,7 @@ virDomainQemuAgentCommand(virDomainPtr domain, unsigned int flags) { virConnectPtr conn; +char *ret; VIR_DEBUG(domain=%p, cmd=%s, timeout=%d, flags=%x, domain, cmd, timeout, flags); @@ -228,13 +229,17 @@ virDomainQemuAgentCommand(virDomainPtr domain, conn = domain-conn; if (conn-driver-domainQemuAgentCommand) { -return conn-driver-domainQemuAgentCommand(domain, cmd, -timeout, flags); +ret = conn-driver-domainQemuAgentCommand(domain, cmd, + timeout, flags); +if (!ret) +goto error; +return ret; } virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); /* Copy to connection error object for back compatibility */ +error: virDispatchError(conn); return NULL; } One more fix would fit here, so ACK with this squashed in: diff --git a/src/libvirt-qemu.c b/src/libvirt-qemu.c index e884e32..9dd76dd 100644 --- a/src/libvirt-qemu.c +++ b/src/libvirt-qemu.c @@ -221,13 +221,14 @@ virDomainQemuAgentCommand(virDomainPtr domain, virDispatchError(NULL); return NULL; } + +conn = domain-conn; + if (domain-conn-flags VIR_CONNECT_RO) { virLibDomainError(NULL, VIR_ERR_OPERATION_DENIED, __FUNCTION__); -return NULL; +goto error; } -conn = domain-conn; - if (conn-driver-domainQemuAgentCommand) { ret = conn-driver-domainQemuAgentCommand(domain, cmd, timeout, flags); -- Martin -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 3/3] libvirt-qemu: Dispatch errors from virDomainQemuAgentCommand()
On 06/03/13 17:22, Martin Kletzander wrote: On 06/03/2013 04:35 PM, Peter Krempa wrote: The original implementation didn't follow the established pattern and did not dispatch errors in case of failure. --- src/libvirt-qemu.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) One more fix would fit here, so ACK with this squashed in: I squashed the fix you've proposed and pushed the whole series. Thanks for the review. Martin Peter -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list