Revision history for Perl extension SpeedyCGI. 2.22 Sat Oct 11 20:34:15 PDT 2003 - Redhat9 fixes. - Better support for setuid under Solaris. - Fixes for HP-UX 11.22 - Fix for memory leak in speedy_backend reported by James H. Thompson - speedy_file.c fixes for bugs reported by Dmitri Tikhonov - Fix from Lars Thegler for buffer overrun in speedy_opt.c - Add efence malloc debugging. 2.21 Thu Sep 26 15:27:35 PDT 2002 - Fix too many backends problem reported by Theo Petersen. The problem is due to temp-file corruption that occurs when the web-server sends a TERM signal to the frontend while it is working on the temp file. It also results in some backends failing due to the corruption. Added a fix so that signals are always blocked while working on the temp file. - Shutdown handler should be called after script is touched. - Fixes for Mac OS X 10.1. Workaround the sigpending() bug, and add msync() which appears to fix a shared-memory flushing problem when temp-file is expanded. 2.20 Wed Sep 11 19:33:36 PDT 2002 - Added a mod_speedycgi module that works under Apache 2.0.39 or later. Works with the default prefork mpm, but not with threaded mpm's. - Exit status is now passed from the backend to the frontend. The frontend now exits soon after the backend exits instead of when all sockets close. - Fixed bug where alarm's were unusable from within perl code. - Signal handling in the backend has been cleaned up. Signal settings will no longer be altered between perl runs. - Find scripts by dev/ino/group-name instead of by dev/ino - In the "speedy" executable buffering has been changed so that BufsizGet and BufsizPut are now maximum values instead of absolute values. The buffers will start small and grow to this value if needed. The default values for these options have been increased. - Backend allocation is now controlled better. Another backend isn't allocated until the previous backend has had a chance to start. This should reduce the tendency to use too many backends when the load fluctuates. - Initially compiled perl-code is now shared among interpreters within the same group (or same script if not using groups). - To implement the new shared perl code and exit status features, an extra parent process is created for each group (or for each script, if not using groups). This process should use very little cpu or un-shared memory. - New code provides doubly linked lists for all slots in the temp file. This eliminates some of the more obscure linked list code in various places, and enables some minor performance improvements. 2.11 Tue Mar 20 22:59:36 PST 2001 - When using the new Group option, exit was causing the whole interpreter to exit. - Fixed a bug introduced in 2.10 where mod_speedycgi could run the wrong script - Fixed a bug where mod_speedycgi could mix up the sh-bang options between different scripts. - Added automated mod_speedycgi testing. - Added a workaround for a Solaris 2.5.1 bug that was causing the mungefds and touch tests to fail. - Added a new variable $CGI::SpeedyCGI::i_am_speedy for a quick way to check if the script is running under speedycgi. - New methods: add_shutdown_handler, shutdown_now, shutdown_next_time 2.10 Wed Jan 31 02:56:33 PST 2001 - Multiple scripts in one interpreter using the new Group option. - Reduce speedy exec time by removing all extraneous shared-libs - Make code smaller by adding ifdefs to separate frontend/backend code. - Speedy frontend now dies on sigpipe if it gets epipe on fd 1 or 2 - The backend now always tracks the current directory of the frontend - New "register_cleanup" method - Build binaries for solaris and bsd ("make solpkg" and "make bsdpkg") - Bug fixes: - Changing mtime on a script could cause temp-file corruption - After hitting maxruns, backend was not chdir'ing to the right directory before exec'ing itself. 2.02 Sun Dec 17 21:43:02 PST 2000 - Bug fixes - Memory leak in mod_speedycgi - Zombie backends could appear to still be running - Options in #! line were sometimes ignored - Module is not being installed correctly on CPAN - Fix for mod_speedycgi compile failure on solaris-8 - Default value for MaxRuns is now 500 - Experimental support for setuid scripts with -DIAMSUID - Don't link the frontend with libperl - New -v option displays the SpeedyCGI version - Add ability to build binary rpms with "make rpm" 2.0.1 Sun Oct 22 19:53:24 PDT 2000 - Bug fixes: - mod_speedycgi reports temp file is corrupt - Switching from mod_perl to mod_speedycgi causes error - Runaway file growth in FreeBSD 3.4 - Stranded sockets in /tmp - Dead frontends are left stranded in invalid groups - Cannot reliably detect temp-file removal - MAP_FAILED not defined on HP-UX - index() declaration compiler warning on Solaris Details are at http://sf-www.sourceforge.net/projects/SpeedyCGI 2.0 Mon Sep 11 02:46:57 PDT 2000 - Use unix sockets instead of tcp sockets. Fixes the TIME_WAIT problem in 1.x releases. - When a backend hits MaxRuns it now re-execs itself. Setting MaxRuns to 1 allows pre-compilation of scripts that can't run persistently. - Cleaner implementation of MaxBackends using frontend queuing. - The backend is now a separate binary from the frontend. - mod_spedycgi is now a shared object (DSO). - Redesigned temp-file structure: - One temp-file for each user, used for all speedy processes running under that uid. - Track backends regardless of their state. - Two way queuing - backends waiting on frontends and frontends waiting on backends. - Support for multiple scripts running in a single interpreter. Not yet implemented in code. 1.8.3 Sat Aug 01 16:52:20 GMT 2000 - Added MAXBACKENDS feature to limit number of backend processes spawned. This required changing the format of the backend queue. Now each entry has a pid, port number, and used flag. The queue now contains a list of all backend processes, with the used flag present to determine whether or not the process is in use. - Added contrib directory with instructions on using SpeedyCGI with HTML::Mason 1.8.2 Sun Jun 6 04:01:53 GMT 1999 - Make I/O more compatible with PerlIO 1.8.1 Sat Jun 5 12:30:43 PDT 1999 - Fix compile failure under perl 5.004. 1.8 Thu Jun 3 13:20:00 PDT 1999 - Now has support for an Apache module front-end, mod_speedycgi. This is a optional performance improvement -- it is not required in order to run SpeedyCGI under Apache. See apache/README for details. - Fix for initial_eof test bug on SGI-Irix. - New CGI:SpeedyCGI method "i_am_speedy" allows the script to tell whether it is running under SpeedyCGI - New CGI::SpeedyCGI methods "setopt" and "getopt" allow the script to set/get SpeedyCGI options at runtime. - Fix for bug in Solaris where SpeedyCGI options could not be passed in on the #! line. - Better documentation - Fix to make t/shutdown.t work before "make install" is done. 1.7 Thu May 13 00:28:42 PDT 1999 - Re-did a lot of the queue.c code. Fixes the bug where queue order was not being preserved when a perl-proc exited. Also saves a couple syscalls when using read/write instead of mmap. - Fixed compile warnings on Dec Alpha in start_perl.c and speedy.c - Added "sleep 2" to fix t/basic.t test #2 under HP-UX. - Secret word was not very random on little-endian systems. 1.6 Sun Apr 4 18:18:25 PDT 1999 - added support for stderr. - make sure to cd back to original directory after each perl run. - signals are now reset between every request. - wrote speedy_poll.c -- allows compilation for either poll or select, using defines USE_POLL or USE_SELECT. Default is poll for sysv & sun, select for all others. - queue.c patch for compile failure on alpha/OSF1 V3.2. From Jean-Damien Durand <email@example.com> - Use mtime instead of ctime to check whether a file has changed. Touch doesn't reliably update ctime on some systems. - Send over environment using the same poll loop as when sending stdin/stdout. A little cleaner & more efficient. 1.5 Tue Mar 30 13:33:55 PST 1999 - Re-wrote the test scripts to be more reliable. - Added a FAQ file. 1.4 Mon Mar 29 03:54:39 PST 1999 - Converted C++ style comments to /**/. Should help compilation - Added CGI::SpeedyCGI::set_shutdown_handler to allow the perl program to set a callback for when perl is shut down. - Added t/shutdown.t to test the new set_shutdown_handler feature. - queue.c wouldn't compile as-is on Solaris Devpro-4.2. Changed the void*'s to char*'s so the compiler could do pointer arithmetic.