my ($self, $wq) = @_;
my $env = delete $self->{env}; # env is inherited at fork
my $lei = bless { %$self }, ref($self);
- if (my $dedupe = delete $lei->{dedupe}) {
- $lei->{dedupe} = $wq->deep_clone($dedupe);
+ for my $f (qw(dedupe ovv)) {
+ my $tmp = delete($lei->{$f}) or next;
+ $lei->{$f} = $wq->deep_clone($tmp);
}
$self->{env} = $env;
delete @$lei{qw(3 -lei_store cfg old_1 pgr lxs)}; # keep l2m
$sock->autoflush(1);
my $self = bless { sock => $sock }, __PACKAGE__;
vec(my $rvec = '', fileno($sock), 1) = 1;
- select($rvec, undef, undef, 1) or
+ select($rvec, undef, undef, 60) or
return send($sock, 'timed out waiting to recv FDs', MSG_EOR);
my @fds = $recv_cmd->($sock, my $buf, 4096 * 33); # >MAX_ARG_STRLEN
if (scalar(@fds) == 4) {
send($sock, "open(+<&=$fd) (FD=$i): $!", MSG_EOR);
}
} else {
- return send($sock, "recv_cmd failed: $!", MSG_EOR);
+ my $msg = "recv_cmd failed: $!";
+ warn $msg;
+ return send($sock, $msg, MSG_EOR);
}
$self->{2}->autoflush(1); # keep stdout buffered until x_it|DESTROY
# $ENV_STR = join('', map { "\0$_=$ENV{$_}" } keys %ENV);
if ($wq->wq_kill) {
$wq->wq_close
} elsif ($wq->wq_kill_old) {
- $wq->wq_wait_old;
+ $wq->wq_wait_old($self);
}
}
close(delete $self->{1}) if $self->{1}; # may reap_compress
sub event_step_init {
my ($self) = @_;
if (my $sock = $self->{sock}) { # using DS->EventLoop
- $sock->blocking(0);
$self->SUPER::new($sock, EPOLLIN|EPOLLET);
}
}