projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix console.pl so it ends gracefully
[spider.git]
/
perl
/
console.pl
diff --git
a/perl/console.pl
b/perl/console.pl
index a25e1533a806469186e7d5d450eaac756efc2170..4ba23d43502e7aefe0de3fe0abb65b3fa9d0aa60 100755
(executable)
--- a/
perl/console.pl
+++ b/
perl/console.pl
@@
-71,6
+71,7
@@
my @time = ();
my $lastmin = 0;
my $sigint;
my $sigterm;
my $lastmin = 0;
my $sigint;
my $sigterm;
+my $decease;
#$SIG{WINCH} = sub {@time = gettimeofday};
#$SIG{WINCH} = sub {@time = gettimeofday};
@@
-140,13
+141,23
@@
sub do_resize
show_screen();
}
show_screen();
}
+my $ceasing = 0;
+
# cease communications
sub cease
{
my $sendz = shift;
# cease communications
sub cease
{
my $sendz = shift;
+
+ print "ceasing ($ceasing)\r\n";
+
+ return if $ceasing;
+ ++$ceasing;
+
$conn->disconnect if $conn;
$conn->disconnect if $conn;
- endwin();
dbgclose();
dbgclose();
+ endwin();
+ $decease->send;
+
print @_ if @_;
exit(0);
}
print @_ if @_;
exit(0);
}
@@
-505,6
+516,9
@@
if ($call eq $main::mycall) {
exit(0);
}
exit(0);
}
+# create end condvar
+$decease = AnyEvent->condvar;
+
dbginit();
$conn = IntMsg->connect("$main::clusteraddr", $main::clusterport, \&rec_socket);
dbginit();
$conn = IntMsg->connect("$main::clusteraddr", $main::clusterport, \&rec_socket);
@@
-521,22
+535,22
@@
if (! $conn) {
exit(0);
}
exit(0);
}
-# create end condvar
-my $decease = AnyEvent->condvar;
-
-$conn->set_error(sub{cease(0)});
unless ($DB::VERSION) {
$sigint = AnyEvent->signal(signal=>'INT', cb=> sub{$decease->send});
$sigterm = AnyEvent->signal(signal=>'TERM', cb=> sub{$decease->send});
}
unless ($DB::VERSION) {
$sigint = AnyEvent->signal(signal=>'INT', cb=> sub{$decease->send});
$sigterm = AnyEvent->signal(signal=>'TERM', cb=> sub{$decease->send});
}
-$SIG{'HUP'} = \&sig_term;
+#$SIG{'HUP'} = \&sig_term;
+my $sighup = AnyEvent->signal(signal=>'HUP', cb=> sub{$decease->send});
+$conn->{sock}->on_eof(sub{$decease->send});
+$conn->{sock}->on_error(sub{$decease->send});
# start up
do_resize();
# start up
do_resize();
-$SIG{__DIE__} = \&sig_term;
+#$SIG{__DIE__} = \&sig_term;
+#my $sigdie = AnyEvent->signal(signal=>'__DIE__', cb=> sub{$decease->send});
$conn->send_later("A$call|$connsort width=$cols");
$conn->send_later("I$call|set/page $maxshist");
$conn->send_later("A$call|$connsort width=$cols");
$conn->send_later("I$call|set/page $maxshist");
@@
-551,4
+565,3
@@
my $event_loop = AnyEvent->timer(after => 0, interval => 0.010, cb => sub{idle_
$decease->recv;
cease(0);
$decease->recv;
cease(0);
-exit(0);