cf-serverd: free getaddrinfo() result, on error of OpenReceiverChannel()

getaddrinfo() may allocate the 'result' struct even in cases where it
will return an error. Take care to free memory, although we would exit
the server process anyway.
cf-serverd: getaddrinfo() will use a numeric port, no lookup

This `AI_NUMERICSERV` flag avoids looking up the "services" table for
a string port resolution, according to the manual.
cf-serverd: getaddrinfo() will NOT set "errno" upon failure

It has its own `gai_strerror()` function to resolve its (reentrant)
result code.
cf-serverd: fix typo for addrinfo constant

As spotted by Dimitrios Apostolou
Why have two identical ifdefs? This had been fixed in the past, but it regressed!
Scan for policy change right after the select() call returns.

The way we did it before, it was almost certain that at the point of
checking there would always be one active thread (the one serving the
incoming connection) so CheckFileChanges() would not run. Only exception
would have been when select() returned because of timeout, which would
never happen in a slightly loaded hub.
Moved code around for clarity.

Mostly whitespace changes.
Fixed 100% CPU burning loop if listening socket descriptor is -1

There is a feature in enterprise ("listen" attribute) that disables
listening to any port. In that case the while loop would never
stop. Fixed it so that it goes through the select() call.

Mostly whitespace changes.
Fix SIGBUS on Solaris.
Redmine #5557: Fix promises wrongfully reported with kept status.

We need to swap the priority of the promise SKIPPED and NOOP states.
SKIPPED should have higher priority when calculating promise status
because most promises start out with NOOP status, and SKIPPED is
something they receive later when they discover that their promise
lock cannot be obtained because they have already run. If SKIPPED has
the lowest priority, then the combined result will almost always be
KEPT, so this fix avoids that.
CLOEXEC must be called even when NO_FORK.
Merge pull request #1665 from jimis/server_reload_policy

Server reload policy
Merge pull request #1666 from kacfengine/wrongful_kept_status

Redmine #5557: Fix promises wrongfully reported with kept status.
Revert "Redmine #5557: Fix promises wrongfully reported with kept status."

This reverts commit 1cb35d8c56a1effd081dc856b7ae2722ac4ed2a8.

The change, while in principle correct, break the test. Need to review
before letting this go in.
Fix subindexing for maparray function

Close #5452
Redmine #5557: Fix files promises having wrong status report.

In functions where we invoke sub promises, we need to start with the
assumption that the promise will be skipped, instead of it being a
kept promise. The reason is that the skipped status has the lowest
priority, so if we end up skipping a promise, the status will still be
kept if that's what we started with.
Merge pull request #1668 from kacfengine/files_compliance

Redmine #5557: Fix files promises having wrong status report.
Correctly report repaired compliance for commands promises.

For compliance, commands promises are interpreted to have been KEPT
for 0 returns status, and NOTKEPT for non-zero. In order to maintain
compatibility with repaired classes set via body classes, a REPAIRED
state from VerifyCommandRetcode is overwritten with KEPT.

If the body classes also defines return codes for which the compliance
should be REPAIRED, then honour this and don't overwrite with KEPT.

Fixes: #5489
Merge pull request #1669 from vohi/commands_compliance

Correctly report repaired compliance for commands promises.
Merge pull request #1231 from xrg/fix-getaddrinfo

Fix getaddrinfo() usage