On Thu, Jan 06, 2022 at 20:34:26 +0530, Ani Sinha wrote:
virConnectOpenInternal() does not report error in all failure
scenarios, except
in some specific cases. This inconsistent behavior forces the caller of this
function report a generic error for all failure modes which then hides specific
error scenarios. This change makes virConnectOpenInternal() report failure in
all cases so that it can generate specific errors based on the type of failure
encountered. The reporiting of the errors can be made more fine grained in
subsequent changes.
Signed-off-by: Ani Sinha <ani(a)anisinha.ca>
---
src/libvirt.c | 24 ++++++++++++++++--------
src/libxl/libxl_migration.c | 3 ---
src/qemu/qemu_migration.c | 3 ---
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c
index 45315f484c..53ceee1359 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -893,8 +893,12 @@ virConnectOpenInternal(const char *name,
bool embed = false;
ret = virGetConnect();
- if (ret == NULL)
+ if (ret == NULL) {
+ virReportError(VIR_ERR_INVALID_CONN,
+ _("Failed to create connection object for URI %s"),
+ NULLSTR(name));
'virGetConnect' is reporting errors in all cases when NULL is returned.
return NULL;
+ }
if (virConfLoadConfig(&conf, "libvirt.conf") < 0)
This seems to be reporting them too.
goto failed;
@@ -974,7 +978,7 @@ virConnectOpenInternal(const char *name,
virReportError(VIR_ERR_NO_CONNECT,
_("URI '%s' does not include a driver
name"),
name);
- goto failed;
+ goto failed_no_report;
}
if (virConnectCheckURIMissingSlash(uristr,
e.g this function is also reporting errors and better than the one you
are replacing it with.
Based on at least the two counts above I think you'll need to be more
specific in your claims in the commit message and re-asses all the code
paths.