On 10/17/2017 07:51 AM, llilulu wrote: > Hi > In my program , When libvirtd restart , the old libvirtd connection(virConnectPtr) has to reconnect, Before usr old virConnectPtr , I call virConnectIsAlive. but when I restart libvirtd , virConnectIsAlive return 1, and I continue other operate use the old virConnectPtr, program will receive signal pipe. > I use libvirt event. before any api use, I call virEventRegisterDefaultImpl, and run virEventRunDefaultImpl. then use virConnectIsAlive, when I restart libvirtd, virConnectIsAlive will return 0, I want know how to use virConnectIsAlive, if virConnectIsAlive use keep alive message, what default the interval and count. > Thanks > virConnectIsAlive() will produce desired result only when event loop is used (e.g. virEventRunDefaultImpl()). However, with this API there'll always be TOCTOU [1] race. Therefore I suggest registering a disconnect callback that reconnects. At least that's how it is done in virsh. This [2] is called before every command and then this [3] is the callback. Michal 1: https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use 2: https://libvirt.org/git/?p=libvirt.git;a=blob;f=tools/virsh.c;h=d1789f03adf1e264e5444dde9276be91bfc8a440;hb=HEAD#l336 3: https://libvirt.org/git/?p=libvirt.git;a=blob;f=tools/virsh.c;h=d1789f03adf1e264e5444dde9276be91bfc8a440;hb=HEAD#l97 _______________________________________________ libvirt-users mailing list libvirt-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvirt-users