|
135
|
1 |
0 |
unless eval {
do {
my($mask, $action, $oldaction);
my $use_sa = $self->{'use_sigaction'};
my $h = sub {
die "Call timed out\n";
}
;
local $SIG{'ALRM'} = $h unless $use_sa;
if ($use_sa) {
$mask = "POSIX::SigSet"->new(14);
$action = "POSIX::SigAction"->new($h, $mask);
$oldaction = "POSIX::SigAction"->new;
sigaction(14, $action, $oldaction);
};
$failed = 1 unless eval {
do {
alarm $timeout;
$retval = &$code(@args);
alarm 0;
1
}
};
alarm 0;
sigaction(14, $oldaction) if $use_sa;
die $@ if $failed and $@;
1
}
} |