<div dir="ltr">Hi all,<br><div><br>I'm using libvirt-go and I following code to listen for lifecycle events:<br><br>func event_listen() {<br>    log.Printf("event_listen %s", conf.Libvirt.LocalUrl)<br>    hv, err := libvirt.NewConnect(conf.Libvirt.LocalUrl)<br><br>    lifecycleCallback := func(c *libvirt.Connect, d *libvirt.Domain, event *libvirt.DomainEventLifecycle) {<br>        event_message(c, d, "lifecycle", event)<br>    }<br><br>    _, err = hv.DomainEventLifecycleRegister(nil, lifecycleCallback)<br>    if err != nil {<br>        log.Printf("unable to register event callback")<br>        return<br>    }<br><br>    log.Printf("Libvirt event listener started")<br><br>    go func() {<br>        for err == nil {<br>            err = libvirt.EventRunDefaultImpl()<br>            log.Printf("EventRunDefaultImpl err: %+v", err)<br>        }<br>        time.Sleep(time.Second)<br>        event_listen()<br>    }()<br><br>}<br><br></div><div>It works ok until I restart libvirtd (service libvirtd restart). After that, the inner go func waits some time and continues without error. But the callback is not working anymore.<br><br></div><div>My question is, how can I detect hv reconnect (I guess it's happening in background) so I know when to reinitialize callbacks?<br><br></div><div>Thanks. <br><br></div><div>BR<br></div><div>Daniel Kucera.<br></div></div>