From: Dan Boger Date: Tue, 1 Sep 2009 19:02:55 +0000 (-0700) Subject: Make sure we don't leave pids in the pidwait_*() list once we're done with our forked... X-Git-Url: https://git.sommitrealweird.co.uk/twirssi-net-twitter-lite.git/commitdiff_plain/4bc15e5af014a4f1ad0b82cc59595ebbc7899d39?ds=inline;hp=-c Make sure we don't leave pids in the pidwait_*() list once we're done with our forked child. --- 4bc15e5af014a4f1ad0b82cc59595ebbc7899d39 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