From: Martin Kletzander Date: Fri, 10 Jul 2015 08:35:31 +0000 (+0200) Subject: rpc: Rework timerActive logic in daemon X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b7ea58c262194037042284a14fb1608c9cf31884;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git rpc: Rework timerActive logic in daemon Daemon used false logic for determining whether there were any clients. When the timer was inactive, it was activated if at least one of the servers did not have clients. So the bool was being flipped there and back all the time in case there was one client, for example. Initially introduced by fa1420736882. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1240283 Signed-off-by: Martin Kletzander --- diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c index 6b1328232..910f26620 100644 --- a/src/rpc/virnetdaemon.c +++ b/src/rpc/virnetdaemon.c @@ -682,23 +682,17 @@ virNetDaemonRun(virNetDaemonPtr dmn) */ if (dmn->autoShutdownTimeout) { if (timerActive) { - for (i = 0; i < dmn->nservers; i++) { - if (virNetServerHasClients(dmn->servers[i])) { - VIR_DEBUG("Deactivating shutdown timer %d", timerid); - virEventUpdateTimeout(timerid, -1); - timerActive = false; - break; - } + if (virNetDaemonHasClients(dmn)) { + VIR_DEBUG("Deactivating shutdown timer %d", timerid); + virEventUpdateTimeout(timerid, -1); + timerActive = false; } } else { - for (i = 0; i < dmn->nservers; i++) { - if (!virNetServerHasClients(dmn->servers[i])) { - VIR_DEBUG("Activating shutdown timer %d", timerid); - virEventUpdateTimeout(timerid, - dmn->autoShutdownTimeout * 1000); - timerActive = true; - break; - } + if (!virNetDaemonHasClients(dmn)) { + VIR_DEBUG("Activating shutdown timer %d", timerid); + virEventUpdateTimeout(timerid, + dmn->autoShutdownTimeout * 1000); + timerActive = true; } } }