Commit 0c56d9431839 forgot to return false in the cmdConnect command after the clean up made there. Before (assuming you don't have uri alias for 'asdf'): $ virsh connect asdf error: failed to connect to the hypervisor $ echo $? 0 After (with the same assumption): $ virsh connect asdf error: failed to connect to the hypervisor error: no connection driver available for asdf $ echo $? 1 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1356461 Signed-off-by: Martin Kletzander <mkletzan@xxxxxxxxxx> --- tools/virsh.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index f74698fa5f9a..d3fe06f19032 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -210,7 +210,7 @@ virshConnect(vshControl *ctl, const char *uri, bool readonly) * Reconnect after a disconnect from libvirtd * */ -static void +static int virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force) { bool connected = false; @@ -237,6 +237,7 @@ virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force) vshError(ctl, "%s", _("Failed to reconnect to the hypervisor")); else vshError(ctl, "%s", _("failed to connect to the hypervisor")); + return -1; } else { if (name) { VIR_FREE(ctl->connname); @@ -253,6 +254,7 @@ virshReconnect(vshControl *ctl, const char *name, bool readonly, bool force) priv->useGetInfo = false; priv->useSnapshotOld = false; priv->blockJobNoBytes = false; + return 0; } int virshStreamSink(virStreamPtr st ATTRIBUTE_UNUSED, @@ -301,7 +303,8 @@ cmdConnect(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "name", &name) < 0) return false; - virshReconnect(ctl, name, ro, true); + if (virshReconnect(ctl, name, ro, true) < 0) + return false; return true; } @@ -333,11 +336,13 @@ virshConnectionHandler(vshControl *ctl) { virshControlPtr priv = ctl->privData; - if (!priv->conn || disconnected) - virshReconnect(ctl, NULL, false, false); + if ((!priv->conn || disconnected) && + virshReconnect(ctl, NULL, false, false) < 0) + return NULL; if (virshConnectionUsability(ctl, priv->conn)) return priv->conn; + return NULL; } @@ -444,14 +449,13 @@ virshInit(vshControl *ctl) return false; if (ctl->connname) { - virshReconnect(ctl, NULL, false, false); /* Connecting to a named connection must succeed, but we delay * connecting to the default connection until we need it * (since the first command might be 'connect' which allows a * non-default connection, or might be 'help' which needs no * connection). */ - if (!priv->conn) { + if (virshReconnect(ctl, NULL, false, false) < 0) { vshReportError(ctl); return false; } -- 2.9.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list