One thing that I still haven't figured out is, when the daemon is waiting in the even loop, in poll() and SIGINT comes, it jumps out and cleanup phase begins. However, the event loop may still be the one and only holding a reference to some objects, so we kind of want it to at least remove stale handlers. Well, they will be deleted after the cleanup work in the daemon is done. Yeah, messy and probably not worth breaking up the code into smaller pieces just to cleanup deleted handles. Michal Privoznik (4): daemonSetupNetworking: Don't leak services virNetSocketRemoveIOCallback: Be explicit about unref virNetSocket: Fix @watch corner case virNetServerServiceClose: Don't leak sockets daemon/libvirtd.c | 47 ++++++++++++++++++++++--------------------- src/rpc/virnetserverservice.c | 5 ++++- src/rpc/virnetsocket.c | 11 ++++++---- 3 files changed, 35 insertions(+), 28 deletions(-) -- 2.3.6 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list