Revision history for Perl extension Net::Server.

0.94   Jul 08 2006
        - Add nofatal to Sys::Syslog::openlog if Sys::Syslog
          version >= 0.15 (thanks to DSCHWEI on cpan)
        - Added the leave_children_open_on_hup flag which leaves
          open connections open when the server
          is hupped.  It is false by default.
        - Make sure new and run can both take a hash or a hashref of values.
        - More fixes to HUP under taint (thanks to LUPE on cpan)
        - Allow for port, host, and proto to be passed as arrayrefs to run and new.
        - Fix bug in a check for dead child processes algorithm in
          PreFork server (thanks to Michael Virnstein).

0.93   Mar 23 2006
        - Allow for get sock info routines to use $peer->{client} rather than STDIN
          which may not be set if the "no_client_stdout" flag is set. (thanks to
          Mark Martinec for pointing this out)

0.92   Mar 13 2006
        - Allow for duplicated STDIN and STDOUT to properly close.
          Previously they closed because they were simple symbol globs.
          Now they need an explicit close be cause they are opened to
          the client socket's file descriptors.
        - Add flag to disable all of the binding of client to STDIN and STDOUT

0.91   Mar 08 2006
        - Abstract shutdown_sockets method that is called at the end
          of server_close (to allow for calling in other places).
        - Make sure close_children unsets the overridden signals in
          the forked and preforked servers.
        - Better handling of STDIN and STDOUT as provided by tye on
          perlmonks in response to Ben Cohen's question (in node
          http://www.perlmonks.org/?node_id=534791)
        - Finally added a new method.
        - Added much missing perldoc.
        - Pass parameters to ->run the second time it is called.  This
          allows for multitype to handle more parameters - but needs
          to be tested for all use cases (it could result in array fields
          getting multiple entries which should be fine in most cases).
          Thanks to Aron Ujvari for pointing this out.
        - Add default_values method (suggested by Malte S. Stretz).
        - Fix udp_broadcast issue (fix by Rob Mueller)

0.90   Dec 05 2005
        - Make HUP work correctly on Multiplex server.
        - Allow socket files to cleanup correctly.
        - Allow Net::Server::Daemonize to function properly in Taint
          mode again (broken in .88).
        - Add ->commandline method to allow for getting and setting
          the commandline for use during a HUP.  This is to allow for
          untainting as necessary.
        - Add ->can_read_hook (see the documentation) to allow for
          processing of arbitrary handles in accept_multi_port.

0.89   Nov 22 2005
        - Added SSL_passwd_cb to Proto/SSL.pm (Irving A. Bermudez S.)
        - Fix rt #13450 which is caused by broken POSIX::setuid on
          perl 5.8.0 on RedHat 9.0.
        - Allow for graceful skipping if a port is configured twice in
          the configuration file.
        - Allow tests that can pass to pass on Win32 (skip those that cannot)
        - Allow "-" in user names. (Carl Lewis)
        - Add Reuse = 1 to Proto::UDP. (Slaven Rezic)
        - Allow for udp_broadcast setting in Proto::UDP. (Tim Watt)
        - Add bug note to Proto::SSL (Christopher A Bongaarts)
        - setsid property is now boolean rather than checking definedness.
        - Command line parameters override conf file parameters.
        - Store command line a little better in preparation for HUP.
        - Allow for cleaner HUP and better error if process already running.

0.88  Jun 21 2005
        - Change maintainer back to paul@seamons.com (Paul Seamons)
        - Add run_n_children_hook to prefork servers (At suggestion of
          James Fitzgibbon and Paul B. Henson)
        - Make delete child only delete children it knows about.
          Fixes ancient bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=168784
          filed by Christian Mock and worked on by Lucas Filipozzi.
        - Store $ENV{PWD} as part of script name for HUP'ing (Russel Pettway)
        - Allow PreFork and PreForkSimple to have child mark
          explicitly as done the same as other server types via
          the ->done(1) call. (Idea from Marc Martinec)
        - After numerous requests, the CHLD SIGNAL is now
          set to DEFAULT in the child process of PreFork and
          PreForkSimple servers.  This should allow grand child processes to
          run without affecting the child process (or parent).
        - Fix parent/child communication channel buffering issue (Matt Sergeant)
        - Check for child's sock before closing with
          child_communication enabled (Alexander Hlawenka)
        - Documentation fix (Mark Morgan)
        - Allow 'stream' option for syslog_logsock property (Daniel Matuschek)
        - Fix syslog format vulnerability. (Carlos Velasco)  This has
          potential to break some log implementations that were
          planning on ->log passing all of @_ to syslog.  Now only the
          first item from @_ is passed as the message.
        - Allow for '-' in group names. (Corey Minyard)
        - Prevent locking caused by interupt of flock (Dietmar Maurer [cpan #11693])
        - Finally fix UID/GID bugs during daemonization.  This is the
          biggest bug winner.  The new model Calls POSIX::setuid and
          setgid and tests for success by checking the values of $<
          and $( and not by checking the response of the setuid/setgid functions.
        - Add CIDR style lookups for allow/deny using cidr_allow and
          cidr_deny (Carsten Wolff)
        - Allow for port configured in perl to not have to be arrayref.

0.87  Feb 14 2004
        - Patch by Enrik.Berkhan@planb.de (Enrik Berkhan)
          that fixes RT Bug #3671
        - Patch by chris@dyndns.org (Chris Reinhardt)
          Integrate pre_accept_hook and post_accept_hook
          into Net::Server::Fork

0.86  Nov 06 2003
        - Changed maintainer to bbb@cpan.org (Rob Brown).
        - Patch to fix Net::Server::Daemonize setuid bug:
          http://www.ijs.si/software/amavisd/net-server.patch
        - Add a fix in the argument handling of configure
          to account for some alpha systems (James Vasak)
        - For RedHat 8.0 perl.req, avoid demanding that
          perl(IO::Muliplex) and perl(IO::Socket::SSL)
          rpms are installed just to use Net::Server.

0.85  Mar 06 18:00 2003
        - Lower timeouts during tests (Anil Madhavapeddy)
        - Add configure_hook to MultiType (Michael Alan Dorman)
        - More graceful exit of children in PreForkSimple (Helge Kraenz)
        - Correct test for POSIX::setuid(0) success (Peter Chen)
        - Allow DOS filenames for conf files (Mark M. Adkins)
        - Allow for ndelay on Sys::Syslog::openlog (Doug Perham)
        - Add documentation about run_dequeue.
        - Add run_dequeue feature to Multiplex personality.

0.84  May 22 08:00 2002
        - Safer peername check in get_client_info to
          avoid crashing under certain conditions.
        - Create noarch RPM since Net::Server is pure perl.
        - Always chown log and pid files when started as root
          but running as non-root.
        - More graceful exit of children in PreFork
        - Kill children with a kill 15 rather than kill 2 -
          Fixes on Tru64 UNIX (Marco Sbodio)
        - Allow for SOCK_STREAM and SOCK_DGRAM to be passed
          as strings to proto (ie "/tmp/path/|SOCK_STREAM|unix") (Andrzej Filip)
        - Backward compatibility fix for IO::Socket usage (Matt Sergeant)
        - Avoid reopening STDIN and STDOUT in INET mode. (Bernard Quatermass)


0.83  Mar 26 15:33 2002
        - Prevent race condition warning between accept on socket
          and assigning client to STDIN
        - Fix bug in Net::Server::Proto::UNIX which affected
          older perls (<= 5.005)
        - Allow failed attempt to change user to continue with
          warning if not root.
        - Add parent/child communication code to PreFork.pm based off
          code submitted by Vadim.  Allows children to speak to parent.
        - Improved accounting of child processes in PreFork.
        - Add spec file for rpm.

0.82  Jan 29 16:20 2002
        - Add changes pointed out by Vadim to make sure
          that SSL client handle is blessed into correct class.

0.81  Nov 19 12:39 2001
        - Fix Net::Server::Fork - Bug in forking server
          once parent has reached max_servers caused.
          slow infinite loop and no processing of connections.
        - Some perldoc cleanups
        - Don't require IO::Multiplex for base test.

0.80  Nov 14 09:30 2001
        - Fix Net::Server::Multiplex::MUX::mux_eof
          to pass a ref to the remaining data.

0.79  Oct 23 12:00 2001
        - Added Net::Server::Multiplex
        - NOTE: IO::Multiplex >= 1.01 is required
          to use this personality.

0.78  Sep 28 9:13
        - Added post_child_cleanup_hook to server_close
        - Moved pre_server_close_hook inside server_close
        - Various small cleanups
        - Added no_close_by_child flag (see perldoc)

0.77  Aug 27 10:00
        - Added dequeuing ability to Fork mode server.
        - All Fork and PreFork modes now have dequeue ability.

0.76  Aug 24 11:16
        - Added Net::Server::PreForkSimple
                - Simpler PreFork server that only attempts to
                  maintain a constant number of child servers.
                - Changed Net::Server::PreFork to subclass
                  off of Net::Server::PreForkSimple.  No
                  functional changes.
                - Fixed a bug in Net::Server::Daemonize::set_user.
                - Fixed syntax bug on 5.005_03 in Proto's

0.75  Aug 23 10:49
        - Both Net::Server::Fork and Net::Server::PreFork are
                using safe signals via Net::Server::SIG.
        - Net::Server::PreFork has new child managment model.
                NOTE: spare_servers is no longer used.  It
                has been replaced by min_spare_servers and
                max_spare_servers.  This is a major change.
                The server will die if these parameters are
                not properly set.
                - operates better under high loads
                - provides better clean up of waiting servers.
                - more configurable.
                - Read the perldoc for updates.
        - Net::Server::Fork and Net::Server::PreFork HUP
                properly again.
        - t/Server_PreFork.t and t/Server_Fork.t execute
                properly.
        - Fix in Multiport accept with signals.
        - Updated perldocs

0.73  Aug 21 17:06
        - Net::Server::PreFork is on safe signals.

0.72  Aug 21 16:22 2001
        - Beginning work on Safe signals
        - Net::Server::Fork is on safe signals.
        - Added Net::Server::SIG
        - Added examples/sigtest.pl

0.71  Aug 17 15:51 2001
        - Die on failed change to another user or group.
            WARNING: No longer defaults to nobody.nobody.
            Defaults to currently running user and group.
        - Various cleanups with file removal.
        - All files to be removed are now chowned.

0.70  Aug 17 10:34 2001

        - Added support for different protocols to Net::Server.
            This implemented via Net::Server::Proto and its classes.
            Included Net::Server::Proto::TCP,
                Net::Server::Proto::UDP,
                Net::Server::Proto::UNIX,
                and experimental Net::Server::Proto::SSL.
            TCP, UDP, and UNIX are fully tested.

        - Added Net::Server::Daemonize.
        - Allows for modular daemonization/forking routines.

        - Allowed for configure to be called multiple times.
            Configure method can be called at later times during
            server startup.  Arguments are cached.  This allows
            new protocols to add arguments without modification
            to Net::Server base class.

        - Updated perldocs.
            No more protocol specific information in central perldoc.
            More information on new protocol layout.

        - Added t/UNIX_test.t
        - Added examples/connection_test.pl

        - UNIX, UDP, and TCP types are fully operational.
            Server can bind to all three types.
            Properties are determined according to type.
            Server can HUP on all three types.

        - SSL type added, but experimental (read "extremely alpha")

0.65  Jul 05 22:01 2001
        - Modified test suite to no longer depend upon
                hard coded ports.  Improves test reliability
                on systems where reuse on a socket is not
                reliable itself.

0.64  Jul 03 21:21 2001
        - Allow fall back to main run method at server close
        - Clean up signal processing in PreFork server
        - Clean up child management in PreFork server
        - Added run_dequeue and dequeue methods to the
                PreFork server (intended to allow for
                management of items such as mail queues)

0.63  May 07 22:39 2001
        - Updated UDP parameter names.  Names are now
                udp_recv_len (previously udp_packet_size)
                and udp_recv_flags (previously udp_packet_offset).
        - Updated udp_server.pl to use new names.

0.62  May 01 00:44 2001
        - Updated to use getsockopt (determine proto on the fly)
        - Updated perldoc.
        - Added udp_server.pl example.
        - Added UDP_test.t for "make test".
        - Allow customization of udp recv parameters.

0.61  Apr 30 06:32 2001
        - Sig HUP with UDP now works.
        - Peer info is correctly accessed under UDP
        - Net::Server::INET will not allow one server
                to do both tcp and udp without special
                parameters being passed to the server.
        - Need to make test program for UDP.

0.60  Apr 28 01:56 2001
        - Added support for UDP.  Can now simultaneously accept
                 TCP and UDP.
                Still to do:
                    - allow for SIG HUP under UDP
                    - better determination of peerinfo under UDP
                    - clean up inetd mode.
        - Added restart_close_hook.
        - Added restart_open_hook.
        - Added more documentation (socket access, restarting,
                protocols)

0.59  Apr 24 07:40 2001
        - Forced STDIN,STDOUT,and STDERR to reopen to /dev/null
                if setsid or log_file is set.
                This allows for true daemonization (so
                no output ends up at the terminal).
        - Made appropriate changes in MultiType as well.

0.58  Apr 06 12:29 2001
        - SIG HUP is complete.  Fixed bug in SIG HUP'ing
                PreFork mode.  Now effectively restarts.
        - Various clean ups in code.
        - More unification of code.

0.57  Mar 29 01:36 2001
        - SIG HUP is now functional on multiport mode under
                Single and Fork Mode.  No functionality is
                lost under PreFork, but HUP'ing results in
                seg fault.
        - Various bug fixes.

0.56  Mar 20 12:34 2001
        - Catch SIG pipes
        - Clean up of existing signal handling.
        - Trim memory in PreFork

0.55  Mar 19 10:44 2001
        - Allow overwrite of pid file - safe as other user.
        - More unified Signal handling, removal of duplicate code.
        - Allow Fork Server to shutdown the socket immediately
                after client accept to allow parent to HUP more
                 easily.
        - Check to see if parent process is still around in PreFork
                Server.  (Don't keep running if parent was
                 "kill 9"ed.)
        - Save commandline parameters in preparation for HUP

0.54  Mar 16 12:47 2001
        - Better handling of sigs in prefork
        - Improved logic on child coordination routine
        - Added parent_read_hook
        - Added httpd example
        - Added LoadTester.pl example

0.53  Mar 14 01:13 2001
        - Allow host to be set to '*'
                Allows for the server to bind to port whatever
                on all addresses at that box.
        - Make passing of host and proto on command line
                taint clean.
        - Added setsid functionality.
        - Added syslog_facility option - default is daemon.
        - Changed Fork and PreFork to handle $SIG{CHLD} in
                a more reliable fashion.
        - Added parent_read_hook

0.52  Mar 13 01:16 2001
        - Added syslog ability.
                This allows for logging to syslog instead
                of STDERR or a log file.  Logging still
                takes place via $self->log() but is configurable
                at startup.
        - Standardized existing log numbers to match syslog levels.

0.51  Mar 10 16:35 2001
        - Added piped serialization option.
                This allows for serialization to be done on
                a wider range of machines.  Flock is more
                bulletproof, but pipe is more portable.
                See the Net::Server::PreFork manpage.

0.50  Mar 10 10:06 2001
        - Added serialize option to PreFork.
                This allows for serialization to be turned on
                even on non_multi port process - this is
                done to get around some OS's which don't
                allow children to accept on the same socket
                at the same time.
        - Added semaphore type to the serialize option
                This type uses IPC::Semaphore instead of flock
                to serialize the child accept sequence.
                Thanks to Bennett Todd for sample code.

0.48  Mar 08 23:57 2001
        - Catch $SIG{INT}, $SIG{TERM} and $SIG{QUIT} in PreFork and Fork.
                This allows parent to shutdown children properly.
        - Catch $SIG{HUP} (currently shuts down server, needs to
                be able to restart server re-reading conf file)
        - Changed pid_file creation to after chroot, change of group
                and change of user - making sure the server has
                permission to write out the pid file.
        - Remove use of "use subs" in PreFork.

0.47  Mar 08 07:03 2001
        - Fix reverse lookup bug - thanks to Jonathan J. Miner for
          pointing out the missing pieces.
        - Cleaned up pod examples
        - Clarified some of the pod

0.46  Mar 05 07:37 2001
	- secure removal of pid_file - only happens on success -
                possibly should only happen after process has become
                another user
        - secure removal of lock_file - only happens if we generated it
        - added child_init_hook and child_finish_hook to PreFork
        - changed pre_configure_hook to configure_hook
        - added simple httpd example script

0.45  Mar 02 00:44 2001
	- clean up make process.
        - change version to hard coded number.
        - improve testing scripts

0.44  Mar 01 00:55 2001
	- partitioned properties in single hashref value.
        - changed versioning system to use cvs revision.
        - general clean up and add documentation.

0.43  Feb 28 01:08 2001
	- this revision and last add bulk of documentation.
        -various clean ups

0.4.1  Feb 26 17:48 2001
        - first build.  Up to this point many revisions, bug fixes
                and optimizations had been made.

0.1.0  Feb 08 06:28 2001
        - first cvs check in.  Up to this point, much thought and
                research had gone into the server.

