]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libvirt-qemu: Dispatch errors from virDomainQemuAgentCommand()
authorPeter Krempa <pkrempa@redhat.com>
Mon, 3 Jun 2013 14:12:52 +0000 (16:12 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 3 Jun 2013 15:25:33 +0000 (17:25 +0200)
The original implementation didn't follow the established pattern and
did not dispatch errors in case of failure.

src/libvirt-qemu.c

index 747488da184ecbdf6f92cbb6ea0742be9e9c1455..2a1432b862d04724c72590147a343644085701d6 100644 (file)
@@ -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);
@@ -220,21 +221,26 @@ virDomainQemuAgentCommand(virDomainPtr domain,
         virDispatchError(NULL);
         return NULL;
     }
-    if (domain->conn->flags & VIR_CONNECT_RO) {
-        virLibDomainError(NULL, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
-        return NULL;
-    }
 
     conn = domain->conn;
 
+    if (conn->flags & VIR_CONNECT_RO) {
+        virLibDomainError(NULL, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+        goto error;
+    }
+
     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;
 }