I've run this through the debugger a few times, without quite figuring out how these parameters are supposed to be passed in, nor why they are missing from $s->{server} where Net::Server::Proto::SSLEAY is expecting them.
That's because the keys SSL_cert_file SSL_key_file are missing from the default structure in sub options from Net/Server.pm line 1338 (as of version 0.99) - it's a bug:
### set up default structure
sub options {
my $self = shift;
my $prop = $self->{server};
my $ref = shift;
foreach ( qw(port host proto allow deny cidr_allow cidr_deny) ){
if (! defined $prop->{$_}) {
$prop->{$_} = [];
} elsif (! ref $prop->{$_}) {
$prop->{$_} = [$prop->{$_}]; # nicely turn us into an arrayref i
+f we aren't one already
}
$ref->{$_} = $prop->{$_};
}
foreach ( qw(conf_file
user group chroot log_level
log_file pid_file background setsid
listen reverse_lookups
syslog_logsock syslog_ident
syslog_logopt syslog_facility
no_close_by_child
no_client_stdout tie_client_stdout tied_stdout_callback
+ tied_stdin_callback
leave_children_open_on_hup
) ){
$ref->{$_} = \$prop->{$_};
}
}
Add the keys below leave_children_open_on_hup and presto - it works, at least it doesn't die anymore.
update: I'm not sure whether it's the right place to add those keys, since the machinery of those modules is hard to grasp with little time at hand. Maybe you should file a bug report.