ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



Apache::SIG(3)                       User Contributed Perl Documentation                      Apache::SIG(3)



NAME
       Apache::SIG - Override apache signal handlers with Perl's

SYNOPSIS
        PerlFixupHandler Apache::SIG

DESCRIPTION
       When a client drops a connection and apache is in the middle of a write, a timeout will occur and
       httpd sends a SIGPIPE.  When apache's SIGPIPE handler is used, Perl may be left in the middle of it's
       eval context, causing bizarre errors during subsequent requests are handled by that child.  When
       Apache::SIG is used, it installs a different SIGPIPE handler which rewinds the context to make sure
       Perl is back to normal state, preventing these bizarre errors.

       If you would like to log when a request was cancelled by a SIGPIPE in your Apache access_log, you can
       declare Apache::SIG as a handler (any Perl*Handler will do, as long as it is run before PerlHandler,
       e.g. PerlFixupHandler), and you must also define a custom LogFormat in your httpd.conf, like so:

       PerlFixupHandler Apache::SIG LogFormat "%h %l %u %t \"%r\" %s %b %{SIGPIPE}e"

       If the server has noticed that the request was cancelled via a SIGPIPE, then the log line will end
       with 1, otherwise it will just be a dash.

CAVEATS
       The signal handler in this package uses the subprocess_env table of the main request object to supply
       the 'SIGPIPE' "environment variable" to the log handler. If you already use the key 'SIGPIPE' in your
       subprocess_env table, then you can redefine the key like this:

       $Apache::SIG::PipeKey = 'my_SIGPIPE';

       and log it like this:

       LogFormat "%h %l %u %t \"%r\" %s %b %{my_SIGPIPE}e"

AUTHORS
       Doug MacEachern and Doug Bagley

SEE ALSO
       perlvar(1)



perl v5.8.8                                      2000-03-30                                   Apache::SIG(3)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.