[libvirt] [PATCH 0/5] Fix various error squashing issues

The following series adds internal APIs that help prevent legitimate errors from being overwritten by other errors (for example in cleanup routines). The majority of this series is a patch from Dan[1] which makes error callbacks explictly triggered when exiting an API call, rather than when an error is raised (I've updated this to cover the current codebase) [1] http://gitorious.org/~berrange/libvirt/staging/commits/error-callbacks Cole Robinson (4): virterror: Add virSetError qemu: migrate: Save MigratePerform error in MigrateFinish. libvirt.c: Preserve MigratePerform failure qemu: Disable errors in qemudShutdownVMDaemon Daniel P. Berrange (1): Ensure error handling callback functions are called from safe context src/libvirt.c | 849 +++++++++++++++++++++++------------------ src/libvirt_private.syms | 1 + src/qemu/qemu_driver.c | 18 + src/util/virterror.c | 102 +++--- src/util/virterror_internal.h | 4 +- 5 files changed, 548 insertions(+), 426 deletions(-)

From: Daniel P. Berrange <berrange@redhat.com> The virRaiseErrorFull() may invoke the error handler callback functions an application has registered. This is not good because the connection object may not be available at this point, and the caller may be holding locks. This creates a problem if the error handler calls back into libvirt. The solutuon is to move invocation of the handler into the final cleanup code in the public API entry points, where it is guarenteed to have safe state. * src/libvirt.c: Invoke virDispatchError() in all error paths * src/util/virterror.c: Remove virSetConnError/virSetGlobalError, replacing with virDispatchError(). Move invocation of the error callbacks into virDispatchError() instead of the virRaiseErrorFull function which is not in a safe context Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/libvirt.c | 840 +++++++++++++++++++++++------------------ src/util/virterror.c | 80 ++--- src/util/virterror_internal.h | 3 +- 3 files changed, 497 insertions(+), 426 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index 1ae2932..4308573 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -975,10 +975,10 @@ virGetVersion(unsigned long *libVer, const char *type, if (!initialized) if (virInitialize() < 0) - return -1; + goto error; if (libVer == NULL) - return (-1); + goto error; *libVer = LIBVIR_VERSION_NUMBER; if (typeVer != NULL) { @@ -1037,11 +1037,15 @@ virGetVersion(unsigned long *libVer, const char *type, #endif if (*typeVer == 0) { virLibConnError(NULL, VIR_ERR_NO_SUPPORT, type); - return (-1); + goto error; } #endif /* WITH_DRIVER_MODULES */ } return (0); + +error: + virDispatchError(NULL); + return -1; } static virConnectPtr @@ -1241,9 +1245,6 @@ do_open (const char *name, return ret; failed: - /* Ensure a global error is set in case driver forgot */ - virSetGlobalError(); - virUnrefConnect(ret); return NULL; @@ -1274,12 +1275,20 @@ failed: virConnectPtr virConnectOpen (const char *name) { + virConnectPtr ret = NULL; if (!initialized) if (virInitialize() < 0) - return NULL; + goto error; DEBUG("name=%s", name); - return do_open (name, NULL, 0); + ret = do_open (name, NULL, 0); + if (!ret) + goto error; + return ret; + +error: + virDispatchError(NULL); + return NULL; } /** @@ -1300,12 +1309,20 @@ virConnectOpen (const char *name) virConnectPtr virConnectOpenReadOnly(const char *name) { + virConnectPtr ret = NULL; if (!initialized) if (virInitialize() < 0) - return NULL; + goto error; DEBUG("name=%s", name); - return do_open (name, NULL, VIR_CONNECT_RO); + ret = do_open (name, NULL, VIR_CONNECT_RO); + if (!ret) + goto error; + return ret; + +error: + virDispatchError(NULL); + return NULL; } /** @@ -1330,12 +1347,20 @@ virConnectOpenAuth(const char *name, virConnectAuthPtr auth, int flags) { + virConnectPtr ret = NULL; if (!initialized) if (virInitialize() < 0) - return NULL; + goto error; DEBUG("name=%s, auth=%p, flags=%d", NULLSTR(name), auth, flags); - return do_open (name, auth, flags); + ret = do_open (name, auth, flags); + if (!ret) + goto error; + return ret; + +error: + virDispatchError(NULL); + return NULL; } /** @@ -1352,16 +1377,24 @@ virConnectOpenAuth(const char *name, int virConnectClose(virConnectPtr conn) { + int ret = -1; DEBUG("conn=%p", conn); virResetLastError(); if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); - return (-1); + goto error; } - return virUnrefConnect(conn); + ret = virUnrefConnect(conn); + if (ret < 0) + goto error; + return ret; + +error: + virDispatchError(NULL); + return ret; } /** @@ -1386,6 +1419,7 @@ virConnectRef(virConnectPtr conn) { if ((!VIR_IS_CONNECT(conn))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&conn->lock); @@ -1409,14 +1443,14 @@ virDrvSupportsFeature (virConnectPtr conn, int feature) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } ret = VIR_DRV_SUPPORTS_FEATURE (conn->driver, conn, feature); if (ret < 0) - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return ret; } @@ -1442,6 +1476,7 @@ virConnectGetType(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -1474,6 +1509,7 @@ virConnectGetVersion(virConnectPtr conn, unsigned long *hvVer) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -1492,8 +1528,7 @@ virConnectGetVersion(virConnectPtr conn, unsigned long *hvVer) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -1518,6 +1553,7 @@ virConnectGetLibVersion(virConnectPtr conn, unsigned long *libVer) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -1536,8 +1572,7 @@ virConnectGetLibVersion(virConnectPtr conn, unsigned long *libVer) *libVer = LIBVIR_VERSION_NUMBER; ret = 0; error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return ret; } @@ -1562,6 +1597,7 @@ virConnectGetHostname (virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -1575,8 +1611,7 @@ virConnectGetHostname (virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1605,6 +1640,7 @@ virConnectGetURI (virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -1616,8 +1652,7 @@ virConnectGetURI (virConnectPtr conn) return name; error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1642,6 +1677,7 @@ virConnectGetMaxVcpus(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -1654,8 +1690,7 @@ virConnectGetMaxVcpus(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -1678,6 +1713,7 @@ virConnectListDomains(virConnectPtr conn, int *ids, int maxids) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -1695,8 +1731,7 @@ virConnectListDomains(virConnectPtr conn, int *ids, int maxids) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -1717,6 +1752,7 @@ virConnectNumOfDomains(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -1729,8 +1765,7 @@ virConnectNumOfDomains(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -1757,6 +1792,7 @@ virDomainGetConnect (virDomainPtr dom) if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return NULL; } return dom->conn; @@ -1787,6 +1823,7 @@ virDomainCreateXML(virConnectPtr conn, const char *xmlDesc, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (xmlDesc == NULL) { @@ -1808,8 +1845,7 @@ virDomainCreateXML(virConnectPtr conn, const char *xmlDesc, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1853,6 +1889,7 @@ virDomainLookupByID(virConnectPtr conn, int id) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (id < 0) { @@ -1871,8 +1908,7 @@ virDomainLookupByID(virConnectPtr conn, int id) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1895,6 +1931,7 @@ virDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuid == NULL) { @@ -1913,8 +1950,7 @@ virDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1938,6 +1974,7 @@ virDomainLookupByUUIDString(virConnectPtr conn, const char *uuidstr) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuidstr == NULL) { @@ -1953,8 +1990,7 @@ virDomainLookupByUUIDString(virConnectPtr conn, const char *uuidstr) return virDomainLookupByUUID(conn, &uuid[0]); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -1977,6 +2013,7 @@ virDomainLookupByName(virConnectPtr conn, const char *name) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (name == NULL) { @@ -1995,8 +2032,7 @@ virDomainLookupByName(virConnectPtr conn, const char *name) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -2022,6 +2058,7 @@ virDomainDestroy(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -2042,8 +2079,7 @@ virDomainDestroy(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -2065,10 +2101,13 @@ virDomainFree(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefDomain(domain) < 0) + if (virUnrefDomain(domain) < 0) { + virDispatchError(NULL); return -1; + } return(0); } @@ -2094,6 +2133,7 @@ virDomainRef(virDomainPtr domain) { if ((!VIR_IS_CONNECTED_DOMAIN(domain))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&domain->conn->lock); @@ -2126,6 +2166,7 @@ virDomainSuspend(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2146,8 +2187,7 @@ virDomainSuspend(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2171,6 +2211,7 @@ virDomainResume(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2191,8 +2232,7 @@ virDomainResume(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2219,6 +2259,7 @@ virDomainSave(virDomainPtr domain, const char *to) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2262,8 +2303,7 @@ virDomainSave(virDomainPtr domain, const char *to) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2286,6 +2326,7 @@ virDomainRestore(virConnectPtr conn, const char *from) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (conn->flags & VIR_CONNECT_RO) { @@ -2333,8 +2374,7 @@ virDomainRestore(virConnectPtr conn, const char *from) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -2361,6 +2401,7 @@ virDomainCoreDump(virDomainPtr domain, const char *to, int flags) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2410,8 +2451,7 @@ virDomainCoreDump(virDomainPtr domain, const char *to, int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2438,6 +2478,7 @@ virDomainShutdown(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2458,8 +2499,7 @@ virDomainShutdown(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2484,6 +2524,7 @@ virDomainReboot(virDomainPtr domain, unsigned int flags) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2504,8 +2545,7 @@ virDomainReboot(virDomainPtr domain, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2527,6 +2567,7 @@ virDomainGetName(virDomainPtr domain) if (!VIR_IS_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (domain->name); @@ -2550,12 +2591,12 @@ virDomainGetUUID(virDomainPtr domain, unsigned char *uuid) if (!VIR_IS_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (uuid == NULL) { virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__); - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return (-1); } @@ -2584,6 +2625,7 @@ virDomainGetUUIDString(virDomainPtr domain, char *buf) if (!VIR_IS_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (buf == NULL) { @@ -2598,8 +2640,7 @@ virDomainGetUUIDString(virDomainPtr domain, char *buf) return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2620,6 +2661,7 @@ virDomainGetID(virDomainPtr domain) if (!VIR_IS_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return ((unsigned int) -1); } return (domain->id); @@ -2644,6 +2686,7 @@ virDomainGetOSType(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -2660,8 +2703,7 @@ virDomainGetOSType(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return NULL; } @@ -2685,6 +2727,7 @@ virDomainGetMaxMemory(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (0); } @@ -2701,8 +2744,7 @@ virDomainGetMaxMemory(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return 0; } @@ -2728,6 +2770,7 @@ virDomainSetMaxMemory(virDomainPtr domain, unsigned long memory) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2751,8 +2794,7 @@ virDomainSetMaxMemory(virDomainPtr domain, unsigned long memory) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2778,6 +2820,7 @@ virDomainSetMemory(virDomainPtr domain, unsigned long memory) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -2802,8 +2845,7 @@ virDomainSetMemory(virDomainPtr domain, unsigned long memory) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2828,6 +2870,7 @@ virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (info == NULL) { @@ -2850,8 +2893,7 @@ virDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -2876,6 +2918,7 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -2900,8 +2943,7 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return NULL; } @@ -2930,12 +2972,13 @@ char *virConnectDomainXMLFromNative(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (nativeFormat == NULL || nativeConfig == NULL) { virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__); - return (NULL); + goto error; } if (conn->driver->domainXMLFromNative) { @@ -2952,8 +2995,7 @@ char *virConnectDomainXMLFromNative(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -2982,12 +3024,13 @@ char *virConnectDomainXMLToNative(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (nativeFormat == NULL || domainXml == NULL) { virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__); - return (NULL); + goto error; } if (conn->driver->domainXMLToNative) { @@ -3004,8 +3047,7 @@ char *virConnectDomainXMLToNative(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -3112,6 +3154,7 @@ virDomainMigrateVersion2 (virDomainPtr domain, */ if (!domain->conn->driver->domainDumpXML) { virLibConnError (domain->conn, VIR_ERR_INTERNAL_ERROR, __FUNCTION__); + virDispatchError(domain->conn); return NULL; } dom_xml = domain->conn->driver->domainDumpXML (domain, @@ -3134,6 +3177,7 @@ virDomainMigrateVersion2 (virDomainPtr domain, if (uri == NULL && uri_out == NULL) { virLibConnError (domain->conn, VIR_ERR_INTERNAL_ERROR, _("domainMigratePrepare2 did not set uri")); + virDispatchError(domain->conn); goto done; } if (uri_out) @@ -3178,6 +3222,7 @@ virDomainMigratePeer2Peer (virDomainPtr domain, { if (!domain->conn->driver->domainMigratePerform) { virLibConnError (domain->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); + virDispatchError(domain->conn); return -1; } @@ -3213,6 +3258,7 @@ virDomainMigrateDirect (virDomainPtr domain, { if (!domain->conn->driver->domainMigratePerform) { virLibConnError (domain->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); + virDispatchError(domain->conn); return -1; } @@ -3311,6 +3357,7 @@ virDomainMigrate (virDomainPtr domain, /* First checkout the source */ if (!VIR_IS_CONNECTED_DOMAIN (domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return NULL; } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -3382,8 +3429,7 @@ virDomainMigrate (virDomainPtr domain, return ddomain; error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return NULL; } @@ -3460,6 +3506,7 @@ virDomainMigrateToURI (virDomainPtr domain, /* First checkout the source */ if (!VIR_IS_CONNECTED_DOMAIN (domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -3497,8 +3544,7 @@ virDomainMigrateToURI (virDomainPtr domain, return 0; error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -3525,6 +3571,7 @@ virDomainMigratePrepare (virConnectPtr dconn, if (!VIR_IS_CONNECT (dconn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -3546,8 +3593,7 @@ virDomainMigratePrepare (virConnectPtr dconn, virLibConnError (dconn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dconn); + virDispatchError(dconn); return -1; } @@ -3573,6 +3619,7 @@ virDomainMigratePerform (virDomainPtr domain, if (!VIR_IS_CONNECTED_DOMAIN (domain)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = domain->conn; @@ -3595,8 +3642,7 @@ virDomainMigratePerform (virDomainPtr domain, virLibDomainError (domain, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -3620,6 +3666,7 @@ virDomainMigrateFinish (virConnectPtr dconn, if (!VIR_IS_CONNECT (dconn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -3641,8 +3688,7 @@ virDomainMigrateFinish (virConnectPtr dconn, virLibConnError (dconn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dconn); + virDispatchError(dconn); return NULL; } @@ -3671,6 +3717,7 @@ virDomainMigratePrepare2 (virConnectPtr dconn, if (!VIR_IS_CONNECT (dconn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -3693,8 +3740,7 @@ virDomainMigratePrepare2 (virConnectPtr dconn, virLibConnError (dconn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dconn); + virDispatchError(dconn); return -1; } @@ -3719,6 +3765,7 @@ virDomainMigrateFinish2 (virConnectPtr dconn, if (!VIR_IS_CONNECT (dconn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -3741,8 +3788,7 @@ virDomainMigrateFinish2 (virConnectPtr dconn, virLibConnError (dconn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dconn); + virDispatchError(dconn); return NULL; } @@ -3768,6 +3814,7 @@ virDomainMigratePrepareTunnel(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -3793,8 +3840,7 @@ virDomainMigratePrepareTunnel(virConnectPtr conn, virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -3817,6 +3863,7 @@ virNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (info == NULL) { @@ -3835,8 +3882,7 @@ virNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -3859,6 +3905,7 @@ virConnectGetCapabilities (virConnectPtr conn) if (!VIR_IS_CONNECT (conn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -3873,8 +3920,7 @@ virConnectGetCapabilities (virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -3897,6 +3943,7 @@ virNodeGetFreeMemory(virConnectPtr conn) if (!VIR_IS_CONNECT (conn)) { virLibConnError (NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return 0; } @@ -3911,8 +3958,7 @@ virNodeGetFreeMemory(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return 0; } @@ -3936,6 +3982,7 @@ virDomainGetSchedulerType(virDomainPtr domain, int *nparams) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return NULL; } conn = domain->conn; @@ -3950,8 +3997,7 @@ virDomainGetSchedulerType(virDomainPtr domain, int *nparams) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return NULL; } @@ -3981,6 +4027,7 @@ virDomainGetSchedulerParameters(virDomainPtr domain, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = domain->conn; @@ -3996,8 +4043,7 @@ virDomainGetSchedulerParameters(virDomainPtr domain, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4024,6 +4070,7 @@ virDomainSetSchedulerParameters(virDomainPtr domain, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -4043,8 +4090,7 @@ virDomainSetSchedulerParameters(virDomainPtr domain, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4084,6 +4130,7 @@ virDomainBlockStats (virDomainPtr dom, const char *path, if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (!path || !stats || size > sizeof stats2) { @@ -4103,8 +4150,7 @@ virDomainBlockStats (virDomainPtr dom, const char *path, virLibDomainError (dom, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -4142,6 +4188,7 @@ virDomainInterfaceStats (virDomainPtr dom, const char *path, if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (!path || !stats || size > sizeof stats2) { @@ -4161,8 +4208,7 @@ virDomainInterfaceStats (virDomainPtr dom, const char *path, virLibDomainError (dom, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -4213,6 +4259,7 @@ int virDomainMemoryStats (virDomainPtr dom, virDomainMemoryStatPtr stats, if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (!stats || nr_stats == 0) @@ -4232,8 +4279,7 @@ int virDomainMemoryStats (virDomainPtr dom, virDomainMemoryStatPtr stats, virLibDomainError (dom, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -4292,6 +4338,7 @@ virDomainBlockPeek (virDomainPtr dom, if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = dom->conn; @@ -4332,8 +4379,7 @@ virDomainBlockPeek (virDomainPtr dom, virLibDomainError (dom, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -4383,6 +4429,7 @@ virDomainMemoryPeek (virDomainPtr dom, if (!VIR_IS_CONNECTED_DOMAIN (dom)) { virLibDomainError (NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = dom->conn; @@ -4440,8 +4487,7 @@ virDomainMemoryPeek (virDomainPtr dom, virLibDomainError (dom, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -4472,6 +4518,7 @@ virDomainDefineXML(virConnectPtr conn, const char *xml) { if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (conn->flags & VIR_CONNECT_RO) { @@ -4494,8 +4541,7 @@ virDomainDefineXML(virConnectPtr conn, const char *xml) { virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -4516,6 +4562,7 @@ virDomainUndefine(virDomainPtr domain) { if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = domain->conn; @@ -4535,8 +4582,7 @@ virDomainUndefine(virDomainPtr domain) { virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4557,6 +4603,7 @@ virConnectNumOfDefinedDomains(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -4571,8 +4618,7 @@ virConnectNumOfDefinedDomains(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -4596,6 +4642,7 @@ virConnectListDefinedDomains(virConnectPtr conn, char **const names, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -4615,8 +4662,7 @@ virConnectListDefinedDomains(virConnectPtr conn, char **const names, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -4638,6 +4684,7 @@ virDomainCreate(virDomainPtr domain) { if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = domain->conn; @@ -4657,8 +4704,7 @@ virDomainCreate(virDomainPtr domain) { virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4684,6 +4730,7 @@ virDomainGetAutostart(virDomainPtr domain, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (!autostart) { @@ -4704,8 +4751,7 @@ virDomainGetAutostart(virDomainPtr domain, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4730,6 +4776,7 @@ virDomainSetAutostart(virDomainPtr domain, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -4751,8 +4798,7 @@ virDomainSetAutostart(virDomainPtr domain, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4779,6 +4825,7 @@ virDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -4803,8 +4850,7 @@ virDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4837,6 +4883,7 @@ virDomainPinVcpu(virDomainPtr domain, unsigned int vcpu, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -4862,8 +4909,7 @@ virDomainPinVcpu(virDomainPtr domain, unsigned int vcpu, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4900,6 +4946,7 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if ((info == NULL) || (maxinfo < 1)) { @@ -4929,8 +4976,7 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4956,6 +5002,7 @@ virDomainGetMaxVcpus(virDomainPtr domain) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -4972,8 +5019,7 @@ virDomainGetMaxVcpus(virDomainPtr domain) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -4995,6 +5041,7 @@ virDomainGetSecurityLabel(virDomainPtr domain, virSecurityLabelPtr seclabel) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -5016,8 +5063,7 @@ virDomainGetSecurityLabel(virDomainPtr domain, virSecurityLabelPtr seclabel) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -5036,7 +5082,8 @@ int virNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel) { if (!VIR_IS_CONNECT(conn)) { - virLibConnError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__); + virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -5056,8 +5103,7 @@ virNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5080,6 +5126,7 @@ virDomainAttachDevice(virDomainPtr domain, const char *xml) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -5099,8 +5146,7 @@ virDomainAttachDevice(virDomainPtr domain, const char *xml) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -5123,6 +5169,7 @@ virDomainDetachDevice(virDomainPtr domain, const char *xml) if (!VIR_IS_CONNECTED_DOMAIN(domain)) { virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (domain->conn->flags & VIR_CONNECT_RO) { @@ -5142,8 +5189,7 @@ virDomainDetachDevice(virDomainPtr domain, const char *xml) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(domain->conn); + virDispatchError(domain->conn); return -1; } @@ -5175,7 +5221,8 @@ virNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems, virResetLastError(); if (!VIR_IS_CONNECT(conn)) { - virLibConnError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__); + virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5195,8 +5242,7 @@ virNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5223,6 +5269,7 @@ virNetworkGetConnect (virNetworkPtr net) if (!VIR_IS_CONNECTED_NETWORK (net)) { virLibNetworkError (NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return NULL; } return net->conn; @@ -5245,6 +5292,7 @@ virConnectNumOfNetworks(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5259,8 +5307,7 @@ virConnectNumOfNetworks(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5283,6 +5330,7 @@ virConnectListNetworks(virConnectPtr conn, char **const names, int maxnames) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5302,8 +5350,7 @@ virConnectListNetworks(virConnectPtr conn, char **const names, int maxnames) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5324,6 +5371,7 @@ virConnectNumOfDefinedNetworks(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5338,8 +5386,7 @@ virConnectNumOfDefinedNetworks(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5363,6 +5410,7 @@ virConnectListDefinedNetworks(virConnectPtr conn, char **const names, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5383,8 +5431,7 @@ virConnectListDefinedNetworks(virConnectPtr conn, char **const names, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -5407,6 +5454,7 @@ virNetworkLookupByName(virConnectPtr conn, const char *name) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (name == NULL) { @@ -5425,8 +5473,7 @@ virNetworkLookupByName(virConnectPtr conn, const char *name) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -5449,6 +5496,7 @@ virNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuid == NULL) { @@ -5467,8 +5515,7 @@ virNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -5492,6 +5539,7 @@ virNetworkLookupByUUIDString(virConnectPtr conn, const char *uuidstr) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuidstr == NULL) { @@ -5507,8 +5555,7 @@ virNetworkLookupByUUIDString(virConnectPtr conn, const char *uuidstr) return virNetworkLookupByUUID(conn, &uuid[0]); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -5531,6 +5578,7 @@ virNetworkCreateXML(virConnectPtr conn, const char *xmlDesc) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (xmlDesc == NULL) { @@ -5553,8 +5601,7 @@ virNetworkCreateXML(virConnectPtr conn, const char *xmlDesc) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -5576,6 +5623,7 @@ virNetworkDefineXML(virConnectPtr conn, const char *xml) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (conn->flags & VIR_CONNECT_RO) { @@ -5598,8 +5646,7 @@ virNetworkDefineXML(virConnectPtr conn, const char *xml) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -5620,6 +5667,7 @@ virNetworkUndefine(virNetworkPtr network) { if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = network->conn; @@ -5639,8 +5687,7 @@ virNetworkUndefine(virNetworkPtr network) { virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -5663,6 +5710,7 @@ virNetworkCreate(virNetworkPtr network) if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = network->conn; @@ -5682,8 +5730,7 @@ virNetworkCreate(virNetworkPtr network) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -5708,6 +5755,7 @@ virNetworkDestroy(virNetworkPtr network) if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -5728,8 +5776,7 @@ virNetworkDestroy(virNetworkPtr network) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -5751,10 +5798,13 @@ virNetworkFree(virNetworkPtr network) if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefNetwork(network) < 0) + if (virUnrefNetwork(network) < 0) { + virDispatchError(NULL); return (-1); + } return(0); } @@ -5780,6 +5830,7 @@ virNetworkRef(virNetworkPtr network) { if ((!VIR_IS_CONNECTED_NETWORK(network))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&network->conn->lock); @@ -5807,6 +5858,7 @@ virNetworkGetName(virNetworkPtr network) if (!VIR_IS_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (network->name); @@ -5830,6 +5882,7 @@ virNetworkGetUUID(virNetworkPtr network, unsigned char *uuid) if (!VIR_IS_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (uuid == NULL) { @@ -5842,8 +5895,7 @@ virNetworkGetUUID(virNetworkPtr network, unsigned char *uuid) return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -5867,6 +5919,7 @@ virNetworkGetUUIDString(virNetworkPtr network, char *buf) if (!VIR_IS_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (buf == NULL) { @@ -5875,14 +5928,13 @@ virNetworkGetUUIDString(virNetworkPtr network, char *buf) } if (virNetworkGetUUID(network, &uuid[0])) - return (-1); + goto error; virUUIDFormat(uuid, buf); return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -5907,6 +5959,7 @@ virNetworkGetXMLDesc(virNetworkPtr network, int flags) if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (flags != 0) { @@ -5927,8 +5980,7 @@ virNetworkGetXMLDesc(virNetworkPtr network, int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return NULL; } @@ -5952,6 +6004,7 @@ virNetworkGetBridgeName(virNetworkPtr network) if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -5968,8 +6021,7 @@ virNetworkGetBridgeName(virNetworkPtr network) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return NULL; } @@ -5995,6 +6047,7 @@ virNetworkGetAutostart(virNetworkPtr network, if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (!autostart) { @@ -6015,8 +6068,7 @@ virNetworkGetAutostart(virNetworkPtr network, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -6041,6 +6093,7 @@ virNetworkSetAutostart(virNetworkPtr network, if (!VIR_IS_CONNECTED_NETWORK(network)) { virLibNetworkError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6062,8 +6115,7 @@ virNetworkSetAutostart(virNetworkPtr network, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(network->conn); + virDispatchError(network->conn); return -1; } @@ -6090,6 +6142,7 @@ virInterfaceGetConnect (virInterfacePtr iface) if (!VIR_IS_CONNECTED_INTERFACE (iface)) { virLibInterfaceError (NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return NULL; } return iface->conn; @@ -6112,6 +6165,7 @@ virConnectNumOfInterfaces(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6126,8 +6180,7 @@ virConnectNumOfInterfaces(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6151,6 +6204,7 @@ virConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6170,8 +6224,7 @@ virConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6192,6 +6245,7 @@ virConnectNumOfDefinedInterfaces(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6206,8 +6260,7 @@ virConnectNumOfDefinedInterfaces(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6233,6 +6286,7 @@ virConnectListDefinedInterfaces(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6252,8 +6306,7 @@ virConnectListDefinedInterfaces(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6276,6 +6329,7 @@ virInterfaceLookupByName(virConnectPtr conn, const char *name) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (name == NULL) { @@ -6294,8 +6348,7 @@ virInterfaceLookupByName(virConnectPtr conn, const char *name) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -6318,6 +6371,7 @@ virInterfaceLookupByMACString(virConnectPtr conn, const char *macstr) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (macstr == NULL) { @@ -6336,8 +6390,7 @@ virInterfaceLookupByMACString(virConnectPtr conn, const char *macstr) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -6359,6 +6412,7 @@ virInterfaceGetName(virInterfacePtr iface) if (!VIR_IS_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (iface->name); @@ -6384,6 +6438,7 @@ virInterfaceGetMACString(virInterfacePtr iface) if (!VIR_IS_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (iface->mac); @@ -6417,6 +6472,7 @@ virInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags) if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if ((flags & ~VIR_INTERFACE_XML_INACTIVE) != 0) { @@ -6437,8 +6493,7 @@ virInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(iface->conn); + virDispatchError(iface->conn); return NULL; } @@ -6461,6 +6516,7 @@ virInterfaceDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (conn->flags & VIR_CONNECT_RO) { @@ -6483,8 +6539,7 @@ virInterfaceDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -6506,6 +6561,7 @@ virInterfaceUndefine(virInterfacePtr iface) { if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = iface->conn; @@ -6525,8 +6581,7 @@ virInterfaceUndefine(virInterfacePtr iface) { virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(iface->conn); + virDispatchError(iface->conn); return -1; } @@ -6549,6 +6604,7 @@ virInterfaceCreate(virInterfacePtr iface, unsigned int flags) if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = iface->conn; @@ -6568,8 +6624,7 @@ virInterfaceCreate(virInterfacePtr iface, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(iface->conn); + virDispatchError(iface->conn); return -1; } @@ -6594,6 +6649,7 @@ virInterfaceDestroy(virInterfacePtr iface, unsigned int flags) if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6614,8 +6670,7 @@ virInterfaceDestroy(virInterfacePtr iface, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(iface->conn); + virDispatchError(iface->conn); return -1; } @@ -6641,6 +6696,7 @@ virInterfaceRef(virInterfacePtr iface) { if ((!VIR_IS_CONNECTED_INTERFACE(iface))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&iface->conn->lock); @@ -6668,10 +6724,13 @@ virInterfaceFree(virInterfacePtr iface) if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibInterfaceError(NULL, VIR_ERR_INVALID_INTERFACE, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefInterface(iface) < 0) + if (virUnrefInterface(iface) < 0) { + virDispatchError(NULL); return (-1); + } return(0); } @@ -6699,6 +6758,7 @@ virStoragePoolGetConnect (virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL (pool)) { virLibStoragePoolError (NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return NULL; } return pool->conn; @@ -6721,6 +6781,7 @@ virConnectNumOfStoragePools (virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6735,8 +6796,7 @@ virConnectNumOfStoragePools (virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6763,6 +6823,7 @@ virConnectListStoragePools (virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6782,8 +6843,7 @@ virConnectListStoragePools (virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6805,6 +6865,7 @@ virConnectNumOfDefinedStoragePools(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6819,8 +6880,7 @@ virConnectNumOfDefinedStoragePools(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6848,6 +6908,7 @@ virConnectListDefinedStoragePools(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -6867,8 +6928,7 @@ virConnectListDefinedStoragePools(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -6906,6 +6966,7 @@ virConnectFindStoragePoolSources(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } if (type == NULL) { @@ -6929,8 +6990,7 @@ virConnectFindStoragePoolSources(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -6954,6 +7014,7 @@ virStoragePoolLookupByName(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (name == NULL) { @@ -6972,8 +7033,7 @@ virStoragePoolLookupByName(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -6997,6 +7057,7 @@ virStoragePoolLookupByUUID(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuid == NULL) { @@ -7015,8 +7076,7 @@ virStoragePoolLookupByUUID(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -7041,6 +7101,7 @@ virStoragePoolLookupByUUIDString(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuidstr == NULL) { @@ -7056,8 +7117,7 @@ virStoragePoolLookupByUUIDString(virConnectPtr conn, return virStoragePoolLookupByUUID(conn, uuid); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -7079,6 +7139,7 @@ virStoragePoolLookupByVolume(virStorageVolPtr vol) if (!VIR_IS_CONNECTED_STORAGE_VOL(vol)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -7093,8 +7154,7 @@ virStoragePoolLookupByVolume(virStorageVolPtr vol) virLibConnError (vol->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(vol->conn); + virDispatchError(vol->conn); return NULL; } @@ -7121,6 +7181,7 @@ virStoragePoolCreateXML(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (xmlDesc == NULL) { @@ -7143,8 +7204,7 @@ virStoragePoolCreateXML(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -7170,6 +7230,7 @@ virStoragePoolDefineXML(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (conn->flags & VIR_CONNECT_RO) { @@ -7192,8 +7253,7 @@ virStoragePoolDefineXML(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -7217,6 +7277,7 @@ virStoragePoolBuild(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = pool->conn; @@ -7236,8 +7297,7 @@ virStoragePoolBuild(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7260,6 +7320,7 @@ virStoragePoolUndefine(virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = pool->conn; @@ -7279,8 +7340,7 @@ virStoragePoolUndefine(virStoragePoolPtr pool) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7305,6 +7365,7 @@ virStoragePoolCreate(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } conn = pool->conn; @@ -7324,8 +7385,7 @@ virStoragePoolCreate(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7352,6 +7412,7 @@ virStoragePoolDestroy(virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -7372,8 +7433,7 @@ virStoragePoolDestroy(virStoragePoolPtr pool) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7399,6 +7459,7 @@ virStoragePoolDelete(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -7419,8 +7480,7 @@ virStoragePoolDelete(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7443,10 +7503,13 @@ virStoragePoolFree(virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefStoragePool(pool) < 0) + if (virUnrefStoragePool(pool) < 0) { + virDispatchError(NULL); return (-1); + } return(0); } @@ -7474,6 +7537,7 @@ virStoragePoolRef(virStoragePoolPtr pool) { if ((!VIR_IS_CONNECTED_STORAGE_POOL(pool))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&pool->conn->lock); @@ -7505,6 +7569,7 @@ virStoragePoolRefresh(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -7525,8 +7590,7 @@ virStoragePoolRefresh(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7548,6 +7612,7 @@ virStoragePoolGetName(virStoragePoolPtr pool) if (!VIR_IS_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (pool->name); @@ -7573,6 +7638,7 @@ virStoragePoolGetUUID(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (uuid == NULL) { @@ -7585,8 +7651,7 @@ virStoragePoolGetUUID(virStoragePoolPtr pool, return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7610,6 +7675,7 @@ virStoragePoolGetUUIDString(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (buf == NULL) { @@ -7624,8 +7690,7 @@ virStoragePoolGetUUIDString(virStoragePoolPtr pool, return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7651,6 +7716,7 @@ virStoragePoolGetInfo(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (info == NULL) { @@ -7673,8 +7739,7 @@ virStoragePoolGetInfo(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7701,6 +7766,7 @@ virStoragePoolGetXMLDesc(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (flags != 0) { @@ -7721,8 +7787,7 @@ virStoragePoolGetXMLDesc(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return NULL; } @@ -7748,6 +7813,7 @@ virStoragePoolGetAutostart(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (!autostart) { @@ -7768,8 +7834,7 @@ virStoragePoolGetAutostart(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7794,6 +7859,7 @@ virStoragePoolSetAutostart(virStoragePoolPtr pool, if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibStoragePoolError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -7815,8 +7881,7 @@ virStoragePoolSetAutostart(virStoragePoolPtr pool, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7838,6 +7903,7 @@ virStoragePoolNumOfVolumes(virStoragePoolPtr pool) if (!VIR_IS_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -7852,8 +7918,7 @@ virStoragePoolNumOfVolumes(virStoragePoolPtr pool) virLibConnError (pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7880,6 +7945,7 @@ virStoragePoolListVolumes(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -7899,8 +7965,7 @@ virStoragePoolListVolumes(virStoragePoolPtr pool, virLibConnError (pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -7928,6 +7993,7 @@ virStorageVolGetConnect (virStorageVolPtr vol) if (!VIR_IS_STORAGE_VOL (vol)) { virLibStoragePoolError (NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return NULL; } return vol->conn; @@ -7954,6 +8020,7 @@ virStorageVolLookupByName(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (name == NULL) { @@ -7972,8 +8039,7 @@ virStorageVolLookupByName(virStoragePoolPtr pool, virLibConnError (pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return NULL; } @@ -7999,6 +8065,7 @@ virStorageVolLookupByKey(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (key == NULL) { @@ -8017,8 +8084,7 @@ virStorageVolLookupByKey(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -8042,6 +8108,7 @@ virStorageVolLookupByPath(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (path == NULL) { @@ -8060,8 +8127,7 @@ virStorageVolLookupByPath(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -8084,6 +8150,7 @@ virStorageVolGetName(virStorageVolPtr vol) if (!VIR_IS_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (vol->name); @@ -8109,6 +8176,7 @@ virStorageVolGetKey(virStorageVolPtr vol) if (!VIR_IS_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (vol->key); @@ -8138,6 +8206,7 @@ virStorageVolCreateXML(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -8157,8 +8226,7 @@ virStorageVolCreateXML(virStoragePoolPtr pool, virLibConnError (pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return NULL; } @@ -8189,12 +8257,13 @@ virStorageVolCreateXMLFrom(virStoragePoolPtr pool, if (!VIR_IS_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (!VIR_IS_STORAGE_VOL(clonevol)) { virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); - return (NULL); + goto error; } if (pool->conn->flags & VIR_CONNECT_RO || @@ -8216,8 +8285,7 @@ virStorageVolCreateXMLFrom(virStoragePoolPtr pool, virLibConnError (pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return NULL; } @@ -8242,6 +8310,7 @@ virStorageVolDelete(virStorageVolPtr vol, if (!VIR_IS_CONNECTED_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -8262,8 +8331,7 @@ virStorageVolDelete(virStorageVolPtr vol, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(vol->conn); + virDispatchError(vol->conn); return -1; } @@ -8286,10 +8354,13 @@ virStorageVolFree(virStorageVolPtr vol) if (!VIR_IS_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefStorageVol(vol) < 0) + if (virUnrefStorageVol(vol) < 0) { + virDispatchError(NULL); return (-1); + } return(0); } @@ -8316,6 +8387,7 @@ virStorageVolRef(virStorageVolPtr vol) { if ((!VIR_IS_CONNECTED_STORAGE_VOL(vol))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&vol->conn->lock); @@ -8346,6 +8418,7 @@ virStorageVolGetInfo(virStorageVolPtr vol, if (!VIR_IS_CONNECTED_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (info == NULL) { @@ -8368,8 +8441,7 @@ virStorageVolGetInfo(virStorageVolPtr vol, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(vol->conn); + virDispatchError(vol->conn); return -1; } @@ -8395,6 +8467,7 @@ virStorageVolGetXMLDesc(virStorageVolPtr vol, if (!VIR_IS_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (flags != 0) { @@ -8415,8 +8488,7 @@ virStorageVolGetXMLDesc(virStorageVolPtr vol, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(vol->conn); + virDispatchError(vol->conn); return NULL; } @@ -8443,6 +8515,7 @@ virStorageVolGetPath(virStorageVolPtr vol) if (!VIR_IS_STORAGE_VOL(vol)) { virLibStorageVolError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -8459,8 +8532,7 @@ virStorageVolGetPath(virStorageVolPtr vol) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(vol->conn); + virDispatchError(vol->conn); return NULL; } @@ -8487,6 +8559,7 @@ virNodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (flags != 0) { @@ -8505,8 +8578,7 @@ virNodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -8539,6 +8611,7 @@ virNodeListDevices(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if ((flags != 0) || (names == NULL) || (maxnames < 0)) { @@ -8557,8 +8630,7 @@ virNodeListDevices(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -8580,6 +8652,7 @@ virNodeDevicePtr virNodeDeviceLookupByName(virConnectPtr conn, const char *name) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -8599,8 +8672,7 @@ virNodeDevicePtr virNodeDeviceLookupByName(virConnectPtr conn, const char *name) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -8623,6 +8695,7 @@ char *virNodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -8637,8 +8710,7 @@ char *virNodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags) virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return NULL; } @@ -8657,6 +8729,7 @@ const char *virNodeDeviceGetName(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -8680,6 +8753,7 @@ const char *virNodeDeviceGetParent(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -8688,7 +8762,7 @@ const char *virNodeDeviceGetParent(virNodeDevicePtr dev) dev->parent = dev->conn->deviceMonitor->deviceGetParent (dev); } else { virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); - virSetConnError(dev->conn); + virDispatchError(dev->conn); return NULL; } } @@ -8711,6 +8785,7 @@ int virNodeDeviceNumOfCaps(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -8725,8 +8800,7 @@ int virNodeDeviceNumOfCaps(virNodeDevicePtr dev) virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return -1; } @@ -8751,6 +8825,7 @@ int virNodeDeviceListCaps(virNodeDevicePtr dev, if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -8765,8 +8840,7 @@ int virNodeDeviceListCaps(virNodeDevicePtr dev, virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return -1; } @@ -8788,10 +8862,13 @@ int virNodeDeviceFree(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return (-1); } - if (virUnrefNodeDevice(dev) < 0) + if (virUnrefNodeDevice(dev) < 0) { + virDispatchError(NULL); return (-1); + } return(0); } @@ -8818,6 +8895,7 @@ virNodeDeviceRef(virNodeDevicePtr dev) { if ((!VIR_IS_CONNECTED_NODE_DEVICE(dev))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&dev->conn->lock); @@ -8855,6 +8933,7 @@ virNodeDeviceDettach(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -8869,8 +8948,7 @@ virNodeDeviceDettach(virNodeDevicePtr dev) virLibConnError(dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return (-1); } @@ -8898,6 +8976,7 @@ virNodeDeviceReAttach(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -8912,8 +8991,7 @@ virNodeDeviceReAttach(virNodeDevicePtr dev) virLibConnError(dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return (-1); } @@ -8943,6 +9021,7 @@ virNodeDeviceReset(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -8957,8 +9036,7 @@ virNodeDeviceReset(virNodeDevicePtr dev) virLibConnError(dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return (-1); } @@ -8985,6 +9063,7 @@ virNodeDeviceCreateXML(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -9009,8 +9088,7 @@ virNodeDeviceCreateXML(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9033,6 +9111,7 @@ virNodeDeviceDestroy(virNodeDevicePtr dev) if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -9054,8 +9133,7 @@ virNodeDeviceDestroy(virNodeDevicePtr dev) virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dev->conn); + virDispatchError(dev->conn); return -1; } @@ -9094,6 +9172,7 @@ virConnectDomainEventRegister(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (cb == NULL) { @@ -9111,8 +9190,7 @@ virConnectDomainEventRegister(virConnectPtr conn, virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9137,6 +9215,7 @@ virConnectDomainEventDeregister(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (cb == NULL) { @@ -9153,8 +9232,7 @@ virConnectDomainEventDeregister(virConnectPtr conn, virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9179,6 +9257,7 @@ virSecretGetConnect (virSecretPtr secret) if (!VIR_IS_CONNECTED_SECRET (secret)) { virLibSecretError (NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return NULL; } return secret->conn; @@ -9201,6 +9280,7 @@ virConnectNumOfSecrets(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } @@ -9217,8 +9297,7 @@ virConnectNumOfSecrets(virConnectPtr conn) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9241,6 +9320,7 @@ virConnectListSecrets(virConnectPtr conn, char **uuids, int maxuuids) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return -1; } if (uuids == NULL || maxuuids < 0) { @@ -9260,8 +9340,7 @@ virConnectListSecrets(virConnectPtr conn, char **uuids, int maxuuids) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9285,6 +9364,7 @@ virSecretLookupByUUID(virConnectPtr conn, const unsigned char *uuid) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuid == NULL) { @@ -9304,8 +9384,7 @@ virSecretLookupByUUID(virConnectPtr conn, const unsigned char *uuid) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9330,6 +9409,7 @@ virSecretLookupByUUIDString(virConnectPtr conn, const char *uuidstr) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (uuidstr == NULL) { @@ -9345,8 +9425,7 @@ virSecretLookupByUUIDString(virConnectPtr conn, const char *uuidstr) return virSecretLookupByUUID(conn, &uuid[0]); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9375,6 +9454,7 @@ virSecretLookupByUsage(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } if (usageID == NULL) { @@ -9394,8 +9474,7 @@ virSecretLookupByUsage(virConnectPtr conn, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9424,6 +9503,7 @@ virSecretDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return NULL; } if (conn->flags & VIR_CONNECT_RO) { @@ -9447,8 +9527,7 @@ virSecretDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9471,12 +9550,12 @@ virSecretGetUUID(virSecretPtr secret, unsigned char *uuid) if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return -1; } if (uuid == NULL) { virLibSecretError(secret, VIR_ERR_INVALID_ARG, __FUNCTION__); - /* Copy to connection error object for back compatability */ - virSetConnError(secret->conn); + virDispatchError(secret->conn); return -1; } @@ -9505,6 +9584,7 @@ virSecretGetUUIDString(virSecretPtr secret, char *buf) if (!VIR_IS_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (buf == NULL) { @@ -9519,8 +9599,7 @@ virSecretGetUUIDString(virSecretPtr secret, char *buf) return (0); error: - /* Copy to connection error object for back compatability */ - virSetConnError(secret->conn); + virDispatchError(secret->conn); return -1; } @@ -9546,6 +9625,7 @@ virSecretGetUsageType(virSecretPtr secret) if (!VIR_IS_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return (-1); } return (secret->usageType); @@ -9576,6 +9656,7 @@ virSecretGetUsageID(virSecretPtr secret) if (!VIR_IS_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return (NULL); } return (secret->usageID); @@ -9603,6 +9684,7 @@ virSecretGetXMLDesc(virSecretPtr secret, unsigned int flags) if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return NULL; } @@ -9619,8 +9701,7 @@ virSecretGetXMLDesc(virSecretPtr secret, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9648,6 +9729,7 @@ virSecretSetValue(virSecretPtr secret, const unsigned char *value, if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = secret->conn; @@ -9672,8 +9754,7 @@ virSecretSetValue(virSecretPtr secret, const unsigned char *value, virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9699,6 +9780,7 @@ virSecretGetValue(virSecretPtr secret, size_t *value_size, unsigned int flags) if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return NULL; } conn = secret->conn; @@ -9725,8 +9807,7 @@ virSecretGetValue(virSecretPtr secret, size_t *value_size, unsigned int flags) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return NULL; } @@ -9750,6 +9831,7 @@ virSecretUndefine(virSecretPtr secret) if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return -1; } conn = secret->conn; @@ -9770,8 +9852,7 @@ virSecretUndefine(virSecretPtr secret) virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -9796,6 +9877,7 @@ virSecretRef(virSecretPtr secret) { if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return -1; } virMutexLock(&secret->conn->lock); @@ -9822,10 +9904,13 @@ virSecretFree(virSecretPtr secret) if (!VIR_IS_CONNECTED_SECRET(secret)) { virLibSecretError(NULL, VIR_ERR_INVALID_SECRET, __FUNCTION__); + virDispatchError(NULL); return -1; } - if (virUnrefSecret(secret) < 0) + if (virUnrefSecret(secret) < 0) { + virDispatchError(NULL); return -1; + } return 0; } @@ -9861,6 +9946,7 @@ virStreamNew(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (NULL); } @@ -9888,6 +9974,7 @@ virStreamRef(virStreamPtr stream) { if ((!VIR_IS_CONNECTED_STREAM(stream))) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); + virDispatchError(NULL); return(-1); } virMutexLock(&stream->conn->lock); @@ -9972,6 +10059,7 @@ int virStreamSend(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -9989,8 +10077,7 @@ int virStreamSend(virStreamPtr stream, virLibConnError(stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10067,6 +10154,7 @@ int virStreamRecv(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10084,8 +10172,7 @@ int virStreamRecv(virStreamPtr stream, virLibConnError(stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10143,6 +10230,7 @@ int virStreamSendAll(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10179,9 +10267,8 @@ int virStreamSendAll(virStreamPtr stream, cleanup: VIR_FREE(bytes); - /* Copy to connection error object for back compatability */ if (ret != 0) - virSetConnError(stream->conn); + virDispatchError(stream->conn); return ret; } @@ -10240,6 +10327,7 @@ int virStreamRecvAll(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10277,9 +10365,8 @@ int virStreamRecvAll(virStreamPtr stream, cleanup: VIR_FREE(bytes); - /* Copy to connection error object for back compatability */ if (ret != 0) - virSetConnError(stream->conn); + virDispatchError(stream->conn); return ret; } @@ -10312,6 +10399,7 @@ int virStreamEventAddCallback(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10327,8 +10415,7 @@ int virStreamEventAddCallback(virStreamPtr stream, virLibConnError(stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10354,6 +10441,7 @@ int virStreamEventUpdateCallback(virStreamPtr stream, if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10369,8 +10457,7 @@ int virStreamEventUpdateCallback(virStreamPtr stream, virLibConnError (stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10390,6 +10477,7 @@ int virStreamEventRemoveCallback(virStreamPtr stream) if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10405,8 +10493,7 @@ int virStreamEventRemoveCallback(virStreamPtr stream) virLibConnError (stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10433,6 +10520,7 @@ int virStreamFinish(virStreamPtr stream) if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10448,8 +10536,7 @@ int virStreamFinish(virStreamPtr stream) virLibConnError (stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10474,6 +10561,7 @@ int virStreamAbort(virStreamPtr stream) if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } @@ -10489,8 +10577,7 @@ int virStreamAbort(virStreamPtr stream) virLibConnError (stream->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(stream->conn); + virDispatchError(stream->conn); return -1; } @@ -10516,13 +10603,16 @@ int virStreamFree(virStreamPtr stream) if (!VIR_IS_CONNECTED_STREAM(stream)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } /* XXX Enforce shutdown before free'ing resources ? */ - if (virUnrefStream(stream) < 0) + if (virUnrefStream(stream) < 0) { + virDispatchError(NULL); return (-1); + } return (0); } @@ -10543,6 +10633,7 @@ int virDomainIsActive(virDomainPtr dom) if (!VIR_IS_CONNECTED_DOMAIN(dom)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (dom->conn->driver->domainIsActive) { @@ -10555,8 +10646,7 @@ int virDomainIsActive(virDomainPtr dom) virLibConnError(dom->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -10577,6 +10667,7 @@ int virDomainIsPersistent(virDomainPtr dom) if (!VIR_IS_CONNECTED_DOMAIN(dom)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (dom->conn->driver->domainIsPersistent) { @@ -10589,8 +10680,7 @@ int virDomainIsPersistent(virDomainPtr dom) virLibConnError(dom->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(dom->conn); + virDispatchError(dom->conn); return -1; } @@ -10610,6 +10700,7 @@ int virNetworkIsActive(virNetworkPtr net) if (!VIR_IS_CONNECTED_NETWORK(net)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (net->conn->networkDriver->networkIsActive) { @@ -10622,8 +10713,7 @@ int virNetworkIsActive(virNetworkPtr net) virLibConnError(net->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(net->conn); + virDispatchError(net->conn); return -1; } @@ -10645,6 +10735,7 @@ int virNetworkIsPersistent(virNetworkPtr net) if (!VIR_IS_CONNECTED_NETWORK(net)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (net->conn->networkDriver->networkIsPersistent) { @@ -10657,8 +10748,7 @@ int virNetworkIsPersistent(virNetworkPtr net) virLibConnError(net->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(net->conn); + virDispatchError(net->conn); return -1; } @@ -10679,6 +10769,7 @@ int virStoragePoolIsActive(virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (pool->conn->storageDriver->poolIsActive) { @@ -10691,8 +10782,7 @@ int virStoragePoolIsActive(virStoragePoolPtr pool) virLibConnError(pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -10714,6 +10804,7 @@ int virStoragePoolIsPersistent(virStoragePoolPtr pool) if (!VIR_IS_CONNECTED_STORAGE_POOL(pool)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (pool->conn->storageDriver->poolIsPersistent) { @@ -10726,8 +10817,7 @@ int virStoragePoolIsPersistent(virStoragePoolPtr pool) virLibConnError(pool->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(pool->conn); + virDispatchError(pool->conn); return -1; } @@ -10748,6 +10838,7 @@ int virInterfaceIsActive(virInterfacePtr iface) if (!VIR_IS_CONNECTED_INTERFACE(iface)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (iface->conn->interfaceDriver->interfaceIsActive) { @@ -10760,8 +10851,7 @@ int virInterfaceIsActive(virInterfacePtr iface) virLibConnError(iface->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(iface->conn); + virDispatchError(iface->conn); return -1; } @@ -10782,6 +10872,7 @@ int virConnectIsEncrypted(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (conn->driver->isEncrypted) { @@ -10794,8 +10885,7 @@ int virConnectIsEncrypted(virConnectPtr conn) virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -10819,6 +10909,7 @@ int virConnectIsSecure(virConnectPtr conn) if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return (-1); } if (conn->driver->isSecure) { @@ -10831,8 +10922,7 @@ int virConnectIsSecure(virConnectPtr conn) virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatability */ - virSetConnError(conn); + virDispatchError(conn); return -1; } @@ -10855,6 +10945,7 @@ virConnectCompareCPU(virConnectPtr conn, if (!VIR_IS_CONNECT(conn)) { virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); + virDispatchError(NULL); return VIR_CPU_COMPARE_ERROR; } if (xmlDesc == NULL) { @@ -10874,7 +10965,6 @@ virConnectCompareCPU(virConnectPtr conn, virLibConnError(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); error: - /* Copy to connection error object for back compatibility */ - virSetConnError(conn); + virDispatchError(conn); return VIR_CPU_COMPARE_ERROR; } diff --git a/src/util/virterror.c b/src/util/virterror.c index b1a96f8..bee1242 100644 --- a/src/util/virterror.c +++ b/src/util/virterror.c @@ -560,43 +560,49 @@ virDefaultErrorFunc(virErrorPtr err) } /** - * virSetGlobalError: - * Internal helper to ensure the global error object - * is initialized with a generic message if not already - * set. - */ -void -virSetGlobalError(void) -{ - virErrorPtr err = virLastErrorObject(); - - if (err && err->code == VIR_ERR_OK) - virErrorGenericFailure(err); -} - -/** - * virSetConnError: + * virDispatchError: * @conn: pointer to the hypervisor connection * - * Internal helper to ensure the connection error object - * is initialized from the global object. + * Internal helper to do final stage of error + * reporting in public APIs. + * + * - Copy the global error to per-connection error if needed + * - Set a generic error message if none is already set + * - Invoke the error callback functions */ void -virSetConnError(virConnectPtr conn) +virDispatchError(virConnectPtr conn) { virErrorPtr err = virLastErrorObject(); + virErrorFunc handler = virErrorHandler; + void *userData = virUserData; + + /* Should never happen, but doesn't hurt to check */ + if (!err) + return; - if (err && err->code == VIR_ERR_OK) + /* Set a generic error message if none is already set */ + if (err->code == VIR_ERR_OK) virErrorGenericFailure(err); + /* Copy the global error to per-connection error if needed */ if (conn) { virMutexLock(&conn->lock); - if (err) - virCopyError(err, &conn->err); - else - virErrorGenericFailure(&conn->err); + virCopyError(err, &conn->err); + + if (conn->handler != NULL) { + handler = conn->handler; + userData = conn->userData; + } virMutexUnlock(&conn->lock); } + + /* Invoke the error callback functions */ + if (handler != NULL) { + (handler)(userData, err); + } else { + virDefaultErrorFunc(err); + } } @@ -622,7 +628,7 @@ virSetConnError(virConnectPtr conn) * immediately if a callback is found and store it for later handling. */ void -virRaiseErrorFull(virConnectPtr conn, +virRaiseErrorFull(virConnectPtr conn ATTRIBUTE_UNUSED, const char *filename ATTRIBUTE_UNUSED, const char *funcname, size_t linenr, @@ -637,8 +643,6 @@ virRaiseErrorFull(virConnectPtr conn, const char *fmt, ...) { virErrorPtr to; - void *userData = virUserData; - virErrorFunc handler = virErrorHandler; char *str; /* @@ -656,18 +660,6 @@ virRaiseErrorFull(virConnectPtr conn, return; /* - * try to find the best place to save and report the error - */ - if (conn != NULL) { - virMutexLock(&conn->lock); - if (conn->handler != NULL) { - handler = conn->handler; - userData = conn->userData; - } - virMutexUnlock(&conn->lock); - } - - /* * formats the message */ if (fmt == NULL) { @@ -686,7 +678,6 @@ virRaiseErrorFull(virConnectPtr conn, /* * Save the information about the error */ - virResetError(to); /* * Delibrately not setting conn, dom & net fields since * they're utterly unsafe @@ -703,15 +694,6 @@ virRaiseErrorFull(virConnectPtr conn, to->str3 = strdup(str3); to->int1 = int1; to->int2 = int2; - - /* - * now, report it - */ - if (handler != NULL) { - handler(userData, to); - } else { - virDefaultErrorFunc(to); - } } /** diff --git a/src/util/virterror_internal.h b/src/util/virterror_internal.h index da89de7..c246140 100644 --- a/src/util/virterror_internal.h +++ b/src/util/virterror_internal.h @@ -90,8 +90,7 @@ void virReportOOMErrorFull(virConnectPtr conn, __FILE__, __FUNCTION__, __LINE__) -void virSetGlobalError(void); -void virSetConnError(virConnectPtr conn); +void virDispatchError(virConnectPtr conn); const char *virStrerror(int theerrno, char *errBuf, size_t errBufLen); #endif -- 1.6.5.2

Can be used to re-set an old error, which may have been squashed by other functions (like cleanup routines). Will be used in subsequent patches Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/libvirt_private.syms | 1 + src/util/virterror.c | 22 ++++++++++++++++++++++ src/util/virterror_internal.h | 1 + 3 files changed, 24 insertions(+), 0 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 10940eb..a894775 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -593,6 +593,7 @@ virRaiseErrorFull; virReportSystemErrorFull; virReportOOMErrorFull; virStrerror; +virSetError; # xml.h diff --git a/src/util/virterror.c b/src/util/virterror.c index bee1242..e2128b9 100644 --- a/src/util/virterror.c +++ b/src/util/virterror.c @@ -290,6 +290,28 @@ virGetLastError(void) } /** + * virSetError: + * + * Set the current error from a previously saved error object + * + * Can be used to re-set an old error, which may have been squashed by + * other functions (like cleanup routines). + * + * Returns 0 on success, 1 on failure + */ +int +virSetError(virErrorPtr newerr) +{ + virErrorPtr err; + err = virGetLastError(); + if (!err) + return -1; + + virResetError(err); + return virCopyError(newerr, err); +} + +/** * virCopyLastError: * @to: target to receive the copy * diff --git a/src/util/virterror_internal.h b/src/util/virterror_internal.h index c246140..c713497 100644 --- a/src/util/virterror_internal.h +++ b/src/util/virterror_internal.h @@ -90,6 +90,7 @@ void virReportOOMErrorFull(virConnectPtr conn, __FILE__, __FUNCTION__, __LINE__) +int virSetError(virErrorPtr newerr); void virDispatchError(virConnectPtr conn); const char *virStrerror(int theerrno, char *errBuf, size_t errBufLen); -- 1.6.5.2

On Mon, Jan 11, 2010 at 03:34:45PM -0500, Cole Robinson wrote:
Can be used to re-set an old error, which may have been squashed by other functions (like cleanup routines). Will be used in subsequent patches
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/libvirt_private.syms | 1 + src/util/virterror.c | 22 ++++++++++++++++++++++ src/util/virterror_internal.h | 1 + 3 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 10940eb..a894775 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -593,6 +593,7 @@ virRaiseErrorFull; virReportSystemErrorFull; virReportOOMErrorFull; virStrerror; +virSetError;
# xml.h diff --git a/src/util/virterror.c b/src/util/virterror.c index bee1242..e2128b9 100644 --- a/src/util/virterror.c +++ b/src/util/virterror.c @@ -290,6 +290,28 @@ virGetLastError(void) }
/** + * virSetError: + * + * Set the current error from a previously saved error object + * + * Can be used to re-set an old error, which may have been squashed by + * other functions (like cleanup routines). + * + * Returns 0 on success, 1 on failure + */ +int +virSetError(virErrorPtr newerr) +{ + virErrorPtr err; + err = virGetLastError(); + if (!err) + return -1; + + virResetError(err); + return virCopyError(newerr, err); +} + +/** * virCopyLastError: * @to: target to receive the copy * diff --git a/src/util/virterror_internal.h b/src/util/virterror_internal.h index c246140..c713497 100644 --- a/src/util/virterror_internal.h +++ b/src/util/virterror_internal.h @@ -90,6 +90,7 @@ void virReportOOMErrorFull(virConnectPtr conn, __FILE__, __FUNCTION__, __LINE__)
+int virSetError(virErrorPtr newerr); void virDispatchError(virConnectPtr conn); const char *virStrerror(int theerrno, char *errBuf, size_t errBufLen);
--
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

This way we won't squash the original error report in MigratePerform, as is done for P2P and Tunneled migration. Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index daa6f94..fc6b9fa 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7670,8 +7670,12 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn, virDomainObjPtr vm; virDomainPtr dom = NULL; virDomainEventPtr event = NULL; + virErrorPtr origerr = NULL; int newVM = 1; + /* Migration failed. Save the current error so nothing squashes it */ + origerr = virSaveLastError(); + qemuDriverLock(driver); vm = virDomainFindByName(&driver->domains, dname); if (!vm) { @@ -7765,6 +7769,10 @@ endjob: vm = NULL; cleanup: + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } if (vm) virDomainObjUnlock(vm); if (event) -- 1.6.5.2

On Mon, Jan 11, 2010 at 03:34:46PM -0500, Cole Robinson wrote:
This way we won't squash the original error report in MigratePerform, as is done for P2P and Tunneled migration.
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index daa6f94..fc6b9fa 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7670,8 +7670,12 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn, virDomainObjPtr vm; virDomainPtr dom = NULL; virDomainEventPtr event = NULL; + virErrorPtr origerr = NULL; int newVM = 1;
+ /* Migration failed. Save the current error so nothing squashes it */ + origerr = virSaveLastError(); + qemuDriverLock(driver); vm = virDomainFindByName(&driver->domains, dname); if (!vm) { @@ -7765,6 +7769,10 @@ endjob: vm = NULL;
cleanup: + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } if (vm) virDomainObjUnlock(vm); if (event)
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/libvirt.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index 4308573..b95a8ed 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -3135,6 +3135,7 @@ virDomainMigrateVersion2 (virDomainPtr domain, char *dom_xml = NULL; int cookielen = 0, ret; virDomainInfo info; + virErrorPtr origerr = NULL; /* Prepare the migration. * @@ -3190,6 +3191,10 @@ virDomainMigrateVersion2 (virDomainPtr domain, ret = domain->conn->driver->domainMigratePerform (domain, cookie, cookielen, uri, flags, dname, bandwidth); + /* Perform failed. Make sure Finish doesn't overwrite the error */ + if (ret < 0) + origerr = virSaveLastError(); + /* In version 2 of the migration protocol, we pass the * status code from the sender to the destination host, * so it can do any cleanup if the migration failed. @@ -3199,6 +3204,10 @@ virDomainMigrateVersion2 (virDomainPtr domain, (dconn, dname, cookie, cookielen, uri, flags, ret); done: + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } VIR_FREE (uri_out); VIR_FREE (cookie); return ddomain; -- 1.6.5.2

On Mon, Jan 11, 2010 at 03:34:47PM -0500, Cole Robinson wrote:
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/libvirt.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c index 4308573..b95a8ed 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -3135,6 +3135,7 @@ virDomainMigrateVersion2 (virDomainPtr domain, char *dom_xml = NULL; int cookielen = 0, ret; virDomainInfo info; + virErrorPtr origerr = NULL;
/* Prepare the migration. * @@ -3190,6 +3191,10 @@ virDomainMigrateVersion2 (virDomainPtr domain, ret = domain->conn->driver->domainMigratePerform (domain, cookie, cookielen, uri, flags, dname, bandwidth);
+ /* Perform failed. Make sure Finish doesn't overwrite the error */ + if (ret < 0) + origerr = virSaveLastError(); + /* In version 2 of the migration protocol, we pass the * status code from the sender to the destination host, * so it can do any cleanup if the migration failed. @@ -3199,6 +3204,10 @@ virDomainMigrateVersion2 (virDomainPtr domain, (dconn, dname, cookie, cookielen, uri, flags, ret);
done: + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } VIR_FREE (uri_out); VIR_FREE (cookie); return ddomain;
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fc6b9fa..38be88f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2616,12 +2616,17 @@ static void qemudShutdownVMDaemon(virConnectPtr conn, int ret; int retries = 0; qemuDomainObjPrivatePtr priv = vm->privateData; + virErrorPtr origerr = NULL; if (!virDomainObjIsActive(vm)) return; VIR_DEBUG("Shutting down VM '%s'", vm->def->name); + /* This method is routinely used in clean up paths. Disable error + * reporting so we don't squash a legit error. */ + origerr = virSaveLastError(); + if (driver->macFilter) { int i; virDomainDefPtr def = vm->def; @@ -2701,6 +2706,11 @@ retry: vm->def->id = -1; vm->newDef = NULL; } + + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } } -- 1.6.5.2

Cole Robinson wrote:
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fc6b9fa..38be88f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2616,12 +2616,17 @@ static void qemudShutdownVMDaemon(virConnectPtr conn, int ret; int retries = 0; qemuDomainObjPrivatePtr priv = vm->privateData; + virErrorPtr origerr = NULL;
That assignment is technically what they call a dead store, since the very next use is to overwrite that just-stored value. So, to avoid warnings from the likes of the clang static checker, do this instead: virErrorPtr origerr;
if (!virDomainObjIsActive(vm)) return;
VIR_DEBUG("Shutting down VM '%s'", vm->def->name);
+ /* This method is routinely used in clean up paths. Disable error + * reporting so we don't squash a legit error. */ + origerr = virSaveLastError(); + if (driver->macFilter) { int i; virDomainDefPtr def = vm->def; @@ -2701,6 +2706,11 @@ retry: vm->def->id = -1; vm->newDef = NULL; } + + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } }
Hi Cole, This looks like a fine series. Is there an easy way to demonstrate the fix? Thinking it'd be nice to have a test that exercises at least one piece of the new code. One tiny comment: people tend not to comprehend "wordsthatareattachedlikethis". So if you rename your "origerr" to e.g., "orig_err", it will be more readable. If you decide to make the change, you can do it quickly by doing something like this (assuming the top 5 changes are the ones in this series, and they've been rebased to the latest master): git format-patch --stdout -5 | sed s/origerr/orig_err/ > patch git co master git co -b var-rename git am patch

On 01/12/2010 04:16 AM, Jim Meyering wrote:
Cole Robinson wrote:
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fc6b9fa..38be88f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2616,12 +2616,17 @@ static void qemudShutdownVMDaemon(virConnectPtr conn, int ret; int retries = 0; qemuDomainObjPrivatePtr priv = vm->privateData; + virErrorPtr origerr = NULL;
That assignment is technically what they call a dead store, since the very next use is to overwrite that just-stored value. So, to avoid warnings from the likes of the clang static checker, do this instead:
virErrorPtr origerr;
Will do.
if (!virDomainObjIsActive(vm)) return;
VIR_DEBUG("Shutting down VM '%s'", vm->def->name);
+ /* This method is routinely used in clean up paths. Disable error + * reporting so we don't squash a legit error. */ + origerr = virSaveLastError(); + if (driver->macFilter) { int i; virDomainDefPtr def = vm->def; @@ -2701,6 +2706,11 @@ retry: vm->def->id = -1; vm->newDef = NULL; } + + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } }
Hi Cole, This looks like a fine series. Is there an easy way to demonstrate the fix? Thinking it'd be nice to have a test that exercises at least one piece of the new code.
Not that I can think of. Doing qemu migration to a host with a firewall blocked migration port would previously return 'Unknown Error', where as now it will return 'migration did not complete successfully'. Not easily automated unfortunately.
One tiny comment: people tend not to comprehend "wordsthatareattachedlikethis". So if you rename your "origerr" to e.g., "orig_err", it will be more readable.
If you decide to make the change, you can do it quickly by doing something like this (assuming the top 5 changes are the ones in this series, and they've been rebased to the latest master):
git format-patch --stdout -5 | sed s/origerr/orig_err/ > patch git co master git co -b var-rename git am patch
Sounds good, I'll make the adjustments and push. Thanks, Cole

On 01/12/2010 04:16 AM, Jim Meyering wrote:
Cole Robinson wrote:
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fc6b9fa..38be88f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2616,12 +2616,17 @@ static void qemudShutdownVMDaemon(virConnectPtr conn, int ret; int retries = 0; qemuDomainObjPrivatePtr priv = vm->privateData; + virErrorPtr origerr = NULL;
That assignment is technically what they call a dead store, since the very next use is to overwrite that just-stored value. So, to avoid warnings from the likes of the clang static checker, do this instead:
virErrorPtr origerr;
if (!virDomainObjIsActive(vm)) return;
VIR_DEBUG("Shutting down VM '%s'", vm->def->name);
+ /* This method is routinely used in clean up paths. Disable error + * reporting so we don't squash a legit error. */ + origerr = virSaveLastError(); + if (driver->macFilter) { int i; virDomainDefPtr def = vm->def; @@ -2701,6 +2706,11 @@ retry: vm->def->id = -1; vm->newDef = NULL; } + + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } }
Hi Cole, This looks like a fine series. Is there an easy way to demonstrate the fix? Thinking it'd be nice to have a test that exercises at least one piece of the new code.
One tiny comment: people tend not to comprehend "wordsthatareattachedlikethis". So if you rename your "origerr" to e.g., "orig_err", it will be more readable.
If you decide to make the change, you can do it quickly by doing something like this (assuming the top 5 changes are the ones in this series, and they've been rebased to the latest master):
git format-patch --stdout -5 | sed s/origerr/orig_err/ > patch git co master git co -b var-rename git am patch
I've pushed now with the recommended changes. Thanks, Cole

On Mon, Jan 11, 2010 at 03:34:48PM -0500, Cole Robinson wrote:
Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fc6b9fa..38be88f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2616,12 +2616,17 @@ static void qemudShutdownVMDaemon(virConnectPtr conn, int ret; int retries = 0; qemuDomainObjPrivatePtr priv = vm->privateData; + virErrorPtr origerr = NULL;
if (!virDomainObjIsActive(vm)) return;
VIR_DEBUG("Shutting down VM '%s'", vm->def->name);
+ /* This method is routinely used in clean up paths. Disable error + * reporting so we don't squash a legit error. */ + origerr = virSaveLastError(); + if (driver->macFilter) { int i; virDomainDefPtr def = vm->def; @@ -2701,6 +2706,11 @@ retry: vm->def->id = -1; vm->newDef = NULL; } + + if (origerr) { + virSetError(origerr); + virFreeError(origerr); + } }
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
participants (3)
-
Cole Robinson
-
Daniel P. Berrange
-
Jim Meyering