From 4bc15e5af014a4f1ad0b82cc59595ebbc7899d39 Mon Sep 17 00:00:00 2001 From: Dan Boger Date: Tue, 1 Sep 2009 12:02:55 -0700 Subject: [PATCH] Make sure we don't leave pids in the pidwait_*() list once we're done with our forked child. --- twirssi.pl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/twirssi.pl b/twirssi.pl index 1263893..eb878bf 100644 --- a/twirssi.pl +++ b/twirssi.pl @@ -38,6 +38,7 @@ my %tweet_cache; my %id_map; my $failwhale = 0; my $first_call = 1; +my $child_pid; my %irssi_to_mirc_colors = ( '%k' => '01', @@ -776,13 +777,13 @@ sub get_updates { my ( $fh, $filename ) = File::Temp::tempfile(); binmode( $fh, ":utf8" ); - my $pid = fork(); + $child_pid = fork(); - if ($pid) { # parent + if ($child_pid) { # parent Irssi::timeout_add_once( 5000, 'monitor_child', [ "$filename.done", 0 ] ); - Irssi::pidwait_add($pid); - } elsif ( defined $pid ) { # child + Irssi::pidwait_add($child_pid); + } elsif ( defined $child_pid ) { # child close STDIN; close STDOUT; close STDERR; @@ -1222,6 +1223,9 @@ sub monitor_child { delete $tweet_cache{$_}; } $last_poll = $new_last_poll; + + # make sure the pid is removed from the waitpid list + Irssi::pidwait_remove($child_pid); # save id_map hash if ( keys %id_map -- 2.39.5