]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix reporting of TLS connection errors
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 17 Dec 2009 17:39:43 +0000 (17:39 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 21 Dec 2009 12:18:38 +0000 (12:18 +0000)
The code for connecting to a server tries each socket in turn
until it finds one that connects. Unfortunately for TLS sockets
if it connected, but failed TLS handshake it would treat that
as a failure to connect, and try the next socket. This is bad,
it should have reported the TLS failure immediately.

$ virsh -c qemu://somehost.com/system
error: unable to connect to libvirtd at 'somehost.com': Invalid argument
error: failed to connect to the hypervisor

$ ./tools/virsh -c qemu://somehost.com/system
error: server certificate failed validation: The certificate hasn't got a known issuer.
error: failed to connect to the hypervisor

 * src/remote/remote_driver.c: Stop trying to connect if the
   TLS handshake fails

src/remote/remote_driver.c

index 945fa30fe1511f7a9279291bb1dcf01f3972efd8..23fd0e3264972df363b4c74fd65e3a32b490fd07 100644 (file)
@@ -632,7 +632,7 @@ doRemoteOpen (virConnectPtr conn,
                 if (!priv->session) {
                     close (priv->sock);
                     priv->sock = -1;
-                    continue;
+                    goto failed;
                 }
             }
             goto tcp_connected;