Technical notes on version 3.8.2Beta14 24 June 2001 Kern Sibbald General: - Fixed stall in Network Information Server - Fixed possible race condition in pthreads Network Information Server. - Fixed a serious shutdown bug for BackUPS UPSes. - Tightened security for some scripts (thanks Neil). - More cleanups for --with-pwrfail-dir so it is properly configured. Changes submitted this submission: - I've been having Internet outages here due to the heat, and this created a situation where processes accessing the Network Information Server would become stuck. This turned out to be either related to the KEEPALIVE option being set or the fact that a shutdown() was not done on the connection. The problem occurred only after about 1500 accesses. Fixed by deleting the KEEPALIVE code and by adding shutdown() before closing the socket. - In examining the above problem, I realized that the pthreads code for STATUS uses a global buffer. Since it is a bit difficult to make this buffer local without a lot of coding, I serialized the accesses with a mutex. - John McSwain was experiencing a strange problem on his system with a BackUPS Office where apcupsd would issue the commands to shutoff the UPS power, it would then log a failure message, reboot the system, and a minute later during the reboot the power would be cut. This turned out to be very old code, dating back to at least 3.6.2 that assumed that a "dumb" UPS would instantantly cut the power when requested to do so, which was apparently the case. The newer UPSes however, typically wait one or two minutes before cutting the power. Apcupsd had a 10 second wait, after which it assumed the power would not be cut and rebooted the machine. I've removed this code. apcupsd now logs appropriate messages and then exits. Thanks to John for his perseverence in testing this! - Tightened security on mode bits for the daemon start script apcupsd, apccontrol, and ups-monitor (in Debian). Made the same changes in a number of other distributions. - Not all the files in all the distributions correctly accepted the ./configure --with-pwrfail-dir correctly. Quite a number of small distribution script modifications. Also added a few .in files so that they would be corrrectly configured.