]> git.etc.gen.nz Git - spong.git/commitdiff
child handler overwritten at send message
authorYukimasa TAKANO <takano@users.sourceforge.net>
Wed, 19 Dec 2007 21:19:43 +0000 (10:19 +1300)
committerAndrew Ruthven <andrew@cerberus.etc.gen.nz>
Wed, 19 Dec 2007 21:19:43 +0000 (10:19 +1300)
Some child process call message_user() with SIG{CHLD} = 'IGNORE',
but overwrite to chld_handler() at finish sending message. That is wrong.
This patch allows to keep SIG{CHLD} to 'IGNORE' after sending message.

src/spong-server.pl

index 0f97779e9ab56f7c54136cea73c5bd473020087b..e832e2dcea2ff737757eb8fde0d56f4be9443d85 100755 (executable)
@@ -1207,6 +1207,7 @@ sub message_user {
 
    if (! defined $duration || $duration eq "") { $duration = 0; }
 
+   my $child_handler = $SIG{'CHLD'};
    $SIG{'CHLD'} = 'IGNORE';
 
    # if message type was 'status' and messaging is allowed
@@ -1266,7 +1267,7 @@ sub message_user {
                      $message, 1 );
    }
 
-   $SIG{'CHLD'} = \&chld_handler;
+   $SIG{'CHLD'} = $child_handler;
 }
 
 # This func takes care of sending out the notification message by calling