Branch Coverage

blib/lib/Net/Server/Proto.pm
Criterion Covered Total %
branch 57 128 44.5


line true false branch
30 9 91 if (ref $port eq 'HASH') { }
31 0 9 unless $port->{'port'}
35 1 90 if $port =~ s( (?<=[\w*\]]) [,|\s:/]+ (sock_stream|sock_dgram) \b )[]x
37 7 84 if $port =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
38 0 91 if $port =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
39 23 68 if $port =~ s( (?<=[\w*\]]) [,|\s:/]+ (tcp|udp|ssl|ssleay|unix|unixdgram|\w+(?: ::\w+)+) $ )[]xi or $port =~ s[ / (\w+) $ ][]x
41 21 70 if $port =~ s/ ^ (.*?) [,|\s:]+ (?= \w+ $) //x
47 41 58 defined $host && length $host ? :
48 0 100 if $info->{'host'} =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
49 0 100 if $info->{'host'} =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
50 1 99 if ($info->{'host'} =~ m(^ \[ ([\w/.\-:]+ | \*?) \] $ )x) { }
99 0 elsif ($info->{'host'} =~ m[^ ([\w/.\-:]+ | \*?) $ ]x) { }
51 1 0 length $1 ? :
60 0 100 if $info->{'proto'} =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
61 0 100 if $info->{'proto'} =~ s( (?<=[\w*\]]) [,|\s:/]+ IPv([*\d]+) )[]xi
62 100 0 if ($info->{'proto'} =~ /^(\w+ (?:::\w+)*)$/x) { }
69 8 92 if ($info->{'proto'} =~ /^UNIX/i)
73 0 92 if ref $ipv eq 'ARRAY'
74 0 92 if $ipv and not $ipv =~ /[46*]/
76 41 51 if (not $ipv or $ipv =~ /[*]/) { }
0 51 elsif ($ipv =~ /6/ or $info->{'host'} =~ /:/) { }
78 0 41 unless @rows
81 0 41 $warn ? :
82 0 41 if $ipv ne '4' and $proto ne 'ssl'
84 0 41 if (@rows > 1 and $rows[0][1] == 0)
92 40 1 if $_info->{'host'} ne $info->{'host'} or $_info->{'port'} ne $info->{'port'}
93 0 41 if $_info->{'warn'}
97 0 0 if $proto ne 'ssl'
98 0 0 if $ipv =~ /4/ and not $info->{'host'} =~ /:/
108 0 80 unless defined $host
109 39 41 unless defined $port
110 39 41 unless defined $proto
111 0 80 if $proto =~ /UNIX/i
112 0 80 if $port =~ /\D/
115 1 79 if ($host =~ /^\d+(?:\.\d+){3}$/) { }
0 79 elsif (not $ENV{'NO_IPV6'} and eval { do { require Socket6; require IO::Socket::INET6 } }) { }
0 79 elsif ($host =~ /:/) { }
116 0 1 unless my $addr = Socket::inet_aton($host)
119 0 0 lc $proto eq 'udp' ? :
120 0 0 lc $proto eq 'udp' ? :
121 0 0 $host eq '*' ? :
122 0 0 if @res < 5
126 0 0 if @res2 < 2
128 0 0 $afam == 2 ? :
0 0 $afam == Socket6::AF_INET6() ? :
131 0 0 $_->[0] =~ /^::ffff:(\d+(?:\.\d+){3})$/ ? :
0 0 $_->[0] eq '::' ? :
132 0 0 if (scalar keys %ipv6mapped and grep {$ipv6mapped{$_->[0]};} @info and not my $only = $class->_bindv6only)
137 0 0 if ($host eq '*' and $i6->[0] eq '::' and not length $only and not eval { do { die $! unless 'IO::Socket::INET6'->new->configure({'LocalAddr', '', 'LocalPort', 0, 'Listen', 1, 'ReuseAddr', 1, 'Domain', Socket6::AF_INET6()}) } }) { }
138 0 0 unless 'IO::Socket::INET6'->new->configure({'LocalAddr', '', 'LocalPort', 0, 'Listen', 1, 'ReuseAddr', 1, 'Domain', Socket6::AF_INET6()})
142 0 0 length $only ? :
152 40 39 if ($host eq '*') { }
156 0 39 unless @addr
167 0 0 unless length $val
174 0 0 if (-e $file) { }
0 0 elsif (-x '/sbin/sysctl') { }
175 0 0 unless open my $fh, '<', $file
181 0 0 defined $val ? :
189 99 1 unless ($proto_class =~ /::/)
190 0 99 unless $proto_class =~ /^\w+$/
194 0 100 unless eval { do { require $file } }
200 90 0 unless $requires_ipv6
202 0 0 unless ($INC{'IO/Socket/INET6.pm'})
203 0 0 unless eval { do { require Socket6; require IO::Socket::INET6 } }