sub protocol_read_fail ($) {
my ($what) = @_;
_exit(0) if $!==ECONNRESET;
- fail_log("recv $what: $!");
+ die("recv $what: $!");
}
sub protocol_exchange () {
$r == $len or _exit(0);
@ARGV = split /\0/, $data;
- @ARGV >= 2 or fail_log("message data has too few strings");
- length(pop(@ARGV)) and fail_log("message data missing trailing nul");
+ @ARGV >= 2 or die("message data has too few strings");
+ length(pop(@ARGV)) and die("message data missing trailing nul");
%ENV = ();
while (my $s = shift @ARGV) {
last if !length $s;
- $s =~ m/=/ or fail_log("message data env var missing equals");
+ $s =~ m/=/ or die("message data env var missing equals");
$ENV{$`} = $';
}
}
if (!$child) {
#---- monitor [1] ----
close LISTEN;
- protocol_exchange();
+ eval { protocol_exchange(); 1; }
+ or fail_log("protocol exchange failed: $@");
return become_monitor();
}
close(CALL);