Martin Kletzander wrote: > On Thu, Apr 14, 2016 at 10:23:04AM +0300, Roman Bogorodskiy wrote: > >When for some reason virsh looses connection and then tries to > >reconnection, it uses the default URI instead of the one that was used > >for the previous connection it got disconnected from. > > > >In order to make it reconnect using the same URI, copy URI of the > >current (disconnected) connection to vshControl 'connname' attribute. > >--- > > tools/virsh.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > >diff --git a/tools/virsh.c b/tools/virsh.c > >index 5a61189..07097aa 100644 > >--- a/tools/virsh.c > >+++ b/tools/virsh.c > >@@ -359,6 +359,14 @@ virshConnectionHandler(vshControl *ctl) > > { > > virshControlPtr priv = ctl->privData; > > > >+ if (disconnected && priv->conn) { > >+ if (!ctl->connname) { > >+ char *uri = virConnectGetURI(priv->conn); > >+ ctl->connname = vshStrdup(ctl, uri); > > This would mean that next "connect" without parameters would connect to > the new uri. Is that how you were trying that? Basically, the issue I'm trying to solve is that: 1. I start libvirtd, virsh to it like: sudo ./tools/virsh -d 1 -c "bhyve:///system?socket=/var/run/libvirt/libvirt-sock" 2. I do some stuff and then I need to terminate libvirtd to change something. I do that and I get: virsh # error: Disconnected from bhyve:///system?socket=/var/run/libvirt/libvirt-sock due to I/O error 3. I start the daemon again and in virsh I do something like "list". That's what I get: virsh # list error: Failed to reconnect to the hypervisor error: no valid connection error: Failed to connect socket to '/usr/local/var/run/libvirt/libvirt-sock': No such file or directory virsh # So it tries to use socket in /usr/local/var/run instead of just /var/run and fails to connect. This is quite inconvenient. Roman Bogorodskiy -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list