cfengine/core — pull request #1153 by kacfengine (2013-12-02 17:10:10+00:00)
Title: Fix cf-serverd not reloading policies when they have changed.

The root of the problem was that the code to check for updated promises was shared between cf-agent/cf-promises and the daemons, but they have different semantics. cf-agent/cf-promises need to check
whether any files have changed so they can update cf_promises_validated. To do this, a check that compares cf_promises_validated to each file in inputs is needed, which is what the existing code is doing.

The daemons however, need to compare the modification time of cf_promises_validated against the time that they last reloaded the policies, which is a value that should be kept in memory.

This was fixed by running a simple stat in the daemons and comparing that to the time of the last seen cf_promises_validated. Also made sure that cf-agent is the only one updating the cf_promises_validated
file. It's not the daemons' responsibility to do this.

Redmine #3809.
(forward-ported from commit 19c790c in 3.5.x.)

Conflicts:

cf-execd/cf-execd.c
cf-serverd/cf-serverd-functions.c
cf-serverd/cf-serverd-functions.h
libpromises/generic_agent.c
libpromises/generic_agent.h