line |
true |
false |
branch |
43
|
0 |
60 |
unless my $r = delete $args{'rules'} |
46
|
50 |
10 |
if ($max_unbound) |
47
|
0 |
50 |
if @$max_unbound > 2 |
49
|
32 |
68 |
unless defined $max_unbound->[$_] |
50
|
0 |
68 |
unless $max_unbound->[$_] =~ /^\d+$/ |
76
|
0 |
132 |
unless ($dir // -1) ~~ [0, 1] |
77
|
0 |
132 |
unless ($r->[$i]{'rxlen'} || 0) > 0 |
79
|
0 |
132 |
if ref $rx ne 'Regexp' |
80
|
0 |
132 |
if '' ~~ $rx |
82
|
76 |
56 |
if (not $ignore_order) { } |
|
48 |
8 |
elsif (not @{$ruleset[$dir];}) { } |
84
|
6 |
26 |
$dir ? : |
85
|
58 |
18 |
if ($lastdir != $dir) |
97
|
120 |
12 |
if ($allow_reorder or not @{$ruleset[$dir][-1];}) { } |
122
|
0 |
30 |
unless eval {
do {
my(@x) = _compile_cfg(%args)
}
} |
149
|
8 |
33 |
$fargs->{'allow_dup'} ? : |
165
|
0 |
63 |
if ($Net::IMP::ProtocolPinning::DEBUG) |
171
|
32 |
31 |
if ($r->{'rxlen'} <= $lbuf) { } |
172
|
30 |
2 |
if (substr($$rbuf, 0, $r->{'rxlen'}) =~ s/\A$r->{'rx'}//) |
174
|
0 |
30 |
if $Net::IMP::ProtocolPinning::DEBUG |
177
|
0 |
2 |
if $Net::IMP::ProtocolPinning::DEBUG |
180
|
19 |
12 |
if ($$rbuf =~ /\A$r->{'rx'}/g) |
183
|
0 |
19 |
if $Net::IMP::ProtocolPinning::DEBUG |
186
|
0 |
12 |
if $Net::IMP::ProtocolPinning::DEBUG |
197
|
0 |
30 |
if $r->{'rxlen'} < $len |
198
|
22 |
8 |
$$rbuf =~ /\A$r->{'rx'}\Z/ ? : |
206
|
8 |
106 |
unless ($self->{'buf'}) |
208
|
0 |
8 |
if $Net::IMP::ProtocolPinning::DEBUG |
213
|
0 |
106 |
if $offset |
217
|
36 |
70 |
$type > 0 ? : |
219
|
7 |
99 |
if ($data eq '') |
223
|
0 |
7 |
if $Net::IMP::ProtocolPinning::DEBUG |
225
|
2 |
5 |
if (@$rs and my $match_in_progress = $self->{'off_passed'}[$dir] - $self->{'off_buf'}[$dir]) |
234
|
2 |
0 |
unless (@{$rs->[0];}) |
237
|
2 |
0 |
unless (@$rs and $rs->[0]) |
238
|
0 |
2 |
$dir ? : |
239
|
2 |
0 |
if @$ors and not $ors->[0] |
241
|
0 |
2 |
unless @$rs |
246
|
5 |
2 |
if (my($r) = grep({$_;} @$rs)) { } |
266
|
0 |
115 |
if $Net::IMP::ProtocolPinning::DEBUG |
269
|
15 |
100 |
unless (@$rs) |
272
|
0 |
15 |
unless $self->{'buf'}[$dir] eq '' |
275
|
1 |
14 |
$dir ? : |
277
|
1 |
14 |
if (@$ors == 1 and @{$ors->[0];} == 1 and $self->{'off_passed'}[$odir] - $self->{'off_buf'}[$odir] > 0) |
287
|
7 |
7 |
unless (defined $max_unbound) |
288
|
0 |
7 |
if $Net::IMP::ProtocolPinning::DEBUG |
290
|
5 |
2 |
unless ($self->{'paused'}[$dir]) |
301
|
0 |
7 |
if $Net::IMP::ProtocolPinning::DEBUG |
302
|
4 |
3 |
if ($unbound <= $max_unbound) |
303
|
0 |
4 |
if $Net::IMP::ProtocolPinning::DEBUG |
318
|
70 |
30 |
unless ($type > 0) |
324
|
9 |
91 |
unless ($crs) |
328
|
6 |
3 |
$dir ? : |
330
|
5 |
4 |
if (@$ors and $ors->[0] and my $omatch_in_progress = $self->{'off_passed'}[$odir] - $self->{'off_buf'}[$odir]) |
332
|
0 |
5 |
if $Net::IMP::ProtocolPinning::DEBUG |
336
|
5 |
0 |
unless (@{$ors->[0];}) |
338
|
5 |
0 |
unless @$ors and $ors->[0] |
339
|
0 |
0 |
unless @$ors or @$rs |
346
|
0 |
0 |
if ($type > 0 and $self->{'matched'} and $self->{'buf'}[$dir] eq '' and my $matched = $self->{'matched'}[$dir]) |
349
|
0 |
0 |
if (defined(my $r = $matched->{$hpkt})) |
350
|
0 |
0 |
if $Net::IMP::ProtocolPinning::DEBUG |
356
|
0 |
4 |
if $Net::IMP::ProtocolPinning::DEBUG |
359
|
2 |
2 |
$dir ? : |
365
|
5 |
86 |
if (my $match_in_progress = $self->{'off_passed'}[$dir] - $self->{'off_buf'}[$dir]) |
368
|
0 |
5 |
if ($type > 0) { } |
372
|
0 |
5 |
unless $matched |
373
|
4 |
1 |
if ($removed) { } |
|
1 |
0 |
elsif ($matched > $match_in_progress) { } |
375
|
0 |
4 |
if $Net::IMP::ProtocolPinning::DEBUG |
377
|
3 |
1 |
if ($removed > $match_in_progress) |
385
|
0 |
1 |
if $Net::IMP::ProtocolPinning::DEBUG |
391
|
0 |
0 |
if $Net::IMP::ProtocolPinning::DEBUG |
398
|
0 |
0 |
if $Net::IMP::ProtocolPinning::DEBUG |
406
|
4 |
0 |
unless (@$crs) |
409
|
2 |
2 |
unless (@$rs and $rs->[0]) |
410
|
0 |
2 |
$dir ? : |
411
|
0 |
2 |
if @$ors and not $ors->[0] |
412
|
0 |
0 |
unless @$ors or @$rs |
415
|
3 |
1 |
if ($type > 0 or $self->{'buf'}[$dir] ne '') |
417
|
1 |
2 |
unless (@$rs) |
429
|
28 |
58 |
if ($type > 0) { } |
431
|
0 |
28 |
if ($self->{'buf'}[$dir] ne '') |
439
|
22 |
8 |
if (my($len) = &$match($$rules[$crs->[$i]], \$data)) |
443
|
9 |
13 |
if ($self->{'matched'}) |
452
|
4 |
18 |
if (@$crs > 1) { } |
454
|
0 |
4 |
if $Net::IMP::ProtocolPinning::DEBUG |
459
|
0 |
18 |
if $Net::IMP::ProtocolPinning::DEBUG |
463
|
14 |
4 |
unless (@$rs and $rs->[0]) |
464
|
5 |
9 |
$dir ? : |
465
|
10 |
4 |
if @$ors and not $ors->[0] |
470
|
10 |
12 |
unless @$rs |
476
|
5 |
1 |
if ($self->{'matched'} and my $dup = $self->{'matched'}[$dir]) |
478
|
5 |
0 |
if (defined $r) |
482
|
0 |
5 |
if $Net::IMP::ProtocolPinning::DEBUG |
488
|
0 |
1 |
if $Net::IMP::ProtocolPinning::DEBUG |
504
|
2 |
56 |
if (not defined $len) { } |
|
12 |
44 |
elsif (not $len) { } |
514
|
9 |
9 |
if (not $removed and @$crs == 1 and @$rs == 1) |
518
|
2 |
7 |
unless (defined($ma && $ma->[$dir])) |
525
|
16 |
28 |
if (not $removed) { } |
528
|
0 |
16 |
if $i > 0 |
536
|
7 |
9 |
if (@$crs == 1 and @$rs == 1) |
538
|
2 |
5 |
$dir ? : |
539
|
1 |
3 |
$dir ? : |
|
1 |
3 |
$dir ? : |
|
3 |
4 |
if (not @$ors or @$ors == 1 and not $ors->[0] or @$ors == 1 and @{$ors->[0];} == 1 and $self->{'off_passed'}[$dir ? 0 : 1] - $self->{'off_buf'}[$dir ? 0 : 1] > 0) |
559
|
3 |
25 |
if (@$crs > 1) { } |
561
|
0 |
3 |
if $Net::IMP::ProtocolPinning::DEBUG |
566
|
0 |
25 |
if $Net::IMP::ProtocolPinning::DEBUG |
570
|
23 |
2 |
unless (@$rs and $rs->[0]) |
571
|
14 |
9 |
$dir ? : |
572
|
7 |
16 |
if @$ors and not $ors->[0] |
573
|
13 |
0 |
unless @$ors or @$rs |
581
|
8 |
20 |
if ($final_match and $self->{'buf'}[$dir] ne '') |
587
|
1 |
19 |
unless @$rs |
591
|
2 |
12 |
unless ($temp_fail) |
593
|
0 |
2 |
if $Net::IMP::ProtocolPinning::DEBUG |
604
|
0 |
28 |
if @$rs |
608
|
18 |
10 |
$dir ? : |
|
2 |
26 |
if @{$self->{'ruleset'}[$dir ? 0 : 1];} |
611
|
0 |
26 |
if $Net::IMP::ProtocolPinning::DEBUG |
618
|
47 |
5 |
unless $self->{'paused'}[$_] |
625
|
19 |
46 |
unless $pass_until |
637
|
0 |
2 |
unless my $rules = delete $cfg{'rules'} |
642
|
2 |
0 |
if (my $max_unbound = delete $cfg{'max_unbound'}) |
654
|
6 |
9 |
unless defined(my $dir = delete $cfg{"dir$i"}) |
655
|
0 |
9 |
unless defined(my $rxlen = delete $cfg{"rxlen$i"}) |
657
|
0 |
9 |
unless defined(my $rx = delete $cfg{"rx$i"}) |
659
|
0 |
9 |
unless $rx = eval {
do {
qr/$rx/
}
} |
664
|
0 |
6 |
unless @$rules |
668
|
12 |
0 |
if exists $cfg{"max_unbound$_"} |
674
|
0 |
6 |
if %scfg |