Release Notes: This release allows a last resort "emergency server" which is only used when all other servers are unavailable. In addition, separate soft and hard limits can be configured on the number of connections to each server.
Release Notes: If a client went away before receiving all its data, the remaining part would be sent to the next client using the same connection slot. Memory and file descriptor leaks were fixed. Readability of logs was improved. Pen is now even faster due to less copying.
Release Notes: A control interface allows operational parameters of a running load balancer to be examined and changed without restarting.
Release Notes: This release fixes a minor bug. When Pen tries to connect to a server, it uses a timeout to ensure that it doesn't hang indefinitely if there is no response. Normally the server responds within the specified time and the timeout should be canceled, but that wasn't happening. As a result, Pen got an ALRM signal after a while. If that happened during a system call the results would be incorrect.
Release Notes: A bug that corrupted the transfer of large files was fixed. Portability to the FreeBSD platform was improved. Information regarding load balancing LDAP servers was added to the HOWTO.
Release Notes: In this release, mergelogs was rewritten from the ground up. It will now never discard a web server log entry, and tries much harder to locate a good match in the Pen log. It deals with log entries that are out of order and servers with unsynchronized clocks and/or different time zones.
Release Notes: Optional use of daemon(), a new CGI script penstats to help update and display statistics in HTML formatm, set current in store_conn, fixes for data corruption in flush_up/flush_down, and testing on HP-UX.
Release Notes: When storing part of the buffer for a renewed attempt, store the end, not the beginning. Autoconfiguration. Use daemon() if available. Don't try to close uninitialized file handles in add_client. New option -n to not make sockets nonblocking (mainly useful for debugging).
Release Notes: Ensuring that remaining data is stored away when EAGAIN is received in copy_up.
Release Notes: Ignoring SIGPIPE, a new -p argument to store the process ID in a file, nonblocking sockets, and handling EAGAIN in copy_up/down.