[poe-commits] SF.net SVN: poe: [2192] trunk/poe/lib/POE/Resource/Signals.pm
Brought to you by:
rcaputo
From: <rc...@us...> - 2007-07-04 21:31:15
|
Revision: 2192 http://svn.sourceforge.net/poe/?rev=2192&view=rev Author: rcaputo Date: 2007-07-04 14:31:15 -0700 (Wed, 04 Jul 2007) Log Message: ----------- Yuval Kogman discovered that sig_child() events were not triggering after a second POE::Kernel->run() in the same program. We tracked this down to a static compile-time initialization. Moving that into POE::Resource::Signals::_data_sig_initialize() fixed the problem right up. Modified Paths: -------------- trunk/poe/lib/POE/Resource/Signals.pm Modified: trunk/poe/lib/POE/Resource/Signals.pm =================================================================== --- trunk/poe/lib/POE/Resource/Signals.pm 2007-06-14 01:26:41 UTC (rev 2191) +++ trunk/poe/lib/POE/Resource/Signals.pm 2007-07-04 21:31:15 UTC (rev 2192) @@ -62,10 +62,7 @@ # A flag to tell whether we're currently polling for signals. my $polling_for_signals = 0; -# A flag determining whether there are child processes. Starts true -# so our waitpid() loop can run at least once. Starts false when -# running in an Apache handler so our SIGCHLD hijinx don't interfere -# with the web server. +# A flag determining whether there are child processes. my $kr_child_procs = exists($INC{'Apache.pm'}) ? 0 : 1; sub _data_sig_preload { @@ -105,6 +102,11 @@ sub _data_sig_initialize { my $self = shift; + # Initialize this to a true value so our waitpid() loop can run at + # least once. Starts false when running in an Apache handler so our + # SIGCHLD hijinx don't interfere with the web server. + $kr_child_procs = exists($INC{'Apache.pm'}) ? 0 : 1; + # In case we're called multiple times. unless (keys %_safe_signals) { foreach my $signal (keys %SIG) { @@ -316,10 +318,10 @@ sub _data_sig_pids_is_ses_watching { my ($self, $session, $pid) = @_; - return( - exists($kr_sessions_to_pids{$session}) && - exists($kr_sessions_to_pids{$session}{$pid}) - ); + return( + exists($kr_sessions_to_pids{$session}) && + exists($kr_sessions_to_pids{$session}{$pid}) + ); } ### Return a signal's type, or SIGTYPE_BENIGN if it's not special. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |