Manpages

Manpage of Apache::SIG

Apache::SIG

Section: User Contributed Perl Documentation (3)
Updated: 2000-03-03
Index
Return to Main Contents
 

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)


 

Index

NAME
SYNOPSIS
DESCRIPTION
CAVEATS
AUTHORS
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 19:20:45 GMT, April 26, 2024