| line |
true |
false |
branch |
|
36
|
3 |
68 |
@_ == 1 ? : |
|
45
|
8 |
62 |
ref $_[0] ? : |
|
46
|
3 |
67 |
@_ == 1 ? : |
|
72
|
13 |
0 |
if ($ok) { } |
|
89
|
70 |
3 |
unless eval {
do {
local $SIG{'__DIE__'};
$self->commandline
}
} |
|
93
|
0 |
73 |
unless $self->default_values |
|
94
|
20 |
53 |
if @defaults |
|
99
|
70 |
0 |
ref $_[0] ? : |
|
|
70 |
73 |
if @_ |
|
106
|
70 |
0 |
if $script =~ m[^[^/]+/] and $ENV{'PWD'} |
|
116
|
27 |
73 |
$_[0] && ref $_[0] ? : |
|
118
|
4 |
96 |
if @ARGV |
|
119
|
100 |
0 |
if $prop->{'_run_args'} |
|
121
|
8 |
92 |
if ($prop->{'conf_file'}) { } |
|
125
|
1 |
91 |
if $def->{'conf_file'} |
|
135
|
70 |
0 |
unless defined $prop->{'log_level'} and $prop->{'log_level'} =~ /^\d+$/ |
|
136
|
0 |
70 |
if $prop->{'log_level'} > 4 |
|
139
|
0 |
70 |
if ($prop->{'pid_file'}) |
|
140
|
0 |
0 |
unless (eval {
do {
&check_pid_file($prop->{'pid_file'})
}
}) |
|
141
|
0 |
0 |
unless $ENV{'BOUND_SOCKETS'} |
|
146
|
69 |
1 |
unless ($prop->{'_is_inet'}) |
|
147
|
0 |
69 |
if ($prop->{'setsid'} or length $prop->{'log_file'}) |
|
148
|
0 |
0 |
unless open STDIN, '<', '/dev/null' |
|
149
|
0 |
0 |
unless open STDOUT, '>', '/dev/null' |
|
153
|
70 |
0 |
unless ($ENV{'BOUND_SOCKETS'}) |
|
154
|
0 |
70 |
if ($prop->{'setsid'} or $prop->{'background'}) |
|
156
|
0 |
0 |
unless defined $pid |
|
157
|
0 |
0 |
if $pid |
|
161
|
0 |
70 |
if $prop->{'setsid'} |
|
164
|
0 |
70 |
if (length $prop->{'log_file'} and not $prop->{'log_function'}) { } |
|
|
0 |
70 |
elsif ($prop->{'setsid'}) { } |
|
173
|
0 |
70 |
if ($prop->{'pid_file'}) |
|
174
|
0 |
0 |
if (eval {
do {
&create_pid_file($prop->{'pid_file'})
}
}) { } |
|
188
|
70 |
0 |
unless (defined $prop->{'log_file'}) |
|
194
|
0 |
0 |
if ($prop->{'log_file'} =~ /^([a-zA-Z]\w*(?:::[a-zA-Z]\w*)*)$/) |
|
197
|
0 |
0 |
if (eval {
do {
require $file
}
}) { } |
|
|
0 |
0 |
elsif ($file =~ /::/ or grep {-e "$_/$file";} @INC) { } |
|
207
|
0 |
0 |
unless $prop->{'log_file'} =~ m(^([\:\w\.\-/\\]+)$) |
|
209
|
0 |
0 |
unless open _SERVER_LOG, '>>', $prop->{'log_file'} |
|
225
|
3 |
66 |
if ($self->isa('Net::Server::MultiType')) |
|
229
|
69 |
0 |
if $type ne $super |
|
233
|
0 |
69 |
if not @{$prop->{'sock'};} |
|
242
|
7 |
62 |
if (not defined $ports or ref $ports and not @$ports) |
|
244
|
0 |
7 |
if (not defined $ports or ref $ports and not @$ports) |
|
252
|
62 |
7 |
ref $ports ? : |
|
253
|
82 |
18 |
@$bind >= @$hosts ? : |
|
|
100 |
0 |
ref $hosts ? : |
|
254
|
90 |
10 |
@$bind >= @$protos ? : |
|
|
100 |
0 |
ref $protos ? : |
|
255
|
87 |
13 |
@$bind >= @$ipvs ? : |
|
|
100 |
0 |
ref $ipvs ? : |
|
258
|
0 |
100 |
if ($port ne '0' and $bound{"$host\e$port\e$proto\e$ipv"}++) |
|
283
|
0 |
12 |
if (exists $ENV{'BOUND_SOCKETS'}) { } |
|
289
|
0 |
0 |
unless defined $orig |
|
290
|
0 |
0 |
$fd =~ /^(\d+)$/ ? : |
|
295
|
0 |
0 |
if (my $ref = $map{$sock->hup_string}) { } |
|
299
|
0 |
0 |
unless keys %$ref |
|
321
|
7 |
5 |
if (@{$prop->{'sock'};} > 1 or $prop->{'multi_port'}) { } |
|
338
|
13 |
0 |
if (not defined $prop->{'group'}) { } |
|
|
0 |
0 |
elsif ($prop->{'group'} =~ /^([\w-]+(?: [\w-]+)*)$/) { } |
|
343
|
0 |
0 |
if $@ |
|
348
|
13 |
0 |
if (not defined $prop->{'user'}) { } |
|
|
0 |
0 |
elsif ($prop->{'user'} =~ /^([\w-]+)$/) { } |
|
353
|
0 |
0 |
if $@ |
|
359
|
0 |
13 |
if ($prop->{'group'} ne $) or $prop->{'user'} ne $>) |
|
362
|
0 |
0 |
if $prop->{'pid_file_unlink'} |
|
363
|
0 |
0 |
if $prop->{'lock_file_unlink'} |
|
364
|
0 |
0 |
unless $prop->{'chown_files'} |
|
368
|
0 |
0 |
unless chown $uid, $gid, $file |
|
372
|
0 |
13 |
if ($prop->{'chroot'}) |
|
373
|
0 |
0 |
unless -d $prop->{'chroot'} |
|
375
|
0 |
0 |
unless chroot $prop->{'chroot'} |
|
380
|
0 |
13 |
if ($prop->{'group'} ne $)) |
|
384
|
0 |
13 |
if ($prop->{'user'} ne $>) |
|
389
|
0 |
13 |
if ($@) |
|
390
|
0 |
0 |
if ($> == 0) { } |
|
|
0 |
0 |
elsif ($< == 0) { } |
|
418
|
2 |
3 |
if $self->done |
|
429
|
8 |
5 |
if ($prop->{'multi_port'}) { } |
|
430
|
0 |
8 |
if $prop->{'_HUP'} |
|
432
|
0 |
7 |
if $prop->{'_HUP'} |
|
433
|
0 |
7 |
if ($self->can_read_hook($sock)) |
|
440
|
0 |
12 |
unless defined $sock |
|
442
|
1 |
11 |
if (2 == $sock->getsockopt(1, 3)) { } |
|
452
|
0 |
12 |
if $prop->{'_HUP'} |
|
453
|
12 |
0 |
if $prop->{'client'} |
|
466
|
0 |
7 |
unless @waiting |
|
478
|
1 |
11 |
if $prop->{'udp_true'} |
|
480
|
0 |
11 |
unless ($client) |
|
485
|
3 |
8 |
if $client->can('post_accept') |
|
486
|
10 |
1 |
if (not $prop->{'no_client_stdout'}) |
|
489
|
4 |
6 |
if ($prop->{'tie_client_stdout'} or $client->can('tie_stdout') and $client->tie_stdout) { } |
|
|
6 |
0 |
elsif (defined(my $fileno = fileno $prop->{'client'})) { } |
|
490
|
0 |
4 |
unless open STDIN, '<', '/dev/null' |
|
491
|
0 |
4 |
unless open STDOUT, '>', '/dev/null' |
|
492
|
0 |
4 |
unless tie *STDOUT, 'Net::Server::TiedHandle', $client, $prop->{'tied_stdout_callback'} |
|
493
|
0 |
4 |
unless tie *STDIN, 'Net::Server::TiedHandle', $client, $prop->{'tied_stdin_callback'} |
|
495
|
0 |
6 |
unless open STDIN, '<&', $fileno |
|
496
|
0 |
6 |
unless open STDOUT, '>&', $fileno |
|
512
|
0 |
12 |
if ($client->NS_proto =~ /^UNIX/) |
|
514
|
0 |
0 |
if $prop->{'log_level'} and 3 <= $prop->{'log_level'} |
|
518
|
12 |
0 |
if (my $sockname = $client->sockname) { } |
|
526
|
1 |
11 |
if ($prop->{'udp_true'}) { } |
|
|
11 |
0 |
elsif ($prop->{'peername'} = $client->peername) { } |
|
527
|
1 |
0 |
if ($client->sockdomain == 2) { } |
|
532
|
0 |
0 |
'Socket6'->can('inet_ntop') ? : |
|
544
|
0 |
12 |
if ($addr and defined $prop->{'reverse_lookups'}) |
|
545
|
0 |
0 |
if ($INC{'Socket6.pm'} and 'Socket6'->can('getnameinfo')) { } |
|
547
|
0 |
0 |
if @res > 1 |
|
556
|
0 |
12 |
if $prop->{'log_level'} and 3 <= $prop->{'log_level'} |
|
567
|
0 |
13 |
if $sock and $sock->NS_proto =~ /^UNIX/ |
|
573
|
13 |
0 |
unless @{$prop->{'allow'};} or @{$prop->{'deny'};} or @{$prop->{'cidr_allow'};} or @{$prop->{'cidr_deny'};} |
|
577
|
0 |
0 |
$prop->{'peeraddr'} =~ /^\s*::ffff:([0-9.]+\s*)$/ ? : |
|
582
|
0 |
0 |
if $prop->{'reverse_lookups'} and defined $prop->{'peerhost'} and $prop->{'peerhost'} =~ /^$_$/ |
|
583
|
0 |
0 |
if $peeraddr =~ /^$_$/ |
|
585
|
0 |
0 |
if (@{$prop->{'cidr_deny'};}) |
|
587
|
0 |
0 |
if Net::CIDR::cidrlookup($peeraddr, @{$$prop{'cidr_deny'};}) |
|
593
|
0 |
0 |
if $prop->{'reverse_lookups'} and defined $prop->{'peerhost'} and $prop->{'peerhost'} =~ /^$_$/ |
|
594
|
0 |
0 |
if $peeraddr =~ /^$_$/ |
|
596
|
0 |
0 |
if (@{$prop->{'cidr_allow'};}) |
|
598
|
0 |
0 |
if Net::CIDR::cidrlookup($peeraddr, @{$$prop{'cidr_allow'};}) |
|
612
|
1 |
9 |
if ($prop->{'udp_true'}) |
|
614
|
0 |
1 |
if ($prop->{'udp_data'} =~ /dump/) |
|
629
|
0 |
9 |
if (/get\s+(\w+)/) { } |
|
|
0 |
9 |
elsif (/dump/) { } |
|
|
3 |
6 |
elsif (/quit/) { } |
|
|
6 |
0 |
elsif (/exit/) { } |
|
638
|
0 |
3 |
if $@ eq "Timed Out!\n" |
|
653
|
1 |
5 |
if $prop->{'udp_true'} |
|
655
|
4 |
1 |
unless ($prop->{'no_client_stdout'}) |
|
656
|
2 |
2 |
if ($t) |
|
657
|
2 |
2 |
if ($t) |
|
658
|
0 |
4 |
unless open STDIN, '<', '/dev/null' |
|
659
|
0 |
4 |
unless open STDOUT, '>', '/dev/null' |
|
666
|
0 |
3 |
if @_ |
|
678
|
0 |
0 |
unless defined $pid |
|
679
|
0 |
0 |
unless ($pid) |
|
693
|
0 |
0 |
if $self->{'server'}{'children'} |
|
713
|
0 |
3 |
if (defined $prop->{'ppid'} and $prop->{'ppid'} != $$ and not defined $prop->{'no_close_by_child'}) |
|
724
|
0 |
0 |
if ($prop->{'kind_quit'} and $prop->{'children'}) |
|
730
|
0 |
0 |
if $self->can('coordinate_children') |
|
731
|
0 |
0 |
unless keys %{$$self{'server'}{'children'};} |
|
736
|
0 |
12 |
if ($prop->{'_HUP'} and $prop->{'leave_children_open_on_hup'}) { } |
|
740
|
3 |
9 |
if $prop->{'children'} |
|
744
|
2 |
0 |
if (defined $prop->{'lock_file'} and -e $prop->{'lock_file'} and defined $prop->{'lock_file_unlink'}) |
|
747
|
0 |
2 |
unless unlink $prop->{'lock_file'} |
|
749
|
0 |
0 |
if (defined $prop->{'pid_file'} and -e $prop->{'pid_file'} and not $prop->{'_HUP'} and defined $prop->{'pid_file_unlink'}) |
|
753
|
0 |
0 |
unless unlink $prop->{'pid_file'} |
|
756
|
0 |
12 |
if ($prop->{'_HUP'}) |
|
762
|
0 |
12 |
if $prop->{'no_exit_on_close'} |
|
777
|
0 |
16 |
if $sock->NS_proto =~ /^UNIX/ |
|
789
|
0 |
0 |
unless $prop->{'ppid'} |
|
798
|
0 |
3 |
unless $prop->{'children'} and scalar keys %{$$prop{'children'};} |
|
802
|
4 |
0 |
if (kill 15, $pid or not kill(0, $pid)) |
|
816
|
0 |
0 |
unless defined $prop->{'children'} and scalar keys %{$$prop{'children'};} |
|
817
|
0 |
0 |
unless $self->is_prefork |
|
822
|
0 |
0 |
unless kill 1, $pid |
|
846
|
0 |
0 |
unless $prop->{'_HUP'}[$i]->fdopen($fd, 'w') |
|
860
|
0 |
0 |
if ($prop->{'leave_children_open_on_hup'} and scalar keys %{$$prop{'children'};}) |
|
896
|
0 |
93 |
unless $prop->{'log_level'} |
|
897
|
25 |
68 |
if $level =~ /^\d+$/ and $level > $prop->{'log_level'} |
|
898
|
0 |
68 |
if @therest |
|
900
|
0 |
68 |
if ($prop->{'log_function'}) |
|
901
|
0 |
0 |
if eval {
do {
$prop->{'log_function'}->($level, $msg);
1
}
} |
|
903
|
0 |
0 |
if ($prop->{'log_class'} and $prop->{'log_class'}->can('handle_error')) { } |
|
910
|
0 |
68 |
unless $level =~ /^\d+$/ |
|
924
|
0 |
68 |
if ($prop->{'log_file'}) { } |
|
|
0 |
68 |
elsif ($prop->{'setsid'}) { } |
|
949
|
552 |
296 |
if (not defined $prop->{$_}) { } |
|
|
8 |
288 |
elsif (not ref $prop->{$_}) { } |
|
975
|
106 |
27 |
unless $template and ref $template |
|
976
|
0 |
0 |
unless ($_[2] or scalar keys %$template or $self->{'server'}{'_no_options'}++) |
|
983
|
314 |
13 |
if ($args->[$i] =~ /^(?:--)?(\w+)(?:[=\ ](\S+))?$/ and exists $template->{$1}) |
|
987
|
311 |
3 |
unless (defined $val) |
|
988
|
0 |
311 |
if ($i > $#$args or $args->[$i] and $args->[$i] =~ /^--\w+/) { } |
|
993
|
0 |
35 |
if ref $val eq 'ARRAY' and @$val == 1 and ref $template->{$key} ne 'ARRAY' |
|
997
|
274 |
40 |
unless ref $val |
|
999
|
184 |
130 |
if (ref $template->{$key} eq 'ARRAY') { } |
|
1000
|
142 |
42 |
unless (defined $previously_set{$key}) |
|
1003
|
12 |
172 |
if $previously_set{$key} |
|
1004
|
35 |
137 |
ref $val eq 'ARRAY' ? : |
|
1006
|
112 |
18 |
unless (defined $previously_set{$key}) |
|
1007
|
22 |
90 |
defined ${$$template{$key};} ? : |
|
1009
|
25 |
105 |
if $previously_set{$key} |
|
1010
|
0 |
105 |
if ref $val eq 'ARRAY' |
|
1020
|
9 |
0 |
$file =~ m[^([\w\.\-\/\\\:]+)$] ? : |
|
1021
|
0 |
9 |
unless (open my $fh, '<', $file) |
|
1022
|
0 |
0 |
if $ENV{'BOUND_SOCKETS'} |
|
1026
|
99 |
90 |
if $line =~ /^\s* ((?:--)?\w+) (?:\s*[=:]\s*|\s+) (\S+)/x |
|
1042
|
0 |
4 |
unless exists $prop->{'children'}{$pid} |
|
1045
|
1 |
3 |
if ($prop->{'child_communication'}) |
|
1046
|
1 |
0 |
if ($prop->{'children'}{$pid}{'sock'}) |
|
1062
|
0 |
0 |
unless kill $sig, $chld |
|
1070
|
0 |
3 |
unless ref $ref |
|
1071
|
0 |
3 |
if ref $ref ne 'ARRAY' |
|
1072
|
3 |
0 |
unless @$ref |
|
1077
|
0 |
0 |
if ($code) { } |
|
1080
|
0 |
0 |
ref $SIG{$sig} eq 'CODE' ? : |
|
1082
|
0 |
0 |
if $code |
|
1091
|
0 |
2 |
$s->[1] ? : |
|
1092
|
0 |
0 |
$s->[1] ? : |
|
1093
|
3 |
4 |
$s->[1] ? : |
|
1094
|
0 |
0 |
$s->[1] ? : |
|
1095
|
0 |
0 |
$s->[1] ? : |
|
1096
|
0 |
0 |
$s->[1] ? : |
|
1097
|
0 |
0 |
$s->[1] ? : |
|
1098
|
0 |
0 |
$s->[1] ? : |
|
1099
|
0 |
0 |
$s->[1] ? : |
|
1102
|
0 |
0 |
$s->[1] ? : |