| line |
true |
false |
branch |
|
47
|
1 |
42 |
if ($value =~ /[\r\n\0]/) |
|
56
|
0 |
43 |
if ($name =~ /[\r\n\0]/) |
|
59
|
0 |
43 |
if ($name =~ /[[:cntrl:]]/) |
|
69
|
1 |
0 |
if ($value =~ /[\r\n\0\s]/) |
|
73
|
0 |
0 |
unless ($value =~ /^[\w\-\.]+$/) |
|
202
|
45 |
241 |
if ($self->{'tls_enabled'}) |
|
219
|
207 |
75 |
if ($self->{'transport_type'} eq "tcp" and $handle and $handle->can("setsockopt")) |
|
227
|
2 |
282 |
if ($self->{'transport_type'} eq 'unix') { } |
|
|
206 |
76 |
elsif ($handle and $handle->can('peerhost')) { } |
|
244
|
29 |
0 |
if ($self->{'alpn_protocol'} and $self->{'alpn_protocol'} eq "h2" and $self->{'h2_protocol'}) |
|
249
|
284 |
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 |
537 |
unless $weak_self |
|
274
|
73 |
464 |
if $weak_self->{'handling_request'} |
|
279
|
12 |
525 |
if ($eof) |
|
286
|
44 |
481 |
if ($weak_self->{'h2c_enabled'} and not $weak_self->{'is_h2'}) |
|
287
|
44 |
0 |
if (length $weak_self->{'buffer'} >= 24) { } |
|
288
|
43 |
1 |
if ($weak_self->{'h2_protocol'} and 'PAGI::Server::Protocol::HTTP2'->detect_preface($weak_self->{'buffer'})) { } |
|
305
|
235 |
290 |
if ($weak_self->{'is_h2'}) |
|
311
|
57 |
233 |
if ($weak_self->{'websocket_mode'}) |
|
317
|
12 |
221 |
if ($weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready) |
|
325
|
1 |
524 |
if (my $error = $@) |
|
328
|
0 |
1 |
unless $weak_self |
|
334
|
61 |
220 |
unless $weak_self |
|
344
|
60 |
477 |
unless $self->{'idle_timer'} |
|
352
|
143 |
334 |
if defined $self->{'_idle_reset_at'} and $now - $self->{'_idle_reset_at'} < "0.05" |
|
356
|
0 |
334 |
unless $self->{'idle_timer'}->is_running |
|
362
|
43 |
284 |
unless $self->{'idle_timer'} |
|
363
|
284 |
0 |
if $self->{'idle_timer'}->is_running |
|
366
|
284 |
0 |
if ($self->{'server'}) |
|
386
|
0 |
71 |
unless $weak_self |
|
391
|
0 |
22 |
unless $weak_self |
|
396
|
0 |
43 |
unless $weak_self |
|
407
|
0 |
236 |
unless $self->{'h2_session'} |
|
409
|
235 |
1 |
if (length $self->{'buffer'} > 0) |
|
417
|
2 |
234 |
if ($self->{'h2_session'} and not $self->{'h2_session'}->want_read) |
|
425
|
0 |
498 |
unless $self->{'h2_session'} |
|
428
|
498 |
302 |
unless defined $data and length $data > 0 |
|
442
|
17 |
55 |
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
|
55 |
16 |
unless ($is_websocket) |
|
468
|
17 |
46 |
if ($h->[0] eq "accept" and $h->[1] =~ m[text/event-stream]) |
|
494
|
6 |
65 |
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 |
70 |
unless $weak_self |
|
521
|
0 |
70 |
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 |
45 |
if ($stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready) |
|
593
|
2 |
41 |
unless $stream |
|
599
|
0 |
41 |
if ($stream->{'is_websocket'}) { } |
|
|
5 |
36 |
elsif ($stream->{'is_sse'}) { } |
|
629
|
0 |
41 |
unless $weak_self |
|
642
|
1 |
69 |
unless $stream_state |
|
646
|
16 |
53 |
if ($stream_state->{'is_websocket'}) { } |
|
|
17 |
36 |
elsif ($stream_state->{'is_sse'}) { } |
|
671
|
5 |
64 |
if ($weak_self and not $stream_state->{'response_started'}) { } |
|
|
0 |
64 |
elsif ($error) { } |
|
672
|
1 |
4 |
$error ? : |
|
685
|
3 |
2 |
if $stream_state->{'connection_state'} |
|
693
|
69 |
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
|
18 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
18 |
keys %{$$self{'state'};} ? : |
|
1293
|
0 |
14 |
unless $weak_self |
|
1294
|
0 |
14 |
if $weak_self->{'closed'} |
|
1297
|
0 |
14 |
unless $ss |
|
1300
|
0 |
14 |
unless $weak_self |
|
1303
|
0 |
14 |
unless $ss |
|
1306
|
0 |
14 |
if (@{$ss->{'receive_queue'};}) |
|
1311
|
12 |
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 |
79 |
unless $ss |
|
1364
|
34 |
45 |
if (@$q) |
|
1367
|
4 |
30 |
if (length $chunk > $max_len) |
|
1378
|
0 |
31 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} and @{$ss->{'stream_drain_waiters'};}) |
|
1389
|
1 |
30 |
if (($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} and @{$ss->{'transport_drain_fires'};}) |
|
1402
|
1 |
44 |
if $ss->{'sse_closing'} |
|
1410
|
0 |
52 |
unless $weak_self |
|
1413
|
0 |
52 |
unless $ss |
|
1420
|
1 |
51 |
if ($ss->{'sse_close_sent'}) |
|
1421
|
0 |
1 |
if $type eq "sse.close" |
|
1427
|
1 |
50 |
if ($ss->{'sse_decline_started'} and not $type =~ /^sse\.http\.response\./) |
|
1431
|
0 |
50 |
if $weak_self->{'closed'} |
|
1437
|
0 |
50 |
if ($weak_self->{'validate_events'}) |
|
1442
|
14 |
36 |
if ($type eq 'sse.start') { } |
|
|
24 |
12 |
elsif ($type eq 'sse.send') { } |
|
|
1 |
11 |
elsif ($type eq 'sse.comment') { } |
|
|
2 |
9 |
elsif ($type eq 'sse.keepalive') { } |
|
|
1 |
8 |
elsif ($type eq 'sse.close') { } |
|
|
4 |
4 |
elsif ($type eq 'sse.http.response.start') { } |
|
|
4 |
0 |
elsif ($type eq 'sse.http.response.body') { } |
|
1443
|
0 |
14 |
if $ss->{'response_started'} |
|
1452
|
1 |
1 |
if (lc $h->[0] eq "content-type") |
|
1462
|
13 |
1 |
unless ($has_content_type) |
|
1468
|
14 |
0 |
unless (grep {lc $_->[0] eq "date";} @final_headers) |
|
1489
|
0 |
6 |
unless $weak_self |
|
1490
|
0 |
6 |
if $weak_self->{'closed'} |
|
1491
|
0 |
6 |
unless my $ss = $weak_self->{'h2_streams'}{$stream_id} |
|
1502
|
0 |
24 |
unless $ss->{'response_started'} |
|
1506
|
0 |
24 |
if (($ss->{'send_queue_bytes'} // 0) >= $weak_self->{'write_high_watermark'}) |
|
1508
|
0 |
0 |
unless $weak_self |
|
1509
|
0 |
0 |
if $weak_self->{'closed'} |
|
1510
|
0 |
0 |
unless $weak_self->{'h2_streams'}{$stream_id} |
|
1518
|
24 |
0 |
if $ss->{'transport_state'} |
|
1523
|
0 |
1 |
unless $ss->{'response_started'} |
|
1528
|
1 |
0 |
if $ss->{'transport_state'} |
|
1536
|
2 |
0 |
if ($interval > 0) { } |
|
1550
|
1 |
0 |
if defined $event->{'reason'} |
|
1556
|
1 |
3 |
if $ss->{'response_started'} |
|
1557
|
0 |
3 |
if $ss->{'sse_decline_started'} |
|
1567
|
0 |
4 |
unless $ss->{'sse_decline_started'} |
|
1568
|
0 |
4 |
if $ss->{'response_started'} |
|
1570
|
1 |
3 |
if $event->{'more'} |
|
1592
|
0 |
16 |
unless $frame |
|
1599
|
5 |
5 |
if ($opcode == 1) { } |
|
|
1 |
4 |
elsif ($opcode == 2) { } |
|
|
4 |
0 |
elsif ($opcode == 8) { } |
|
|
0 |
0 |
elsif ($opcode == 9) { } |
|
1602
|
1 |
4 |
unless (defined $text) |
|
1623
|
1 |
3 |
if (length $bytes == 1) |
|
1634
|
3 |
0 |
if (length $bytes >= 2) |
|
1640
|
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) { } |
|
1649
|
1 |
2 |
unless ($valid_code) |
|
1661
|
2 |
0 |
if (length $reason > 0) |
|
1664
|
1 |
1 |
unless (defined $decoded) |
|
1721
|
172 |
0 |
unless $self->{'request_timeout'} and $self->{'request_timeout'} > 0 |
|
1722
|
0 |
0 |
unless $self->{'server'} |
|
1723
|
0 |
0 |
if $self->{'stall_timer'} |
|
1730
|
0 |
0 |
unless $weak_self |
|
1731
|
0 |
0 |
if $weak_self->{'closed'} |
|
1733
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1748
|
401 |
0 |
unless $self->{'stall_timer'} |
|
1750
|
0 |
0 |
unless $self->{'stall_timer'}->is_running |
|
1756
|
439 |
0 |
unless $self->{'stall_timer'} |
|
1757
|
0 |
0 |
if $self->{'stall_timer'}->is_running |
|
1758
|
0 |
0 |
if ($self->{'server'}) |
|
1768
|
22 |
0 |
unless $self->{'ws_idle_timeout'} and $self->{'ws_idle_timeout'} > 0 |
|
1769
|
0 |
0 |
unless $self->{'server'} |
|
1770
|
0 |
0 |
if $self->{'ws_idle_timer'} |
|
1777
|
0 |
0 |
unless $weak_self |
|
1778
|
0 |
0 |
if $weak_self->{'closed'} |
|
1779
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1794
|
99 |
0 |
unless $self->{'ws_idle_timer'} |
|
1796
|
0 |
0 |
unless $self->{'ws_idle_timer'}->is_running |
|
1802
|
284 |
0 |
unless $self->{'ws_idle_timer'} |
|
1803
|
0 |
0 |
if $self->{'ws_idle_timer'}->is_running |
|
1804
|
0 |
0 |
if ($self->{'server'}) |
|
1814
|
35 |
0 |
unless $self->{'sse_idle_timeout'} and $self->{'sse_idle_timeout'} > 0 |
|
1815
|
0 |
0 |
unless $self->{'server'} |
|
1816
|
0 |
0 |
if $self->{'sse_idle_timer'} |
|
1823
|
0 |
0 |
unless $weak_self |
|
1824
|
0 |
0 |
if $weak_self->{'closed'} |
|
1825
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
1841
|
97 |
0 |
unless $self->{'sse_idle_timer'} |
|
1843
|
0 |
0 |
unless $self->{'sse_idle_timer'}->is_running |
|
1849
|
284 |
0 |
unless $self->{'sse_idle_timer'} |
|
1850
|
0 |
0 |
if $self->{'sse_idle_timer'}->is_running |
|
1851
|
0 |
0 |
if ($self->{'server'}) |
|
1872
|
0 |
388 |
unless $self->{'stream'} |
|
1881
|
261 |
0 |
if (defined $data and not ref $data) |
|
1896
|
187 |
0 |
$w ? : |
|
1897
|
187 |
0 |
$w ? : |
|
1898
|
3 |
0 |
$w ? : |
|
1899
|
1 |
0 |
if $w |
|
1917
|
93 |
0 |
$w ? : |
|
1918
|
0 |
0 |
$w ? : |
|
1928
|
183 |
0 |
if $ts |
|
1934
|
0 |
1 |
unless @{$self->{'_drain_waiters'};} |
|
1935
|
0 |
1 |
unless $self->{'stream'} |
|
1940
|
1 |
0 |
if ($buffered < $self->{'write_low_watermark'}) |
|
1943
|
1 |
0 |
unless $f->is_ready |
|
1954
|
0 |
1 |
if $self->{'_drain_check_active'} |
|
1966
|
0 |
1 |
unless $weak_self |
|
1969
|
0 |
1 |
if $prev_on_empty |
|
1979
|
0 |
1 |
if ($buffered < $self->{'write_low_watermark'}) |
|
2000
|
0 |
0 |
unless $f->is_ready |
|
2012
|
0 |
5 |
unless my $ss = $self->{'h2_streams'}{$stream_id} |
|
2015
|
0 |
5 |
if (($ss->{'send_queue_bytes'} // 0) < $self->{'write_low_watermark'}) |
|
2035
|
71 |
1 |
unless $ss and $ss->{'stream_drain_waiters'} |
|
2037
|
1 |
0 |
unless @waiters |
|
2052
|
0 |
0 |
unless $interval and $interval > 0 |
|
2053
|
0 |
0 |
unless $self->{'server'} |
|
2063
|
0 |
0 |
unless $weak_self |
|
2064
|
0 |
0 |
if $weak_self->{'closed'} |
|
2065
|
0 |
0 |
unless $weak_self->{'websocket_mode'} |
|
2075
|
0 |
0 |
if ($weak_self->{'ws_keepalive_timeout'} > 0) |
|
2091
|
0 |
0 |
if $self->{'ws_pong_timeout'} |
|
2092
|
0 |
0 |
unless $self->{'ws_keepalive_timeout'} > 0 |
|
2093
|
0 |
0 |
unless $self->{'server'} |
|
2100
|
0 |
0 |
unless $weak_self |
|
2101
|
0 |
0 |
if $weak_self->{'closed'} |
|
2103
|
0 |
0 |
if ($weak_self->{'ws_waiting_pong'}) |
|
2105
|
0 |
0 |
if ($weak_self->{'server'} and $weak_self->{'server'}->can("_log")) |
|
2124
|
284 |
0 |
unless $self->{'ws_pong_timeout'} |
|
2125
|
0 |
0 |
if $self->{'ws_pong_timeout'}->is_running |
|
2126
|
0 |
0 |
if ($self->{'server'}) |
|
2138
|
284 |
0 |
unless $self->{'ws_keepalive_timer'} |
|
2139
|
0 |
0 |
if $self->{'ws_keepalive_timer'}->is_running |
|
2140
|
0 |
0 |
if ($self->{'server'}) |
|
2155
|
0 |
2 |
unless $interval and $interval > 0 |
|
2156
|
0 |
2 |
unless $self->{'server'} |
|
2165
|
0 |
6 |
unless $weak_self |
|
2166
|
0 |
6 |
if $weak_self->{'closed'} |
|
2169
|
6 |
0 |
unless $text =~ /^:/ |
|
2172
|
6 |
0 |
if (my $writer = $weak_self->{'sse_keepalive_writer'}) |
|
2186
|
284 |
2 |
unless $self->{'sse_keepalive_timer'} |
|
2187
|
2 |
0 |
if $self->{'sse_keepalive_timer'}->is_running |
|
2188
|
2 |
0 |
if ($self->{'server'}) |
|
2198
|
0 |
234 |
if $self->{'closed'} |
|
2199
|
11 |
223 |
if $self->{'handling_request'} |
|
2204
|
2 |
221 |
unless $request |
|
2210
|
5 |
216 |
if ($request->{'error'}) |
|
2219
|
6 |
210 |
if ($self->{'max_body_size'} and defined $request->{'content_length'}) |
|
2220
|
1 |
5 |
if ($request->{'content_length'} > $self->{'max_body_size'}) |
|
2239
|
22 |
193 |
if ($is_websocket) { } |
|
|
21 |
172 |
elsif ($is_sse) { } |
|
2264
|
22 |
636 |
if ($name eq 'upgrade' and lc $value eq 'websocket') { } |
|
|
193 |
443 |
elsif ($name eq 'connection') { } |
|
|
22 |
421 |
elsif ($name eq 'sec-websocket-key') { } |
|
2269
|
22 |
171 |
if lc($value) =~ /upgrade/ |
|
2290
|
21 |
495 |
if ($name eq "accept") |
|
2292
|
21 |
0 |
if $value =~ m[text/event-stream] |
|
2310
|
15 |
156 |
if (my $error = $@) |
|
2313
|
2 |
13 |
if ($self->{'response_started'}) { } |
|
2323
|
15 |
0 |
if $self->{'server'} |
|
2336
|
1 |
155 |
unless ($self->{'response_started'}) |
|
2337
|
1 |
0 |
unless ($self->{'closed'}) |
|
2342
|
1 |
0 |
if $self->{'server'} |
|
2356
|
155 |
0 |
if $self->{'server'} |
|
2367
|
155 |
0 |
if (my $conn_state = $self->{'current_connection_state'}) |
|
2374
|
142 |
13 |
if ($keep_alive) { } |
|
2388
|
1 |
141 |
if (length $self->{'buffer'} > 0) |
|
2405
|
146 |
133 |
if ($header->[0] eq "connection") |
|
2412
|
152 |
3 |
if ($http_version eq "1.1") |
|
2413
|
11 |
141 |
if $connection_header and $connection_header =~ /close/ |
|
2418
|
3 |
0 |
if ($http_version eq "1.0") |
|
2419
|
1 |
2 |
if $connection_header and $connection_header =~ /keep-alive/ |
|
2464
|
170 |
2 |
defined $self->{'client_host'} ? : |
|
|
3 |
169 |
keys %{$$self{'state'};} ? : |
|
2488
|
0 |
57 |
unless $weak_self |
|
2489
|
0 |
57 |
if $weak_self->{'closed'} |
|
2493
|
0 |
57 |
unless $weak_self |
|
2494
|
0 |
57 |
if $weak_self->{'closed'} |
|
2497
|
0 |
57 |
if (@{$weak_self->{'receive_queue'};}) |
|
2502
|
1 |
56 |
if ($body_complete) |
|
2503
|
1 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2507
|
0 |
1 |
if ($weak_self->{'closed'}) |
|
2515
|
1 |
0 |
if ref $result eq "HASH" |
|
2517
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
2524
|
39 |
17 |
unless ($has_body) |
|
2534
|
0 |
17 |
if ($expect_continue and not $continue_sent) |
|
2540
|
1 |
16 |
if ($is_chunked) |
|
2543
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2550
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
2559
|
0 |
0 |
if (ref $data eq "HASH" and $data->{'error'}) |
|
2566
|
1 |
0 |
if ($consumed > 0) |
|
2573
|
0 |
1 |
if ($weak_self->{'max_body_size'} and $bytes_read > $weak_self->{'max_body_size'}) |
|
2581
|
1 |
0 |
if ($complete) |
|
2586
|
1 |
0 |
$complete ? : |
|
2593
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2601
|
0 |
0 |
if $weak_self->{'closed'} |
|
2609
|
0 |
16 |
if ($remaining <= 0) |
|
2620
|
12 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
2627
|
0 |
12 |
if (@{$weak_self->{'receive_queue'};}) |
|
2633
|
0 |
16 |
if ($weak_self->{'closed'} and length $weak_self->{'buffer'} == 0) |
|
2638
|
11 |
5 |
$remaining < $chunk_size ? : |
|
2639
|
12 |
4 |
if length $weak_self->{'buffer'} < $to_read |
|
2645
|
12 |
4 |
$bytes_read < $content_length ? : |
|
2647
|
4 |
12 |
unless ($more) |
|
2681
|
3 |
169 |
if ($is_http10) |
|
2683
|
1 |
2 |
if ($h->[0] eq "connection" and lc($h->[1]) =~ /keep-alive/) |
|
2694
|
0 |
328 |
unless $weak_self |
|
2695
|
0 |
328 |
if $weak_self->{'closed'} |
|
2703
|
0 |
328 |
if ($weak_self->{'validate_events'}) |
|
2708
|
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') { } |
|
2709
|
0 |
158 |
if $response_started |
|
2713
|
158 |
0 |
if $weak_self->{'current_connection_state'} |
|
2723
|
16 |
146 |
if (lc $h->[0] eq "content-length") |
|
2735
|
4 |
154 |
if ($is_head_request or $is_http10) { } |
|
2737
|
3 |
1 |
if ($is_http10) |
|
2738
|
1 |
2 |
if (not $has_content_length) { } |
|
|
1 |
1 |
elsif ($client_wants_keepalive) { } |
|
2762
|
0 |
166 |
unless $response_started |
|
2763
|
1 |
165 |
if $body_complete |
|
2766
|
1 |
164 |
if ($is_head_request) |
|
2770
|
1 |
0 |
unless ($more) |
|
2779
|
0 |
164 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
2782
|
0 |
0 |
unless $weak_self |
|
2783
|
0 |
0 |
if $weak_self->{'closed'} |
|
2794
|
10 |
154 |
if (defined $file) { } |
|
|
6 |
148 |
elsif (defined $fh) { } |
|
2820
|
9 |
139 |
unless defined $out |
|
2823
|
142 |
6 |
if ($chunked) { } |
|
2824
|
142 |
0 |
if (length $body) |
|
2828
|
131 |
1 |
unless ($more or $expects_trailers) |
|
2836
|
148 |
0 |
if length $out |
|
2840
|
138 |
10 |
unless ($more) |
|
2846
|
0 |
1 |
unless $response_started |
|
2847
|
0 |
1 |
unless $expects_trailers |
|
2848
|
0 |
1 |
unless $chunked |
|
2870
|
1 |
2 |
unless (exists $weak_self->{'extensions'}{'fullflush'}) |
|
2877
|
2 |
0 |
if ($handle and $handle->can("setsockopt")) |
|
2902
|
156 |
18 |
unless defined $pending and length $pending |
|
2910
|
0 |
23 |
if $self->{'closed'} |
|
2911
|
0 |
23 |
if $self->{'response_started'} |
|
2927
|
14 |
9 |
if $self->{'current_connection_state'} |
|
2934
|
8 |
205 |
unless $self->{'access_log'} |
|
2935
|
0 |
205 |
unless $self->{'current_request'} |
|
2941
|
205 |
0 |
if ($self->{'request_start'}) |
|
2947
|
77 |
128 |
if ($now != $_cached_log_time) |
|
2966
|
2 |
0 |
$self->{'transport_type'} eq 'unix' ? : |
|
2970
|
205 |
0 |
if ($formatter) { } |
|
2977
|
0 |
0 |
if defined $query and length $query |
|
3009
|
172 |
284 |
if $self->{'_disconnect_handled'} |
|
3017
|
0 |
2 |
if (not $reason and $self->{'server'} and $self->{'server'}{'shutting_down'}) |
|
3029
|
30 |
0 |
if ($self->{'current_connection_state'} and not $self->{'websocket_mode'} and not $self->{'sse_mode'}) |
|
3030
|
17 |
13 |
unless $is_completion |
|
3037
|
16 |
268 |
if ($self->{'websocket_mode'} and not $is_completion) |
|
3043
|
18 |
266 |
if ($self->{'websocket_mode'}) { } |
|
|
21 |
245 |
elsif ($self->{'sse_mode'}) { } |
|
3058
|
16 |
268 |
if ($self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready) |
|
3074
|
0 |
4 |
unless $self->{'stream'} |
|
3075
|
0 |
4 |
if $self->{'close_sent'} |
|
3093
|
174 |
284 |
if $self->{'closed'} |
|
3100
|
284 |
0 |
if ($self->{'h2_streams'}) |
|
3102
|
9 |
21 |
if ($stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready) |
|
3104
|
2 |
7 |
$stream->{'is_sse'} ? : |
|
3119
|
72 |
212 |
if ($self->{'h2_session'}) |
|
3128
|
284 |
0 |
if ($self->{'server'}) |
|
3132
|
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) |
|
3160
|
18 |
266 |
if ($self->{'websocket_mode'}) { } |
|
|
21 |
245 |
elsif ($self->{'sse_mode'}) { } |
|
3173
|
0 |
18 |
unless ($future->is_ready) |
|
3181
|
284 |
0 |
if ($self->{'stream'}) |
|
3206
|
0 |
45 |
unless $handle and $handle->isa("IO::Socket::SSL") |
|
3218
|
45 |
0 |
if (my $version_str = $handle->get_sslversion) |
|
3236
|
45 |
0 |
if (my $cipher_name = $handle->get_cipher) |
|
3245
|
45 |
0 |
if exists $tls13_cipher_suites{$cipher_name} |
|
3252
|
45 |
0 |
if ($cert) |
|
3257
|
0 |
45 |
if ($@) |
|
3264
|
8 |
37 |
if ($client_cert) |
|
3272
|
8 |
0 |
if (my $ssl = $handle->_get_ssl_object) |
|
3274
|
0 |
8 |
if ($chain_obj) |
|
3277
|
0 |
0 |
if $cert |
|
3287
|
8 |
0 |
if $subject |
|
3292
|
8 |
0 |
if (my $ssl = $handle->_get_ssl_object) |
|
3294
|
0 |
8 |
if ($result != 0) |
|
3300
|
0 |
45 |
if ($@) |
|
3310
|
44 |
149 |
$self->{'tls_enabled'} ? : |
|
3316
|
0 |
39 |
$self->{'tls_enabled'} ? : |
|
3325
|
45 |
242 |
if ($self->{'tls_enabled'} and $self->{'tls_info'}) { } |
|
|
242 |
0 |
elsif (not $self->{'tls_enabled'}) { } |
|
3355
|
0 |
21 |
if (my $error = $@) |
|
3357
|
0 |
0 |
unless ($self->{'sse_started'}) |
|
3372
|
1 |
21 |
if $self->{'sse_finished'} |
|
3376
|
17 |
1 |
if ($self->{'sse_started'} and not $self->{'closed'} and $self->{'stream'} and $self->{'stream'}->write_handle) |
|
3416
|
21 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
21 |
keys %{$$self{'state'};} ? : |
|
3436
|
0 |
0 |
$weak_self ? : |
|
3441
|
0 |
7 |
unless $weak_self |
|
3444
|
0 |
7 |
if $weak_self->{'closed'} |
|
3447
|
0 |
7 |
unless $weak_self |
|
3450
|
0 |
7 |
if $weak_self->{'closed'} |
|
3453
|
0 |
7 |
if (@{$weak_self->{'receive_queue'};}) |
|
3458
|
1 |
6 |
if ($has_body and not $body_complete) |
|
3463
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3469
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
3474
|
0 |
1 |
if $weak_self->{'closed'} |
|
3479
|
0 |
1 |
$remaining < length $weak_self->{'buffer'} ? : |
|
3484
|
0 |
1 |
$bytes_read < $content_length ? : |
|
3485
|
1 |
0 |
unless $more |
|
3495
|
3 |
3 |
unless ($body_complete) |
|
3506
|
2 |
3 |
if (@{$weak_self->{'receive_queue'};}) |
|
3511
|
0 |
3 |
if $weak_self->{'closed'} |
|
3513
|
3 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3533
|
20 |
32 |
if (defined $event->{'event'} and length $event->{'event'}) |
|
3535
|
1 |
19 |
if $event->{'event'} =~ /[\r\n]/ |
|
3544
|
7 |
44 |
if (defined $event->{'id'} and length $event->{'id'}) |
|
3546
|
1 |
6 |
if $event->{'id'} =~ /[\r\n]/ |
|
3550
|
7 |
43 |
if (defined $event->{'retry'}) |
|
3552
|
2 |
5 |
unless $event->{'retry'} =~ /\A[0-9]+\z/ |
|
3565
|
8 |
1 |
unless $line =~ /^:/ |
|
3579
|
0 |
49 |
unless $weak_self |
|
3586
|
1 |
48 |
if ($weak_self->{'sse_close_sent'}) |
|
3587
|
0 |
1 |
if $type eq "sse.close" |
|
3592
|
0 |
48 |
if $weak_self->{'closed'} |
|
3596
|
1 |
47 |
if ($weak_self->{'sse_decline_started'} and not $type =~ /^sse\.http\.response\./) |
|
3604
|
0 |
47 |
if ($weak_self->{'validate_events'}) |
|
3609
|
18 |
29 |
if ($type eq 'sse.start') { } |
|
|
18 |
11 |
elsif ($type eq 'sse.send') { } |
|
|
2 |
9 |
elsif ($type eq 'sse.comment') { } |
|
|
0 |
9 |
elsif ($type eq 'sse.keepalive') { } |
|
|
1 |
8 |
elsif ($type eq 'sse.close') { } |
|
|
4 |
4 |
elsif ($type eq 'sse.http.response.start') { } |
|
|
3 |
1 |
elsif ($type eq 'sse.http.response.body') { } |
|
|
1 |
0 |
elsif ($type eq 'http.fullflush') { } |
|
3610
|
0 |
18 |
if $weak_self->{'sse_started'} |
|
3621
|
9 |
0 |
if (lc $h->[0] eq "content-type") |
|
3628
|
9 |
9 |
unless ($has_content_type) |
|
3647
|
0 |
0 |
unless $weak_self |
|
3648
|
0 |
0 |
if $weak_self->{'closed'} |
|
3654
|
0 |
18 |
unless $weak_self->{'sse_started'} |
|
3657
|
0 |
18 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
3659
|
0 |
0 |
unless $weak_self |
|
3660
|
0 |
0 |
if $weak_self->{'closed'} |
|
3672
|
0 |
2 |
unless $weak_self->{'sse_started'} |
|
3684
|
0 |
0 |
if ($interval > 0) { } |
|
3698
|
1 |
0 |
if defined $event->{'reason'} |
|
3705
|
1 |
3 |
if $weak_self->{'sse_started'} |
|
3706
|
0 |
3 |
if $weak_self->{'sse_decline_started'} |
|
3716
|
0 |
3 |
unless $weak_self->{'sse_decline_started'} |
|
3717
|
0 |
3 |
if $weak_self->{'response_started'} |
|
3719
|
0 |
3 |
if $event->{'more'} |
|
3739
|
0 |
1 |
unless (exists $weak_self->{'extensions'}{'fullflush'}) |
|
3746
|
1 |
0 |
if ($handle and $handle->can("setsockopt")) |
|
3781
|
2 |
19 |
if (my $error = $@) |
|
3783
|
2 |
0 |
unless ($self->{'websocket_accepted'}) |
|
3805
|
22 |
101 |
if ($name eq 'sec-websocket-key') { } |
|
|
2 |
99 |
elsif ($name eq 'sec-websocket-protocol') { } |
|
3842
|
22 |
0 |
defined $self->{'client_host'} ? : |
|
|
0 |
22 |
keys %{$$self{'state'};} ? : |
|
3855
|
0 |
155 |
unless $weak_self |
|
3859
|
113 |
42 |
if (@{$weak_self->{'receive_queue'};}) |
|
3864
|
0 |
42 |
if $weak_self->{'closed'} |
|
3867
|
0 |
42 |
unless $weak_self |
|
3871
|
0 |
42 |
if (@{$weak_self->{'receive_queue'};}) |
|
3876
|
0 |
42 |
if $weak_self->{'closed'} |
|
3879
|
19 |
23 |
unless ($connect_sent) |
|
3886
|
0 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3892
|
0 |
0 |
if (@{$weak_self->{'receive_queue'};}) |
|
3898
|
0 |
23 |
if $weak_self->{'closed'} |
|
3902
|
23 |
23 |
if (@{$weak_self->{'receive_queue'};}) |
|
3907
|
0 |
23 |
if $weak_self->{'closed'} |
|
3909
|
23 |
0 |
unless ($weak_self->{'receive_pending'}) |
|
3932
|
0 |
42 |
unless $weak_self |
|
3933
|
0 |
42 |
if $weak_self->{'closed'} |
|
3941
|
0 |
42 |
if ($weak_self->{'validate_events'}) |
|
3946
|
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') { } |
|
3947
|
0 |
20 |
if $weak_self->{'websocket_accepted'} |
|
3963
|
1 |
19 |
if (my $subprotocol = $event->{'subprotocol'}) |
|
3969
|
1 |
18 |
if (my $extra_headers = $event->{'headers'}) |
|
3991
|
0 |
18 |
if ($weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready) |
|
3998
|
0 |
18 |
if (length $weak_self->{'buffer'} > 0) |
|
4003
|
0 |
17 |
unless $weak_self->{'websocket_mode'} |
|
4006
|
0 |
17 |
if ($weak_self->_get_write_buffer_size >= $weak_self->{'write_high_watermark'}) |
|
4008
|
0 |
0 |
unless $weak_self |
|
4009
|
0 |
0 |
if $weak_self->{'closed'} |
|
4014
|
15 |
2 |
if (defined $event->{'text'}) { } |
|
|
2 |
0 |
elsif (defined $event->{'bytes'}) { } |
|
4038
|
0 |
1 |
if $weak_self->{'websocket_accepted'} |
|
4039
|
0 |
1 |
if $weak_self->{'ws_denial_started'} |
|
4049
|
0 |
1 |
unless $weak_self->{'ws_denial_started'} |
|
4050
|
0 |
1 |
if $weak_self->{'response_started'} |
|
4052
|
0 |
1 |
if $event->{'more'} |
|
4071
|
1 |
2 |
unless ($weak_self->{'websocket_accepted'}) |
|
4090
|
0 |
2 |
if ($weak_self->{'close_received'}) |
|
4095
|
0 |
0 |
unless $weak_self->{'websocket_mode'} |
|
4100
|
0 |
0 |
if ($interval > 0) { } |
|
4119
|
0 |
57 |
unless $self->{'websocket_mode'} |
|
4120
|
0 |
57 |
if $self->{'closed'} |
|
4139
|
130 |
0 |
if ($rsv and ref $rsv eq "ARRAY") |
|
4140
|
0 |
130 |
if (grep {$_;} @$rsv) |
|
4149
|
0 |
130 |
if ($opcode >= 3 and $opcode <= 7 or $opcode >= 11 and $opcode <= 15) |
|
4157
|
0 |
130 |
if ($opcode == 8 || $opcode == 9 || $opcode == 10 and length $bytes > 125) |
|
4163
|
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) { } |
|
4166
|
2 |
127 |
unless (defined $text) |
|
4173
|
2 |
125 |
if (@{$self->{'receive_queue'};} >= $self->{'max_receive_queue'}) |
|
4186
|
0 |
1 |
if (@{$self->{'receive_queue'};} >= $self->{'max_receive_queue'}) |
|
4203
|
0 |
0 |
if (length $bytes == 1) |
|
4209
|
0 |
0 |
if (length $bytes >= 2) |
|
4217
|
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) { } |
|
4226
|
0 |
0 |
unless ($valid_code) |
|
4233
|
0 |
0 |
if (length $reason > 0) |
|
4236
|
0 |
0 |
unless (defined $decoded) |
|
4245
|
0 |
0 |
unless ($self->{'close_sent'}) |
|
4275
|
10 |
0 |
if ($self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready and @{$self->{'receive_queue'};}) |
|
4290
|
0 |
10 |
unless defined $file_size |
|
4297
|
7 |
3 |
if ($self->{'sync_file_threshold'} > 0 and $length <= $self->{'sync_file_threshold'}) { } |
|
4300
|
0 |
7 |
unless open my $fh, "<:raw", $file |
|
4301
|
2 |
5 |
if $offset |
|
4305
|
0 |
7 |
unless defined $bytes_read |
|
4307
|
1 |
6 |
if ($chunked) { } |
|
4318
|
3 |
0 |
$self->{'server'} ? : |
|
4319
|
0 |
3 |
unless $loop |
|
4325
|
2 |
4 |
if ($chunked) { } |
|
4340
|
1 |
2 |
if ($chunked) |
|
4353
|
1 |
5 |
if ($offset and $offset > 0) |
|
4354
|
0 |
1 |
unless seek $fh, $offset, 0 |
|
4366
|
4 |
8 |
if (defined $remaining) |
|
4367
|
4 |
0 |
if $remaining < $to_read |
|
4368
|
2 |
2 |
if $to_read <= 0 |
|
4373
|
0 |
10 |
unless defined $bytes_read |
|
4374
|
4 |
6 |
if $bytes_read == 0 |
|
4378
|
3 |
3 |
if ($chunked) { } |
|
4386
|
2 |
4 |
if (defined $remaining) |
|
4392
|
3 |
3 |
if ($chunked) |