Plugdaemon 2.3

Plugdaemon is a tool that is inspired by, but not based on, the plug-gw from
Trusted Information Systems. It was originally a simpler wannabe, but the
connection balancing code and other features makes it a lot more useful. The
one feature it's missing, compared to the TIS code, is the ability to limit
connections by source address... instead, it has the ability to bind to a
specific interface, which is usually what you want that functionality for.

Not all the planned features are implemented in 2.0. Eventually plugdaemon
will provide a complete load balancing and monitoring package for servers.

If you do anything interesting with it, let me know.

				-- Peter da Silva <peter@taronga.com>

Changes:

	1.1.1           Bug fix for lost data on slow readers.
	1.1.2           Added prototypes, minor cleanup.
	1.1.3           Added "-V" version option, more cleanup,
			       moved OS-specific ifdefs out of plug.c.
	1.2 (fork)      Keepalive option.
	1.2.1           Integrated OpenBSD specific code in 1.2 with
			       cleaned up 1.1 code.
	1.2.2           Fixed read error bug.

	2.0 (based on 1.1.2)
			Added keepalive option, removed non-ANSI
				prototype hacks, moved OS-specific
				ifdefs out of plug.c, expanded
				load-balancing functionality, big
				cleanup, fixed read-error bug.
	2.0.1		Merged with 1.2.1, re-integrated OpenBSD
				code in 2.0, added "-V" option.
	2.0.2		Added "-p" option for weird multihomed virtual
				host stuff for Oracle.
	2.0.2b		Fix embarassing define in plug.h.

	2.1.1		Fix for Solaris child process bug, added
			use of SO_REUSADDR on listening socket.

	2.2		Fixed possible memory leak in process table,
			added "-P" option to specify file to maintain
			list of process IDs in.

	2.3		Fixed process table corruption problem due
			to unwise library calls in a signal handler,
			probably due to an earlier bugfix... probably
			around 2.1.1. I feel kind of stupid about
			this, because I've known about this issue
			for years and didn't even recognise I was
			doing it. And it's not that bloody obscure,
			either. Grump.