sub _lei_atfork_child {
my ($self, $persist) = @_;
# we need to explicitly close things which are on stack
+ my $cfg = $self->{cfg};
if ($persist) {
open $self->{3}, '<', '/' or die "open(/) $!";
fchdir($self);
close($_) for (grep(defined, delete @$self{qw(0 1 2 sock)}));
- if (my $cfg = $self->{cfg}) {
- delete @$cfg{qw(-lei_store -watches -lei_note_event)};
- }
+ delete @$cfg{qw(-lei_store -watches -lei_note_event)};
} else { # worker, Net::NNTP (Net::Cmd) uses STDERR directly
open STDERR, '+>&='.fileno($self->{2}) or warn "open $!";
STDERR->autoflush(1);
POSIX::setpgid(0, $$) // die "setpgid(0, $$): $!";
+ delete @$cfg{qw(-watches -lei_note_event)};
}
close($_) for (grep(defined, delete @$self{qw(old_1 au_done)}));
delete $self->{-socks};
my $end = $lei->pkt_op_pair;
my $ident = $wq->{-wq_ident} // "lei-$lei->{cmd} worker";
$flds->{lei} = $lei;
- $wq->awaitpid_init($wq->can('_wq_done_wait') // \&wq_done_wait, $lei);
- $wq->wq_workers_start($ident, $jobs, $lei->oldset, $flds);
+ $wq->wq_workers_start($ident, $jobs, $lei->oldset, $flds,
+ $wq->can('_wq_done_wait') // \&wq_done_wait, $lei);
delete $lei->{pkt_op_p};
my $op_c = delete $lei->{pkt_op_c};
@$end = ();
# preserve $? for ->fail or ->x_it code
}
-sub wq_done_wait { # awaitpid cb (via wq_eof / IPC->awaitpid_init)
+sub wq_done_wait { # awaitpid cb (via wq_eof)
my ($pid, $wq, $lei) = @_;
local $current_lei = $lei;
my $err_type = $lei->{-err_type};