line |
true |
false |
branch |
86
|
0 |
0 |
if ($dir == 0) { } |
90
|
0 |
0 |
if ($buf =~ m[
\A[\r\n]* # initial junk
[A-Z]{2,20}[\040\t]{1,3} # method
\S+[\040\t]{1,3} # path/URI
HTTP/1\.[01][\040\t]{0,3} # version
\r?\n # (CR)LF
(?:$xtoken:.*\r?\n(?:[\t\040].*\r?\n)* )* # field:..+cont
\r?\n # empty line
]xi) { } |
|
0 |
0 |
elsif ($buf =~ /[^\n]\r?\n\r?\n/ or length $buf > 65536) { } |
105
|
0 |
0 |
if $n <= 0 |
151
|
0 |
0 |
ref $data ? : |
|
0 |
92 |
if $Net::Inspect::L7::HTTP::DEBUG |
155
|
55 |
37 |
$dir == 0 ? : |
164
|
0 |
0 |
wantarray ? : |
174
|
21 |
31 |
($off -= $self->{'offset'}[$_]) > 0 ? : |
|
6 |
52 |
$off == -1 ? : |
177
|
29 |
0 |
wantarray ? : |
183
|
2 |
0 |
defined $diff ? : |
194
|
14 |
16 |
$off > $self->{'offset'}[$_] ? : |
|
2 |
30 |
$off == -1 ? : |
197
|
16 |
0 |
wantarray ? : |
213
|
7 |
48 |
if (ref $data) |
215
|
0 |
7 |
if $data->[0] ne 'gap' |
218
|
0 |
7 |
if $self->{'error'} |
222
|
0 |
7 |
if not @$rqs or $rqs->[0]{'state'} & 2 and not $self->{'upgrade'} |
223
|
0 |
7 |
if $rqs->[0]{'state'} & 4 |
225
|
0 |
7 |
if $self->{'gap_upto'}[0] >= 0 and $self->{'gap_upto'}[0] < $self->{'offset'}[0] + $len |
227
|
2 |
5 |
if (defined $rqs->[0]{'rqclen'}) |
229
|
2 |
0 |
unless ($rqs->[0]{'rqclen'} or $rqs->[0]{'rqchunked'}) |
236
|
5 |
2 |
if ($self->{'upgrade'}) { } |
|
2 |
0 |
elsif ($obj) { } |
250
|
0 |
85 |
if ($self->{'error'}) |
251
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
255
|
10 |
75 |
if ($self->{'upgrade'}) |
261
|
0 |
75 |
if (@$rqs and $rqs->[0]{'state'} & 4) |
263
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
267
|
0 |
75 |
if (!@$rqs || $rqs->[0]{'state'} & 2 and $data =~ /\A[\r\n]+/g) |
276
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
279
|
28 |
47 |
if ($data eq '') |
280
|
0 |
28 |
if $Net::Inspect::L7::HTTP::DEBUG |
281
|
28 |
0 |
unless $eof |
285
|
0 |
0 |
if (@$rqs and not $rqs->[0]{'state'} & 2) |
287
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
298
|
17 |
30 |
if (not @$rqs or $rqs->[0]{'state'} & 2) |
322
|
0 |
17 |
if ($Net::Inspect::L7::HTTP::DEBUG) |
336
|
20 |
27 |
unless ($rq->{'state'} & 1) |
340
|
0 |
20 |
if ($data =~ s/\A([\r\n]+)//) |
344
|
0 |
20 |
if $Net::Inspect::L7::HTTP::DEBUG |
345
|
17 |
3 |
if ($data =~ s/\A(\A.*?\n\r?\n)//s) { } |
|
0 |
3 |
elsif ($data =~ /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/) { } |
|
0 |
3 |
elsif (length $data > $self->{'hdr_maxsz'}[0]) { } |
|
0 |
3 |
elsif ($eof) { } |
346
|
0 |
17 |
if $Net::Inspect::L7::HTTP::DEBUG |
355
|
0 |
17 |
if ($err and my $sub = $obj->can('fix_reqhdr')) |
360
|
1 |
16 |
if ($err) |
367
|
4 |
12 |
if ($hdr{'chunked'}) { } |
|
3 |
9 |
elsif ($hdr{'content_length'}) { } |
378
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE and $hdr{'junk'} |
381
|
16 |
0 |
if $obj |
383
|
9 |
7 |
if ($body_done) |
384
|
0 |
9 |
if $Net::Inspect::L7::HTTP::DEBUG |
386
|
2 |
7 |
if ($hdr{'method'} eq 'CONNECT' or $hdr{'upgrade'}) { } |
392
|
7 |
0 |
if $obj |
413
|
0 |
3 |
if $Net::Inspect::L7::HTTP::DEBUG |
419
|
27 |
16 |
if ($data ne '' and not $rq->{'state'} & 2) |
421
|
10 |
17 |
if (my $want = $rq->{'rqclen'}) { } |
423
|
8 |
2 |
if ($l >= $want) { } |
425
|
0 |
8 |
if $Net::Inspect::L7::HTTP::DEBUG |
430
|
1 |
7 |
if (not $rq->{'rqchunked'}) { } |
431
|
0 |
1 |
if $Net::Inspect::L7::HTTP::DEBUG |
433
|
1 |
0 |
if $obj |
435
|
7 |
0 |
if $obj |
440
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
445
|
2 |
0 |
if $obj |
451
|
7 |
10 |
if ($rq->{'rqchunked'} == 2) |
452
|
0 |
7 |
if $Net::Inspect::L7::HTTP::DEBUG |
453
|
7 |
0 |
if ($data =~ /\A\r?\n/g) { } |
|
0 |
0 |
elsif (length $data >= 2) { } |
459
|
0 |
7 |
if $Net::Inspect::L7::HTTP::DEBUG |
471
|
17 |
0 |
if ($rq->{'rqchunked'} == 1) |
472
|
0 |
17 |
if $Net::Inspect::L7::HTTP::DEBUG |
473
|
11 |
6 |
if ($data =~ /\A([\da-fA-F]+)[ \t]*(?:;.*)?\r?\n/g) { } |
|
0 |
6 |
elsif ($data =~ /\n/ or length $data > 8192) { } |
480
|
7 |
4 |
if $rq->{'rqclen'} |
482
|
11 |
0 |
if $obj |
483
|
0 |
11 |
if $Net::Inspect::L7::HTTP::DEBUG |
485
|
4 |
7 |
unless ($rq->{'rqclen'}) |
488
|
4 |
0 |
if $obj |
501
|
4 |
7 |
if ($rq->{'rqchunked'} == 3) |
502
|
0 |
4 |
if $Net::Inspect::L7::HTTP::DEBUG |
503
|
4 |
0 |
if ($data =~ /\A
(?:\w[\w\-]*:.*\r?\n(?:[\t\040].*\r?\n)* )* # field:..+cont
\r?\n
/gx) { } |
|
0 |
0 |
elsif ($data =~ /\n\r?\n/ or length $data > $self->{'hdr_maxsz'}[2]) { } |
|
0 |
0 |
elsif ($eof) { } |
507
|
0 |
4 |
if $Net::Inspect::L7::HTTP::DEBUG |
511
|
4 |
0 |
if $obj |
520
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
526
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
545
|
2 |
35 |
if (ref $data) |
547
|
0 |
2 |
if $data->[0] ne 'gap' |
550
|
0 |
2 |
if $self->{'error'} |
553
|
0 |
2 |
unless @$rqs |
555
|
0 |
2 |
if $rq->{'state'} & 4 |
557
|
0 |
2 |
if $self->{'gap_upto'}[1] >= 0 and $self->{'gap_upto'}[1] < $self->{'offset'}[1] + $len |
559
|
2 |
0 |
if defined $rq->{'rpclen'} |
563
|
0 |
2 |
if ($self->{'upgrade'}) { } |
|
0 |
2 |
elsif ($rq->{'rpclen'} or not defined $rq->{'rpclen'} or $rq->{'rpchunked'}) { } |
568
|
0 |
0 |
if $obj |
571
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
573
|
2 |
0 |
if $obj |
581
|
0 |
60 |
if $self->{'error'} |
582
|
20 |
40 |
if $data eq '' and not $eof |
584
|
5 |
35 |
if ($self->{'upgrade'}) |
590
|
2 |
33 |
if ($data eq '') |
591
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
595
|
2 |
0 |
if (@$rqs and $rqs->[-1]{'state'} & 16) { } |
|
0 |
0 |
elsif (@$rqs) { } |
598
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
599
|
2 |
0 |
if $rq->{'obj'} |
604
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
605
|
0 |
0 |
if (($rq->{'state'} & 8) == 0) { } |
606
|
0 |
0 |
if ($data eq '' and $self->{'lastreqid'} > 1) { } |
|
0 |
0 |
elsif ($data eq '') { } |
617
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
624
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
632
|
0 |
33 |
unless (@$rqs) |
633
|
0 |
0 |
if ($data =~ s/\A([\r\n]+)//) |
649
|
15 |
18 |
unless ($rq->{'state'} & 8) |
650
|
0 |
15 |
if $Net::Inspect::L7::HTTP::DEBUG |
653
|
0 |
15 |
if ($data =~ s/\A([\r\n]+)//) |
658
|
14 |
1 |
if ($data =~ s/\A(.*?\n\r?\n)//s) { } |
|
0 |
1 |
elsif ($data =~ /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/) { } |
|
0 |
1 |
elsif ($data =~ /[^\n]\r?\n\r?\n/g) { } |
|
0 |
1 |
elsif (length $data > $self->{'hdr_maxsz'}[1]) { } |
|
0 |
1 |
elsif ($eof) { } |
666
|
0 |
14 |
if ($err and my $sub = $obj->can('fix_rsphdr')) |
671
|
1 |
13 |
if $err |
672
|
0 |
13 |
if $Net::Inspect::L7::HTTP::DEBUG |
674
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE and $hdr{'junk'} |
677
|
1 |
12 |
if ($hdr{'preliminary'}) |
679
|
1 |
0 |
if $obj |
685
|
2 |
10 |
if ($hdr{'upgrade'}) { } |
|
0 |
10 |
elsif ($rq->{'request'}{'upgrade'}) { } |
695
|
0 |
2 |
if (not $obj) { } |
|
1 |
1 |
elsif (my $sub = $obj->can('upgrade_' . $hdr{'upgrade'})) { } |
|
0 |
1 |
elsif ($sub = $obj->can('upgrade_ANY')) { } |
|
1 |
0 |
elsif ($hdr{'upgrade'} eq 'CONNECT') { } |
702
|
0 |
1 |
unless ($self->{'upgrade'} = eval {
do {
&$sub($obj, $self, $rq->{'request'}, \%hdr)
}
}) |
712
|
0 |
0 |
unless ($self->{'upgrade'} = eval {
do {
&$sub($obj, $self, $rq->{'request'}, \%hdr, $hdr{'upgrade'})
}
}) |
737
|
0 |
0 |
if $obj |
741
|
2 |
8 |
if ($hdr{'chunked'}) { } |
|
6 |
2 |
elsif (defined $hdr{'content_length'}) { } |
744
|
3 |
3 |
if ($rq->{'rpclen'} = $hdr{'content_length'}) { } |
757
|
12 |
0 |
if $obj |
759
|
3 |
9 |
if ($body_done) |
760
|
0 |
3 |
if $Net::Inspect::L7::HTTP::DEBUG |
762
|
3 |
0 |
if $obj |
792
|
0 |
1 |
if $Net::Inspect::L7::HTTP::DEBUG |
798
|
18 |
0 |
if ($data ne '') |
800
|
0 |
18 |
if $Net::Inspect::L7::HTTP::DEBUG |
803
|
6 |
12 |
if (my $want = $rq->{'rpclen'}) { } |
|
2 |
10 |
elsif ($rq->{'state'} & 16) { } |
|
0 |
10 |
elsif (not $rq->{'rpchunked'}) { } |
807
|
5 |
1 |
if ($l >= $want) { } |
808
|
0 |
5 |
if $Net::Inspect::L7::HTTP::DEBUG |
814
|
1 |
4 |
if (not $rq->{'rpchunked'}) { } |
817
|
0 |
1 |
if $Net::Inspect::L7::HTTP::DEBUG |
818
|
1 |
0 |
if $obj |
820
|
4 |
0 |
if $obj |
825
|
0 |
1 |
if $Net::Inspect::L7::HTTP::DEBUG |
830
|
1 |
0 |
if $obj |
835
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
838
|
0 |
2 |
if ($eof) |
841
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
843
|
2 |
0 |
if $obj |
853
|
4 |
6 |
if ($rq->{'rpchunked'} == 2) |
854
|
0 |
4 |
if $Net::Inspect::L7::HTTP::DEBUG |
855
|
4 |
0 |
if ($data =~ /\A\r?\n/g) { } |
|
0 |
0 |
elsif (length $data >= 2) { } |
861
|
0 |
4 |
if $Net::Inspect::L7::HTTP::DEBUG |
873
|
10 |
0 |
if ($rq->{'rpchunked'} == 1) |
874
|
0 |
10 |
if $Net::Inspect::L7::HTTP::DEBUG |
875
|
6 |
4 |
if ($data =~ /\A([\da-fA-F]+)[ \t]*(?:;.*)?\r?\n/g) { } |
|
0 |
4 |
elsif ($data =~ /\n/ or length $data > 8192) { } |
881
|
4 |
2 |
if $rq->{'rpclen'} |
883
|
6 |
0 |
if $obj |
884
|
0 |
6 |
if $Net::Inspect::L7::HTTP::DEBUG |
886
|
2 |
4 |
unless ($rq->{'rpclen'}) |
889
|
2 |
0 |
if $obj |
902
|
2 |
4 |
if ($rq->{'rpchunked'} == 3) |
903
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
904
|
2 |
0 |
if ($data =~ /\A
(?:\w[\w\-]*:.*\r?\n(?:[\t\040].*\r?\n)* )* # field:..+cont
\r?\n
/gx) { } |
|
0 |
0 |
elsif ($data =~ /\n\r?\n/ or length $data > $self->{'hdr_maxsz'}[2]) { } |
908
|
0 |
2 |
if $Net::Inspect::L7::HTTP::DEBUG |
912
|
2 |
0 |
if $obj |
921
|
0 |
0 |
if $Net::Inspect::L7::HTTP::DEBUG |
934
|
13 |
18 |
unless defined $hdr |
938
|
24 |
0 |
if ($3 eq '') { } |
949
|
18 |
18 |
if (pos $hdr // 0 != length $hdr) |
952
|
0 |
18 |
if $hdr =~ s/\A([^\n]*)\n// |
960
|
0 |
17 |
unless $data =~ m[\A
([A-Z]{2,20})[\040\t]+ # $1: method
(\S+)[\040\t]+ # $2: path/URI
HTTP/(1\.[01])[\40\t]* # $3: version
\r?\n # (CR)LF
([^\r\n].*?\n)? # $4: fields
\r?\n # final (CR)LF
\Z]sx |
986
|
0 |
17 |
if $bad ne '' |
989
|
1 |
11 |
if ($version >= 1.1 and $kv{'expect'}) |
992
|
1 |
0 |
if /\b(100-continue)\b/i |
998
|
4 |
13 |
if ($version >= 1.1 and grep {/(?:^|[ \t,])chunked(?:$|[ \t,;])/i;} @{[] unless $kv{'transfer-encoding'};}) { } |
|
5 |
8 |
elsif (my $cl = $kv{'content-length'}) { } |
1000
|
8 |
4 |
unless $kv{'transfer-encoding'} |
1006
|
0 |
5 |
if @$cl > 1 and do {
my %x;
@x{@$cl} = ();
keys %x
} > 1 |
1007
|
1 |
4 |
unless $cl->[0] =~ /^(\d+)$/ |
1012
|
8 |
8 |
if ($METHODS_WITHOUT_RQBODY{$method}) { } |
|
8 |
0 |
elsif ($METHODS_WITH_RQBODY{$method}) { } |
|
0 |
0 |
elsif (not $hdr->{'chunked'}) { } |
1015
|
0 |
8 |
if $hdr->{'content_length'} or $hdr->{'chunked'} |
1021
|
0 |
0 |
unless $hdr->{'chunked'} or defined $hdr->{'content_length'} or $external_length |
1029
|
1 |
10 |
if ($version >= 1.1 and $kv{'upgrade'} and my(%upgrade) = map({lc $_, 1;} map({/($token)/g;} @{$kv{'upgrade'};}))) |
1039
|
0 |
14 |
unless $data =~ m[\A
HTTP/(1\.[01])[\040\t]+ # $1: version
(\d\d\d) # $2: code
(?:[\040\t]+([^\r\n]*))? # $3: reason
\r?\n
([^\r\n].*?\n)? # $4: fields
\r?\n # empty line
\Z]sx |
1065
|
0 |
14 |
if $bad ne '' |
1067
|
2 |
12 |
if ($code <= 199) |
1071
|
2 |
0 |
if ($code == 100 and $request->{'expect'}{'100-continue'} or $code == 102 or $code == 101) { } |
1075
|
0 |
0 |
if $warn |
1082
|
1 |
13 |
if ($code == 101) |
1084
|
1 |
0 |
if ($request->{'upgrade'} and grep {/\bUPGRADE\b/i;} @{[] unless $kv{'connection'};}) |
1085
|
0 |
1 |
unless $kv{'connection'} |
1086
|
0 |
1 |
unless $kv{'upgrade'} |
1091
|
1 |
0 |
if (keys %proto == 1) { } |
1101
|
1 |
0 |
if ($request->{'method'} eq 'CONNECT' and $code >= 200 and $code < 300) |
1110
|
2 |
11 |
if ($version >= 1.1 and grep {/(?:^|[ \t,])chunked(?:$|[ \t,;])/i;} @{[] unless $kv{'transfer-encoding'};}) { } |
|
5 |
6 |
elsif (my $cl = $kv{'content-length'}) { } |
1112
|
7 |
2 |
unless $kv{'transfer-encoding'} |
1118
|
0 |
5 |
if @$cl > 1 and do {
my %x;
@x{@$cl} = ();
keys %x
} > 1 |
1119
|
1 |
4 |
unless $cl->[0] =~ /^(\d+)$/ |
1124
|
4 |
8 |
if ($CODE_WITHOUT_RPBODY{$code} or $METHODS_WITHOUT_RPBODY{$request->{'method'}}) |
1144
|
0 |
0 |
@_ ? : |
1146
|
0 |
0 |
$_->{'obj'} ? : |
|
0 |
0 |
wantarray ? : |
1152
|
0 |
0 |
if %Net::Inspect::L7::HTTP::TRACE |
1164
|
0 |
0 |
unless $Net::Inspect::L7::HTTP::DEBUG |
1173
|
0 |
0 |
unless $Net::Inspect::L7::HTTP::DEBUG or defined wantarray |
1183
|
0 |
0 |
if defined wantarray |