virConnectGetVersion can return 0 'if the version can't be extracted by lack of capabilities'. I've also seen it return 0 when libvirtd 1.0 is running but virsh 0.10.2 is used to get the version. gvir_connection_get_version is documented as returning 0 on error. However, currently it only sets the corresponding GError when virConnectGetVersion returns -1. Makes sure the GError is also set when 0 is returned. The old behaviour was causing a crash in conn-test as this assumes that the GError will be set when gvir_connection_get_version returns 0. --- libvirt-gobject/libvirt-gobject-connection.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c index 3157a66..91cc535 100644 --- a/libvirt-gobject/libvirt-gobject-connection.c +++ b/libvirt-gobject/libvirt-gobject-connection.c @@ -1108,6 +1108,12 @@ gvir_connection_get_version(GVirConnection *conn, if (virConnectGetVersion(priv->conn, &ret) < 0) { gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, 0, "Unable to get hypervisor version"); + ret = 0; + } else if (ret == 0) { + /* From virConnectGetVersion doc: "if the version can't be + * extracted by lack of capacities returns 0 and @hvVer is 0" */ + g_set_error_literal(err, GVIR_CONNECTION_ERROR, 0, + "Unknown hypervisor version"); } cleanup: -- 1.8.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list