Fix reporting of TLS connection errors

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
This commit is contained in:
Daniel P. Berrange 2009-12-17 17:39:43 +00:00
parent 9b2c299a35
commit 469b6b3a75

View File

@ -632,7 +632,7 @@ doRemoteOpen (virConnectPtr conn,
if (!priv->session) {
close (priv->sock);
priv->sock = -1;
continue;
goto failed;
}
}
goto tcp_connected;