| line |
true |
false |
branch |
|
47
|
1 |
39 |
if ($value =~ /[\r\n\0]/) |
|
56
|
0 |
40 |
if ($name =~ /[\r\n\0]/) |
|
59
|
0 |
40 |
if ($name =~ /[[:cntrl:]]/) |
|
69
|
1 |
0 |
if ($value =~ /[\r\n\0\s]/) |
|
73
|
0 |
0 |
unless ($value =~ /^[\w\-\.]+$/) |
|
202
|
45 |
230 |
if ($self->{'tls_enabled'}) |
|
219
|
201 |
70 |
if ($self->{'transport_type'} eq "tcp" and $handle and $handle->can("setsockopt")) |
|
227
|
2 |
271 |
if ($self->{'transport_type'} eq 'unix') { } |
|
|
200 |
71 |
elsif ($handle and $handle->can('peerhost')) { } |
|
244
|
25 |
0 |
if ($self->{'alpn_protocol'} and $self->{'alpn_protocol'} eq "h2" and $self->{'h2_protocol'}) |
|
249
|
273 |
0 |
if ($self->{'timeout'} and $self->{'timeout'} > 0 and $self->{'server'}) |
|
253
|
0 |
0 |
unless $weak_self |
|
254
|
0 |
0 |
if $weak_self->{'closed'} |
|
268
|
2 |
502 |
unless $weak_self |
|
274
|
59 |
443 |
if $weak_self->{'handling_request'} |
|
279
|
12 |
490 |
if ($eof) |
|
286
|
43 |
447 |
if ($weak_self->{'h2c_enabled'} and not $weak_self->{'is_h2'}) |
|
287
|
43 |
0 |
if (length $weak_self->{'buffer'} >= 24) { } |
|
288
|
42 |
1 |
if ($weak_self->{'h2_protocol'} and 'PAGI::Server::Protocol::HTTP2'->detect_preface($weak_self->{'buffer'})) { } |
|
305
|
220 |
270 |
if ($weak_self->{'is_h2'}) |
|
311
|
43 |
227 |
if ($weak_self->{'websocket_mode'}) |
|
317
|
12 |
215 |
if ($weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready) |
|
325
|
1 |
489 |
if (my $error = $@) |
|
328
|
0 |
1 |
unless $weak_self |
|
334
|
55 |
215 |
unless $weak_self |
|
344
|
46 |
456 |
unless $self->{'idle_timer'} |
|
352
|
135 |
321 |
if defined $self->{'_idle_reset_at'} and $now - $self->{'_idle_reset_at'} < "0.05" |
|
356
|
0 |
321 |
unless $self->{'idle_timer'}->is_running |
|
362
|
37 |
273 |
unless $self->{'idle_timer'} |
|
363
|
273 |
0 |
if $self->{'idle_timer'}->is_running |
|
366
|
273 |
0 |
if ($self->{'server'}) |
|
386
|
0 |
66 |
unless $weak_self |
|
391
|
0 |
22 |
unless $weak_self |
|
396
|
0 |
39 |
unless $weak_self |
|
407
|
0 |
221 |
unless $self->{'h2_session'} |
|
409
|
220 |
1 |
if (length $self->{'buffer'} > 0) |
|
417
|
2 |
219 |
if ($self->{'h2_session'} and not $self->{'h2_session'}->want_read) |
|
425
|
0 |
471 |
unless $self->{'h2_session'} |
|
428
|
471 |
285 |
unless defined $data and length $data > 0 |
|
442
|
17 |
50 |
if (($pseudo->{':method'} // "") eq "CONNECT") |
|
443
|
16 |
1 |
if (($pseudo->{':protocol'} // '') eq 'websocket') { } |
|
451
|
0 |
1 |
unless $ws |
|
452
|
0 |
1 |
if $ws->{'closed'} |
|
466
|
50 |
16 |
unless ($is_websocket) |
|
468
|
12 |
46 |
if ($h->[0] eq "accept" and $h->[1] =~ m[text/event-stream]) |
|
494
|
6 |
60 |
if ($self->{'max_body_size'} and $has_body) |
|
496
|
1 |
11 |
if ($h->[0] eq "content-length") |
|
497
|
1 |
0 |
if ($h->[1] > $self->{'max_body_size'}) |
|
501
|
0 |
1 |
unless $ws |
|
502
|
0 |
1 |
if $ws->{'closed'} |
|
520
|
0 |
65 |
unless $weak_self |
|
521
|
0 |
65 |
if $weak_self->{'closed'} |
|
530
|
1 |
21 |
unless $stream |
|
532
|
16 |
0 |
if ($stream->{'is_websocket'} and $stream->{'ws_accepted'}) |
|
534
|
16 |
0 |
if length $data |
|
536
|
0 |
16 |
if ($eof) |
|
548
|
3 |
2 |
if (length $data > 0) |
|
552
|
1 |
2 |
if ($self->{'max_body_size'} and length $stream->{'body'} > $self->{'max_body_size'}) |
|
573
|
2 |
2 |
if ($eof) |
|
582
|
15 |
41 |
if ($stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready) |
|
593
|
2 |
37 |
unless $stream |
|
599
|
0 |
37 |
if ($stream->{'is_websocket'}) { } |
|
|
1 |
36 |
elsif ($stream->{'is_sse'}) { } |
|
629
|
0 |
37 |
unless $weak_self |
|
642
|
1 |
64 |
unless $stream_state |
|
646
|
16 |
48 |
if ($stream_state->{'is_websocket'}) { } |
|
|
12 |
36 |
elsif ($stream_state->{'is_sse'}) { } |
|
671
|
5 |
59 |
if ($weak_self and not $stream_state->{'response_started'}) { } |
|
|
0 |
59 |
elsif ($error) { } |
|
672
|
1 |
4 |
$error ? : |
|
685
|
3 |
2 |
if $stream_state->{'connection_state'} |
|
693
|
64 |
0 |
if $weak_self and $weak_self->{'server'} |
|
748
|
39 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
39 |
keys %{$$self{'state'};} ? : |
|
758
|
0 |
35 |
unless $weak_self |
|
759
|
0 |
35 |
if $weak_self->{'closed'} |
|
762
|
0 |
35 |
unless $ss |
|
765
|
0 |
35 |
unless $weak_self |
|
768
|
0 |
35 |
unless $ss |
|
771
|
0 |
35 |
if (@{$ss->{'receive_queue'};}) |
|
776
|
35 |
0 |
if ($ss->{'body_complete'}) |
|
787
|
0 |
0 |
unless ($ss->{'body_pending'}) |
|
794
|
0 |
0 |
unless $ss |
|
797
|
0 |
0 |
if (@{$ss->{'receive_queue'};}) |
|
806
|
0 |
0 |
$ss->{'body_complete'} ? : |
|
835
|
0 |
132 |
unless $ss |
|
838
|
98 |
34 |
if (@$q) |
|
841
|
15 |
83 |
if (length $chunk > $max_len) |
|
853
|
5 |
49 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} and @{$ss->{'stream_drain_waiters'};}) |
|
867
|
4 |
50 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} and @{$ss->{'transport_drain_fires'};}) |
|
875
|
8 |
90 |
!@$q && $eof_pending ? : |
|
880
|
2 |
32 |
if ($eof_pending) |
|
890
|
0 |
141 |
unless $weak_self |
|
891
|
0 |
141 |
if $weak_self->{'closed'} |
|
895
|
33 |
108 |
if ($type eq 'http.response.start') { } |
|
|
108 |
0 |
elsif ($type eq 'http.response.body') { } |
|
896
|
0 |
33 |
unless my $ss = $weak_self->{'h2_streams'}{$stream_id} |
|
897
|
0 |
33 |
if $ss->{'response_started'} |
|
899
|
33 |
0 |
if $ss->{'connection_state'} |
|
906
|
33 |
0 |
unless (grep {lc $_->[0] eq "date";} @response_headers) |
|
911
|
0 |
108 |
unless my $ss = $weak_self->{'h2_streams'}{$stream_id} |
|
912
|
0 |
108 |
unless $ss->{'response_started'} |
|
917
|
75 |
33 |
if ($more) { } |
|
918
|
10 |
65 |
if (not $streaming_started) { } |
|
923
|
10 |
0 |
if (length $body) |
|
930
|
10 |
0 |
if $ss->{'transport_state'} |
|
943
|
5 |
60 |
if (($ss->{'send_queue_bytes'} // 0) >= $weak_self->{'write_high_watermark'}) |
|
945
|
0 |
5 |
unless $weak_self |
|
946
|
0 |
5 |
if $weak_self->{'closed'} |
|
947
|
0 |
5 |
unless $weak_self->{'h2_streams'}{$stream_id} |
|
949
|
65 |
0 |
if (length $body) |
|
954
|
65 |
0 |
if $ss->{'transport_state'} |
|
959
|
10 |
23 |
if ($streaming_started) { } |
|
962
|
0 |
10 |
if (($ss->{'send_queue_bytes'} // 0) >= $weak_self->{'write_high_watermark'}) |
|
964
|
0 |
0 |
unless $weak_self |
|
965
|
0 |
0 |
if $weak_self->{'closed'} |
|
966
|
0 |
0 |
unless $weak_self->{'h2_streams'}{$stream_id} |
|
969
|
8 |
2 |
if (length $body) |
|
974
|
10 |
0 |
if $ss->{'transport_state'} |
|
1017
|
1 |
33 |
if ($name eq "sec-websocket-protocol") |
|
1042
|
17 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
17 |
keys %{$$self{'state'};} ? : |
|
1052
|
0 |
31 |
unless $weak_self |
|
1055
|
0 |
31 |
if $weak_self->{'closed'} |
|
1058
|
0 |
31 |
unless $ss |
|
1062
|
0 |
31 |
unless $weak_self |
|
1066
|
0 |
31 |
unless $ss |
|
1070
|
0 |
31 |
if (@{$ss->{'receive_queue'};}) |
|
1075
|
15 |
16 |
unless ($ss->{'ws_connect_sent'}) |
|
1082
|
9 |
29 |
if (@{$ss->{'receive_queue'};}) |
|
1087
|
7 |
22 |
if $weak_self->{'closed'} |
|
1089
|
22 |
0 |
unless ($ss->{'body_pending'}) |
|
1095
|
0 |
22 |
unless $ss |
|
1111
|
0 |
25 |
unless $weak_self |
|
1112
|
0 |
25 |
if $weak_self->{'closed'} |
|
1115
|
0 |
25 |
unless $ss |
|
1119
|
12 |
13 |
if ($type eq 'websocket.accept') { } |
|
|
5 |
8 |
elsif ($type eq 'websocket.send') { } |
|
|
2 |
6 |
elsif ($type eq 'websocket.http.response.start') { } |
|
|
3 |
3 |
elsif ($type eq 'websocket.http.response.body') { } |
|
|
3 |
0 |
elsif ($type eq 'websocket.close') { } |
|
1120
|
0 |
12 |
if $ss->{'ws_accepted'} |
|
1124
|
0 |
12 |
if (my $subprotocol = $event->{'subprotocol'}) |
|
1128
|
0 |
12 |
if (my $extra = $event->{'headers'}) |
|
1149
|
0 |
12 |
if (length $ss->{'body'} > 0) |
|
1156
|
0 |
5 |
unless $ss->{'ws_accepted'} |
|
1159
|
4 |
1 |
if (defined $event->{'text'}) { } |
|
|
1 |
0 |
elsif (defined $event->{'bytes'}) { } |
|
1180
|
0 |
2 |
if $ss->{'ws_accepted'} |
|
1181
|
0 |
2 |
if $ss->{'ws_denial_started'} |
|
1191
|
0 |
3 |
unless $ss->{'ws_denial_started'} |
|
1192
|
0 |
3 |
if $ss->{'response_started'} |
|
1194
|
1 |
2 |
if $event->{'more'} |
|
1205
|
2 |
1 |
unless ($ss->{'ws_accepted'}) |
|
1276
|
13 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
13 |
keys %{$$self{'state'};} ? : |
|
1293
|
0 |
13 |
unless $weak_self |
|
1294
|
0 |
13 |
if $weak_self->{'closed'} |
|
1297
|
0 |
13 |
unless $ss |
|
1300
|
0 |
13 |
unless $weak_self |
|
1303
|
0 |
13 |
unless $ss |
|
1306
|
0 |
13 |
if (@{$ss->{'receive_queue'};}) |
|
1311
|
11 |
2 |
unless ($ss->{'sse_request_sent'}) |
|
1322
|
0 |
4 |
if (@{$ss->{'receive_queue'};}) |
|
1327
|
2 |
2 |
if $weak_self->{'closed'} |
|
1329
|
2 |
0 |
unless ($ss->{'body_pending'}) |
|
1335
|
0 |
2 |
unless $ss |
|
1361
|
0 |
74 |
unless $ss |
|
1364
|
33 |
41 |
if (@$q) |
|
1367
|
4 |
29 |
if (length $chunk > $max_len) |
|
1378
|
0 |
30 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} and @{$ss->{'stream_drain_waiters'};}) |
|
1389
|
1 |
29 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} and @{$ss->{'transport_drain_fires'};}) |
|
1406
|
0 |
38 |
unless $weak_self |
|
1407
|
0 |
38 |
if $weak_self->{'closed'} |
|
1410
|
0 |
38 |
unless $ss |
|
1418
|
0 |
38 |
if ($weak_self->{'validate_events'}) |
|
1423
|
12 |
26 |
if ($type eq 'sse.start') { } |
|
|
23 |
3 |
elsif ($type eq 'sse.send') { } |
|
|
1 |
2 |
elsif ($type eq 'sse.comment') { } |
|
|
2 |
0 |
elsif ($type eq 'sse.keepalive') { } |
|
1424
|
0 |
12 |
if $ss->{'response_started'} |
|
1433
|
1 |
1 |
if (lc $h->[0] eq "content-type") |
|
1443
|
11 |
1 |
unless ($has_content_type) |
|
1449
|
12 |
0 |
unless (grep {lc $_->[0] eq "date";} @final_headers) |
|
1470
|
0 |
6 |
unless $weak_self |
|
1471
|
0 |
6 |
if $weak_self->{'closed'} |
|
1472
|
0 |
6 |
unless my $ss = $weak_self->{'h2_streams'}{$stream_id} |
|
1483
|
0 |
23 |
unless $ss->{'response_started'} |
|
1487
|
0 |
23 |
if (($ss->{'send_queue_bytes'} // 0) >= $weak_self->{'write_high_watermark'}) |
|
1489
|
0 |
0 |
unless $weak_self |
|
1490
|
0 |
0 |
if $weak_self->{'closed'} |
|
1491
|
0 |
0 |
unless $weak_self->{'h2_streams'}{$stream_id} |
|
1499
|
23 |
0 |
if $ss->{'transport_state'} |
|
1504
|
0 |
1 |
unless $ss->{'response_started'} |
|
1509
|
1 |
0 |
if $ss->{'transport_state'} |
|
1517
|
2 |
0 |
if ($interval > 0) { } |
|
1536
|
0 |
16 |
unless $frame |
|
1543
|
5 |
5 |
if ($opcode == 1) { } |
|
|
1 |
4 |
elsif ($opcode == 2) { } |
|
|
4 |
0 |
elsif ($opcode == 8) { } |
|
|
0 |
0 |
elsif ($opcode == 9) { } |
|
1546
|
1 |
4 |
unless (defined $text) |
|
1567
|
1 |
3 |
if (length $bytes == 1) |
|
1578
|
3 |
0 |
if (length $bytes >= 2) |
|
1584
|
2 |
1 |
if ($code == 1000 or $code == 1001 or $code == 1002 or $code == 1003) { } |
|
|
0 |
1 |
elsif ($code >= 1007 and $code <= 1011) { } |
|
|
0 |
2 |
elsif ($code >= 3000 and $code <= 4999) { } |
|
1593
|
1 |
2 |
unless ($valid_code) |
|
1605
|
2 |
0 |
if (length $reason > 0) |
|
1608
|
1 |
1 |
unless (defined $decoded) |
|
1665
|
172 |
0 |
unless $self->{'request_timeout'} and $self->{'request_timeout'} > 0 |
|
1666
|
0 |
0 |
unless $self->{'server'} |
|
1667
|
0 |
0 |
if $self->{'stall_timer'} |
|
1674
|
0 |
0 |
unless $weak_self |
|
1675
|
0 |
0 |
if $weak_self->{'closed'} |
|
1677
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1692
|
387 |
0 |
unless $self->{'stall_timer'} |
|
1694
|
0 |
0 |
unless $self->{'stall_timer'}->is_running |
|
1700
|
428 |
0 |
unless $self->{'stall_timer'} |
|
1701
|
0 |
0 |
if $self->{'stall_timer'}->is_running |
|
1702
|
0 |
0 |
if ($self->{'server'}) |
|
1712
|
22 |
0 |
unless $self->{'ws_idle_timeout'} and $self->{'ws_idle_timeout'} > 0 |
|
1713
|
0 |
0 |
unless $self->{'server'} |
|
1714
|
0 |
0 |
if $self->{'ws_idle_timer'} |
|
1721
|
0 |
0 |
unless $weak_self |
|
1722
|
0 |
0 |
if $weak_self->{'closed'} |
|
1723
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1738
|
85 |
0 |
unless $self->{'ws_idle_timer'} |
|
1740
|
0 |
0 |
unless $self->{'ws_idle_timer'}->is_running |
|
1746
|
273 |
0 |
unless $self->{'ws_idle_timer'} |
|
1747
|
0 |
0 |
if $self->{'ws_idle_timer'}->is_running |
|
1748
|
0 |
0 |
if ($self->{'server'}) |
|
1758
|
27 |
0 |
unless $self->{'sse_idle_timeout'} and $self->{'sse_idle_timeout'} > 0 |
|
1759
|
0 |
0 |
unless $self->{'server'} |
|
1760
|
0 |
0 |
if $self->{'sse_idle_timer'} |
|
1767
|
0 |
0 |
unless $weak_self |
|
1768
|
0 |
0 |
if $weak_self->{'closed'} |
|
1769
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1785
|
72 |
0 |
unless $self->{'sse_idle_timer'} |
|
1787
|
0 |
0 |
unless $self->{'sse_idle_timer'}->is_running |
|
1793
|
273 |
0 |
unless $self->{'sse_idle_timer'} |
|
1794
|
0 |
0 |
if $self->{'sse_idle_timer'}->is_running |
|
1795
|
0 |
0 |
if ($self->{'server'}) |
|
1816
|
0 |
384 |
unless $self->{'stream'} |
|
1825
|
255 |
0 |
if (defined $data and not ref $data) |
|
1840
|
185 |
0 |
$w ? : |
|
1841
|
185 |
0 |
$w ? : |
|
1842
|
3 |
0 |
$w ? : |
|
1843
|
1 |
0 |
if $w |
|
1861
|
92 |
0 |
$w ? : |
|
1862
|
0 |
0 |
$w ? : |
|
1872
|
181 |
0 |
if $ts |
|
1878
|
0 |
1 |
unless @{$self->{'_drain_waiters'};} |
|
1879
|
0 |
1 |
unless $self->{'stream'} |
|
1884
|
1 |
0 |
if ($buffered < $self->{'write_low_watermark'}) |
|
1887
|
1 |
0 |
unless $f->is_ready |
|
1898
|
0 |
1 |
if $self->{'_drain_check_active'} |
|
1910
|
0 |
1 |
unless $weak_self |
|
1913
|
0 |
1 |
if $prev_on_empty |
|
1923
|
0 |
1 |
if ($buffered < $self->{'write_low_watermark'}) |
|
1944
|
0 |
0 |
unless $f->is_ready |
|
1956
|
0 |
5 |
unless my $ss = $self->{'h2_streams'}{$stream_id} |
|
1959
|
0 |
5 |
if (($ss->{'send_queue_bytes'} // 0) < $self->{'write_low_watermark'}) |
|
1979
|
66 |
1 |
unless $ss and $ss->{'stream_drain_waiters'} |
|
1981
|
1 |
0 |
unless @waiters |
|
1996
|
0 |
0 |
unless $interval and $interval > 0 |
|
1997
|
0 |
0 |
unless $self->{'server'} |
|
2007
|
0 |
0 |
unless $weak_self |
|
2008
|
0 |
0 |
if $weak_self->{'closed'} |
|
2009
|
0 |
0 |
unless $weak_self->{'websocket_mode'} |
|
2019
|
0 |
0 |
if ($weak_self->{'ws_keepalive_timeout'} > 0) |
|
2035
|
0 |
0 |
if $self->{'ws_pong_timeout'} |
|
2036
|
0 |
0 |
unless $self->{'ws_keepalive_timeout'} > 0 |
|
2037
|
0 |
0 |
unless $self->{'server'} |
|
2044
|
0 |
0 |
unless $weak_self |
|
2045
|
0 |
0 |
if $weak_self->{'closed'} |
|
2047
|
0 |
0 |
if ($weak_self->{'ws_waiting_pong'}) |
|
2049
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
2068
|
273 |
0 |
unless $self->{'ws_pong_timeout'} |
|
2069
|
0 |
0 |
if $self->{'ws_pong_timeout'}->is_running |
|
2070
|
0 |
0 |
if ($self->{'server'}) |
|
2082
|
273 |
0 |
unless $self->{'ws_keepalive_timer'} |
|
2083
|
0 |
0 |
if $self->{'ws_keepalive_timer'}->is_running |
|
2084
|
0 |
0 |
if ($self->{'server'}) |
|
2099
|
0 |
2 |
unless $interval and $interval > 0 |
|
2100
|
0 |
2 |
unless $self->{'server'} |
|
2109
|
0 |
6 |
unless $weak_self |
|
2110
|
0 |
6 |
if $weak_self->{'closed'} |
|
2113
|
6 |
0 |
unless $text =~ /^:/ |
|
2116
|
6 |
0 |
if (my $writer = $weak_self->{'sse_keepalive_writer'}) |
|
2130
|
273 |
2 |
unless $self->{'sse_keepalive_timer'} |
|
2131
|
2 |
0 |
if $self->{'sse_keepalive_timer'}->is_running |
|
2132
|
2 |
0 |
if ($self->{'server'}) |
|
2142
|
0 |
228 |
if $self->{'closed'} |
|
2143
|
11 |
217 |
if $self->{'handling_request'} |
|
2148
|
2 |
215 |
unless $request |
|
2154
|
5 |
210 |
if ($request->{'error'}) |
|
2163
|
6 |
204 |
if ($self->{'max_body_size'} and defined $request->{'content_length'}) |
|
2164
|
1 |
5 |
if ($request->{'content_length'} > $self->{'max_body_size'}) |
|
2183
|
22 |
187 |
if ($is_websocket) { } |
|
|
15 |
172 |
elsif ($is_sse) { } |
|
2208
|
22 |
624 |
if ($name eq 'upgrade' and lc $value eq 'websocket') { } |
|
|
193 |
431 |
elsif ($name eq 'connection') { } |
|
|
22 |
409 |
elsif ($name eq 'sec-websocket-key') { } |
|
2213
|
22 |
171 |
if lc($value) =~ /upgrade/ |
|
2234
|
15 |
491 |
if ($name eq "accept") |
|
2236
|
15 |
0 |
if $value =~ m[text/event-stream] |
|
2254
|
15 |
156 |
if (my $error = $@) |
|
2257
|
2 |
13 |
if ($self->{'response_started'}) { } |
|
2267
|
15 |
0 |
if $self->{'server'} |
|
2280
|
1 |
155 |
unless ($self->{'response_started'}) |
|
2281
|
1 |
0 |
unless ($self->{'closed'}) |
|
2286
|
1 |
0 |
if $self->{'server'} |
|
2300
|
155 |
0 |
if $self->{'server'} |
|
2311
|
155 |
0 |
if (my $conn_state = $self->{'current_connection_state'}) |
|
2318
|
142 |
13 |
if ($keep_alive) { } |
|
2332
|
1 |
141 |
if (length $self->{'buffer'} > 0) |
|
2349
|
146 |
156 |
if ($header->[0] eq "connection") |
|
2356
|
152 |
3 |
if ($http_version eq "1.1") |
|
2357
|
11 |
141 |
if $connection_header and $connection_header =~ /close/ |
|
2362
|
3 |
0 |
if ($http_version eq "1.0") |
|
2363
|
1 |
2 |
if $connection_header and $connection_header =~ /keep-alive/ |
|
2408
|
170 |
2 |
defined $self->{'client_host'} ? : |
|
|
3 |
169 |
keys %{$$self{'state'};} ? : |
|
2432
|
0 |
57 |
unless $weak_self |
|
2433
|
0 |
57 |
if $weak_self->{'closed'} |
|
2437
|
0 |
57 |
unless $weak_self |
|
2438
|
0 |
57 |
if $weak_self->{'closed'} |
|
2441
|
0 |
57 |
if (@{$weak_self->{'receive_queue'};}) |
|
2446
|
1 |
56 |
if ($body_complete) |
|
2447
|
1 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2451
|
0 |
1 |
if ($weak_self->{'closed'}) |
|
2459
|
1 |
0 |
if ref $result eq "HASH" |
|
2461
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
2468
|
39 |
17 |
unless ($has_body) |
|
2478
|
0 |
17 |
if ($expect_continue and not $continue_sent) |
|
2484
|
1 |
16 |
if ($is_chunked) |
|
2487
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2494
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
2503
|
0 |
0 |
if (ref $data eq "HASH" and $data->{'error'}) |
|
2510
|
1 |
0 |
if ($consumed > 0) |
|
2517
|
0 |
1 |
if ($weak_self->{'max_body_size'} and $bytes_read > $weak_self->{'max_body_size'}) |
|
2525
|
1 |
0 |
if ($complete) |
|
2530
|
1 |
0 |
$complete ? : |
|
2537
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2545
|
0 |
0 |
if $weak_self->{'closed'} |
|
2553
|
0 |
16 |
if ($remaining <= 0) |
|
2564
|
12 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2571
|
0 |
12 |
if (@{$weak_self->{'receive_queue'};}) |
|
2577
|
0 |
16 |
if ($weak_self->{'closed'} and length $weak_self->{'buffer'} == 0) |
|
2582
|
11 |
5 |
$remaining < $chunk_size ? : |
|
2583
|
12 |
4 |
if length $weak_self->{'buffer'} < $to_read |
|
2589
|
12 |
4 |
$bytes_read < $content_length ? : |
|
2591
|
4 |
12 |
unless ($more) |
|
2625
|
3 |
169 |
if ($is_http10) |
|
2627
|
1 |
2 |
if ($h->[0] eq "connection" and lc($h->[1]) =~ /keep-alive/) |
|
2638
|
0 |
328 |
unless $weak_self |
|
2639
|
0 |
328 |
if $weak_self->{'closed'} |
|
2647
|
0 |
328 |
if ($weak_self->{'validate_events'}) |
|
2652
|
158 |
170 |
if ($type eq 'http.response.start') { } |
|
|
166 |
4 |
elsif ($type eq 'http.response.body') { } |
|
|
1 |
3 |
elsif ($type eq 'http.response.trailers') { } |
|
|
3 |
0 |
elsif ($type eq 'http.fullflush') { } |
|
2653
|
0 |
158 |
if $response_started |
|
2657
|
158 |
0 |
if $weak_self->{'current_connection_state'} |
|
2667
|
16 |
146 |
if (lc $h->[0] eq "content-length") |
|
2679
|
4 |
154 |
if ($is_head_request or $is_http10) { } |
|
2681
|
3 |
1 |
if ($is_http10) |
|
2682
|
1 |
2 |
if (not $has_content_length) { } |
|
|
1 |
1 |
elsif ($client_wants_keepalive) { } |
|
2706
|
0 |
166 |
unless $response_started |
|
2707
|
1 |
165 |
if $body_complete |
|
2710
|
1 |
164 |
if ($is_head_request) |
|
2714
|
1 |
0 |
unless ($more) |
|
2723
|
0 |
164 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
2726
|
0 |
0 |
unless $weak_self |
|
2727
|
0 |
0 |
if $weak_self->{'closed'} |
|
2738
|
10 |
154 |
if (defined $file) { } |
|
|
6 |
148 |
elsif (defined $fh) { } |
|
2764
|
9 |
139 |
unless defined $out |
|
2767
|
142 |
6 |
if ($chunked) { } |
|
2768
|
142 |
0 |
if (length $body) |
|
2772
|
131 |
1 |
unless ($more or $expects_trailers) |
|
2780
|
148 |
0 |
if length $out |
|
2784
|
138 |
10 |
unless ($more) |
|
2790
|
0 |
1 |
unless $response_started |
|
2791
|
0 |
1 |
unless $expects_trailers |
|
2792
|
0 |
1 |
unless $chunked |
|
2814
|
1 |
2 |
unless (exists $weak_self->{'extensions'}{'fullflush'}) |
|
2821
|
2 |
0 |
if ($handle and $handle->can("setsockopt")) |
|
2846
|
156 |
18 |
unless defined $pending and length $pending |
|
2854
|
0 |
23 |
if $self->{'closed'} |
|
2855
|
0 |
23 |
if $self->{'response_started'} |
|
2871
|
14 |
9 |
if $self->{'current_connection_state'} |
|
2878
|
8 |
199 |
unless $self->{'access_log'} |
|
2879
|
0 |
199 |
unless $self->{'current_request'} |
|
2885
|
199 |
0 |
if ($self->{'request_start'}) |
|
2891
|
61 |
138 |
if ($now != $_cached_log_time) |
|
2910
|
2 |
0 |
$self->{'transport_type'} eq 'unix' ? : |
|
2914
|
199 |
0 |
if ($formatter) { } |
|
2921
|
0 |
0 |
if defined $query and length $query |
|
2953
|
169 |
273 |
if $self->{'_disconnect_handled'} |
|
2961
|
0 |
2 |
if (not $reason and $self->{'server'} and $self->{'server'}{'shutting_down'}) |
|
2973
|
30 |
0 |
if ($self->{'current_connection_state'} and not $self->{'websocket_mode'} and not $self->{'sse_mode'}) |
|
2974
|
17 |
13 |
unless $is_completion |
|
2981
|
16 |
257 |
if ($self->{'websocket_mode'} and not $is_completion) |
|
2987
|
18 |
255 |
if ($self->{'websocket_mode'}) { } |
|
|
15 |
240 |
elsif ($self->{'sse_mode'}) { } |
|
3002
|
16 |
257 |
if ($self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready) |
|
3018
|
0 |
4 |
unless $self->{'stream'} |
|
3019
|
0 |
4 |
if $self->{'close_sent'} |
|
3037
|
171 |
273 |
if $self->{'closed'} |
|
3044
|
273 |
0 |
if ($self->{'h2_streams'}) |
|
3046
|
9 |
20 |
if ($stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready) |
|
3048
|
2 |
7 |
$stream->{'is_sse'} ? : |
|
3063
|
67 |
206 |
if ($self->{'h2_session'}) |
|
3072
|
273 |
0 |
if ($self->{'server'}) |
|
3076
|
1 |
122 |
if ($self->{'server'}{'shutting_down'} and keys %{$$self{"server"}{"connections"};} == 0 and $self->{'server'}{'drain_complete'} and not $self->{'server'}{'drain_complete'}->is_ready) |
|
3104
|
18 |
255 |
if ($self->{'websocket_mode'}) { } |
|
|
15 |
240 |
elsif ($self->{'sse_mode'}) { } |
|
3117
|
0 |
18 |
unless ($future->is_ready) |
|
3125
|
273 |
0 |
if ($self->{'stream'}) |
|
3150
|
0 |
45 |
unless $handle and $handle->isa("IO::Socket::SSL") |
|
3162
|
45 |
0 |
if (my $version_str = $handle->get_sslversion) |
|
3180
|
45 |
0 |
if (my $cipher_name = $handle->get_cipher) |
|
3189
|
45 |
0 |
if exists $tls13_cipher_suites{$cipher_name} |
|
3196
|
45 |
0 |
if ($cert) |
|
3201
|
0 |
45 |
if ($@) |
|
3208
|
8 |
37 |
if ($client_cert) |
|
3216
|
8 |
0 |
if (my $ssl = $handle->_get_ssl_object) |
|
3218
|
0 |
8 |
if ($chain_obj) |
|
3221
|
0 |
0 |
if $cert |
|
3231
|
8 |
0 |
if $subject |
|
3236
|
8 |
0 |
if (my $ssl = $handle->_get_ssl_object) |
|
3238
|
0 |
8 |
if ($result != 0) |
|
3244
|
0 |
45 |
if ($@) |
|
3254
|
44 |
143 |
$self->{'tls_enabled'} ? : |
|
3260
|
0 |
39 |
$self->{'tls_enabled'} ? : |
|
3269
|
45 |
231 |
if ($self->{'tls_enabled'} and $self->{'tls_info'}) { } |
|
|
231 |
0 |
elsif (not $self->{'tls_enabled'}) { } |
|
3299
|
0 |
15 |
if (my $error = $@) |
|
3301
|
0 |
0 |
unless ($self->{'sse_started'}) |
|
3309
|
14 |
1 |
if ($self->{'sse_started'} and not $self->{'closed'} and $self->{'stream'} and $self->{'stream'}->write_handle) |
|
3349
|
15 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
15 |
keys %{$$self{'state'};} ? : |
|
3369
|
0 |
0 |
$weak_self ? : |
|
3374
|
0 |
7 |
unless $weak_self |
|
3377
|
0 |
7 |
if $weak_self->{'closed'} |
|
3380
|
0 |
7 |
unless $weak_self |
|
3383
|
0 |
7 |
if $weak_self->{'closed'} |
|
3386
|
0 |
7 |
if (@{$weak_self->{'receive_queue'};}) |
|
3391
|
1 |
6 |
if ($has_body and not $body_complete) |
|
3396
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3402
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
3407
|
0 |
1 |
if $weak_self->{'closed'} |
|
3412
|
0 |
1 |
$remaining < length $weak_self->{'buffer'} ? : |
|
3417
|
0 |
1 |
$bytes_read < $content_length ? : |
|
3418
|
1 |
0 |
unless $more |
|
3428
|
3 |
3 |
unless ($body_complete) |
|
3439
|
2 |
3 |
if (@{$weak_self->{'receive_queue'};}) |
|
3444
|
0 |
3 |
if $weak_self->{'closed'} |
|
3446
|
3 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3466
|
17 |
32 |
if (defined $event->{'event'} and length $event->{'event'}) |
|
3468
|
1 |
16 |
if $event->{'event'} =~ /[\r\n]/ |
|
3477
|
7 |
41 |
if (defined $event->{'id'} and length $event->{'id'}) |
|
3479
|
1 |
6 |
if $event->{'id'} =~ /[\r\n]/ |
|
3483
|
7 |
40 |
if (defined $event->{'retry'}) |
|
3485
|
2 |
5 |
unless $event->{'retry'} =~ /\A[0-9]+\z/ |
|
3498
|
8 |
1 |
unless $line =~ /^:/ |
|
3512
|
0 |
34 |
unless $weak_self |
|
3513
|
0 |
34 |
if $weak_self->{'closed'} |
|
3521
|
0 |
34 |
if ($weak_self->{'validate_events'}) |
|
3526
|
15 |
19 |
if ($type eq 'sse.start') { } |
|
|
16 |
3 |
elsif ($type eq 'sse.send') { } |
|
|
2 |
1 |
elsif ($type eq 'sse.comment') { } |
|
|
0 |
1 |
elsif ($type eq 'sse.keepalive') { } |
|
|
1 |
0 |
elsif ($type eq 'http.fullflush') { } |
|
3527
|
0 |
15 |
if $weak_self->{'sse_started'} |
|
3538
|
7 |
0 |
if (lc $h->[0] eq "content-type") |
|
3545
|
8 |
7 |
unless ($has_content_type) |
|
3564
|
0 |
0 |
unless $weak_self |
|
3565
|
0 |
0 |
if $weak_self->{'closed'} |
|
3571
|
0 |
16 |
unless $weak_self->{'sse_started'} |
|
3574
|
0 |
16 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
3576
|
0 |
0 |
unless $weak_self |
|
3577
|
0 |
0 |
if $weak_self->{'closed'} |
|
3589
|
0 |
2 |
unless $weak_self->{'sse_started'} |
|
3601
|
0 |
0 |
if ($interval > 0) { } |
|
3611
|
0 |
1 |
unless (exists $weak_self->{'extensions'}{'fullflush'}) |
|
3618
|
1 |
0 |
if ($handle and $handle->can("setsockopt")) |
|
3653
|
2 |
19 |
if (my $error = $@) |
|
3655
|
2 |
0 |
unless ($self->{'websocket_accepted'}) |
|
3677
|
22 |
101 |
if ($name eq 'sec-websocket-key') { } |
|
|
2 |
99 |
elsif ($name eq 'sec-websocket-protocol') { } |
|
3714
|
22 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
22 |
keys %{$$self{'state'};} ? : |
|
3727
|
0 |
155 |
unless $weak_self |
|
3731
|
113 |
42 |
if (@{$weak_self->{'receive_queue'};}) |
|
3736
|
0 |
42 |
if $weak_self->{'closed'} |
|
3739
|
0 |
42 |
unless $weak_self |
|
3743
|
0 |
42 |
if (@{$weak_self->{'receive_queue'};}) |
|
3748
|
0 |
42 |
if $weak_self->{'closed'} |
|
3751
|
19 |
23 |
unless ($connect_sent) |
|
3758
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3764
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
3770
|
0 |
23 |
if $weak_self->{'closed'} |
|
3774
|
23 |
23 |
if (@{$weak_self->{'receive_queue'};}) |
|
3779
|
0 |
23 |
if $weak_self->{'closed'} |
|
3781
|
23 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3804
|
0 |
42 |
unless $weak_self |
|
3805
|
0 |
42 |
if $weak_self->{'closed'} |
|
3813
|
0 |
42 |
if ($weak_self->{'validate_events'}) |
|
3818
|
20 |
22 |
if ($type eq 'websocket.accept') { } |
|
|
17 |
5 |
elsif ($type eq 'websocket.send') { } |
|
|
1 |
4 |
elsif ($type eq 'websocket.http.response.start') { } |
|
|
1 |
3 |
elsif ($type eq 'websocket.http.response.body') { } |
|
|
3 |
0 |
elsif ($type eq 'websocket.close') { } |
|
|
0 |
0 |
elsif ($type eq 'websocket.keepalive') { } |
|
3819
|
0 |
20 |
if $weak_self->{'websocket_accepted'} |
|
3835
|
1 |
19 |
if (my $subprotocol = $event->{'subprotocol'}) |
|
3841
|
1 |
18 |
if (my $extra_headers = $event->{'headers'}) |
|
3863
|
0 |
18 |
if ($weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready) |
|
3870
|
0 |
18 |
if (length $weak_self->{'buffer'} > 0) |
|
3875
|
0 |
17 |
unless $weak_self->{'websocket_mode'} |
|
3878
|
0 |
17 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
3880
|
0 |
0 |
unless $weak_self |
|
3881
|
0 |
0 |
if $weak_self->{'closed'} |
|
3886
|
15 |
2 |
if (defined $event->{'text'}) { } |
|
|
2 |
0 |
elsif (defined $event->{'bytes'}) { } |
|
3910
|
0 |
1 |
if $weak_self->{'websocket_accepted'} |
|
3911
|
0 |
1 |
if $weak_self->{'ws_denial_started'} |
|
3921
|
0 |
1 |
unless $weak_self->{'ws_denial_started'} |
|
3922
|
0 |
1 |
if $weak_self->{'response_started'} |
|
3924
|
0 |
1 |
if $event->{'more'} |
|
3943
|
1 |
2 |
unless ($weak_self->{'websocket_accepted'}) |
|
3962
|
0 |
2 |
if ($weak_self->{'close_received'}) |
|
3967
|
0 |
0 |
unless $weak_self->{'websocket_mode'} |
|
3972
|
0 |
0 |
if ($interval > 0) { } |
|
3991
|
0 |
43 |
unless $self->{'websocket_mode'} |
|
3992
|
0 |
43 |
if $self->{'closed'} |
|
4011
|
130 |
0 |
if ($rsv and ref $rsv eq "ARRAY") |
|
4012
|
0 |
130 |
if (grep {$_;} @$rsv) |
|
4021
|
0 |
130 |
if ($opcode >= 3 and $opcode <= 7 or $opcode >= 11 and $opcode <= 15) |
|
4029
|
0 |
130 |
if ($opcode == 8 || $opcode == 9 || $opcode == 10 and length $bytes > 125) |
|
4035
|
129 |
1 |
if ($opcode == 1) { } |
|
|
1 |
0 |
elsif ($opcode == 2) { } |
|
|
0 |
0 |
elsif ($opcode == 8) { } |
|
|
0 |
0 |
elsif ($opcode == 9) { } |
|
|
0 |
0 |
elsif ($opcode == 10) { } |
|
4038
|
2 |
127 |
unless (defined $text) |
|
4045
|
2 |
125 |
if (@{$self->{'receive_queue'};} >= $self->{'max_receive_queue'}) |
|
4058
|
0 |
1 |
if (@{$self->{'receive_queue'};} >= $self->{'max_receive_queue'}) |
|
4075
|
0 |
0 |
if (length $bytes == 1) |
|
4081
|
0 |
0 |
if (length $bytes >= 2) |
|
4089
|
0 |
0 |
if ($code == 1000 or $code == 1001 or $code == 1002 or $code == 1003) { } |
|
|
0 |
0 |
elsif ($code >= 1007 and $code <= 1011) { } |
|
|
0 |
0 |
elsif ($code >= 3000 and $code <= 4999) { } |
|
4098
|
0 |
0 |
unless ($valid_code) |
|
4105
|
0 |
0 |
if (length $reason > 0) |
|
4108
|
0 |
0 |
unless (defined $decoded) |
|
4117
|
0 |
0 |
unless ($self->{'close_sent'}) |
|
4147
|
10 |
0 |
if ($self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready and @{$self->{'receive_queue'};}) |
|
4162
|
0 |
10 |
unless defined $file_size |
|
4169
|
7 |
3 |
if ($self->{'sync_file_threshold'} > 0 and $length <= $self->{'sync_file_threshold'}) { } |
|
4172
|
0 |
7 |
unless open my $fh, "<:raw", $file |
|
4173
|
2 |
5 |
if $offset |
|
4177
|
0 |
7 |
unless defined $bytes_read |
|
4179
|
1 |
6 |
if ($chunked) { } |
|
4190
|
3 |
0 |
$self->{'server'} ? : |
|
4191
|
0 |
3 |
unless $loop |
|
4197
|
2 |
4 |
if ($chunked) { } |
|
4212
|
1 |
2 |
if ($chunked) |
|
4225
|
1 |
5 |
if ($offset and $offset > 0) |
|
4226
|
0 |
1 |
unless seek $fh, $offset, 0 |
|
4238
|
4 |
8 |
if (defined $remaining) |
|
4239
|
4 |
0 |
if $remaining < $to_read |
|
4240
|
2 |
2 |
if $to_read <= 0 |
|
4245
|
0 |
10 |
unless defined $bytes_read |
|
4246
|
4 |
6 |
if $bytes_read == 0 |
|
4250
|
3 |
3 |
if ($chunked) { } |
|
4258
|
2 |
4 |
if (defined $remaining) |
|
4264
|
3 |
3 |
if ($chunked) |