| line |
!l |
l&&!r |
l&&r |
condition |
|
219
|
2 |
0 |
271 |
$self->{'transport_type'} eq "tcp" and $handle |
|
|
2 |
70 |
201 |
$self->{'transport_type'} eq "tcp" and $handle and $handle->can("setsockopt") |
|
227
|
0 |
71 |
200 |
$handle and $handle->can("peerhost") |
|
244
|
247 |
1 |
25 |
$self->{'alpn_protocol'} and $self->{'alpn_protocol'} eq "h2" |
|
|
248 |
0 |
25 |
$self->{'alpn_protocol'} and $self->{'alpn_protocol'} eq "h2" and $self->{'h2_protocol'} |
|
249
|
0 |
0 |
273 |
$self->{'timeout'} and $self->{'timeout'} > 0 |
|
|
0 |
0 |
273 |
$self->{'timeout'} and $self->{'timeout'} > 0 and $self->{'server'} |
|
286
|
447 |
0 |
43 |
$weak_self->{'h2c_enabled'} and not $weak_self->{'is_h2'} |
|
288
|
0 |
1 |
42 |
$weak_self->{'h2_protocol'} and "PAGI::Server::Protocol::HTTP2"->detect_preface($weak_self->{'buffer'}) |
|
317
|
215 |
0 |
12 |
$weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready |
|
352
|
267 |
54 |
135 |
defined $self->{'_idle_reset_at'} and $now - $self->{'_idle_reset_at'} < "0.05" |
|
417
|
0 |
219 |
2 |
$self->{'h2_session'} and not $self->{'h2_session'}->want_read |
|
428
|
0 |
471 |
285 |
defined $data and length $data > 0 |
|
468
|
45 |
1 |
12 |
$h->[0] eq "accept" and $h->[1] =~ m[text/event-stream] |
|
494
|
45 |
15 |
6 |
$self->{'max_body_size'} and $has_body |
|
532
|
5 |
0 |
16 |
$stream->{'is_websocket'} and $stream->{'ws_accepted'} |
|
552
|
2 |
0 |
1 |
$self->{'max_body_size'} and length $stream->{'body'} > $self->{'max_body_size'} |
|
582
|
41 |
0 |
15 |
$stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready |
|
671
|
0 |
59 |
5 |
$weak_self and not $stream_state->{'response_started'} |
|
693
|
0 |
0 |
64 |
$weak_self and $weak_self->{'server'} |
|
834
|
0 |
0 |
132 |
$weak_self && $weak_self->{'h2_streams'}{$stream_id} |
|
853
|
44 |
42 |
12 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} |
|
|
42 |
7 |
5 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} and @{$ss->{'stream_drain_waiters'};} |
|
867
|
44 |
39 |
15 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} |
|
|
39 |
11 |
4 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} and @{$ss->{'transport_drain_fires'};} |
|
875
|
58 |
32 |
8 |
!@$q && $eof_pending |
|
1360
|
0 |
0 |
74 |
$weak_self && $weak_self->{'h2_streams'}{$stream_id} |
|
1378
|
3 |
30 |
0 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} |
|
|
30 |
0 |
0 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'stream_drain_waiters'} and @{$ss->{'stream_drain_waiters'};} |
|
1389
|
3 |
29 |
1 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} |
|
|
29 |
0 |
1 |
($ss->{'send_queue_bytes'} // 0) < $weak_self->{'write_low_watermark'} and $ss->{'transport_drain_fires'} and @{$ss->{'transport_drain_fires'};} |
|
1584
|
1 |
0 |
0 |
$code >= 1007 and $code <= 1011 |
|
|
1 |
0 |
0 |
$code >= 3000 and $code <= 4999 |
|
1665
|
172 |
0 |
0 |
$self->{'request_timeout'} and $self->{'request_timeout'} > 0 |
|
1677
|
0 |
0 |
0 |
$weak_self->{'server'} and $weak_self->{'server'}->can("_log") |
|
1712
|
22 |
0 |
0 |
$self->{'ws_idle_timeout'} and $self->{'ws_idle_timeout'} > 0 |
|
1723
|
0 |
0 |
0 |
$weak_self->{'server'} and $weak_self->{'server'}->can("_log") |
|
1758
|
27 |
0 |
0 |
$self->{'sse_idle_timeout'} and $self->{'sse_idle_timeout'} > 0 |
|
1769
|
0 |
0 |
0 |
$weak_self->{'server'} and $weak_self->{'server'}->can("_log") |
|
1825
|
0 |
0 |
255 |
defined $data and not ref $data |
|
1979
|
0 |
66 |
1 |
$ss and $ss->{'stream_drain_waiters'} |
|
1996
|
0 |
0 |
0 |
$interval and $interval > 0 |
|
2049
|
0 |
0 |
0 |
$weak_self->{'server'} and $weak_self->{'server'}->can("_log") |
|
2099
|
0 |
0 |
2 |
$interval and $interval > 0 |
|
2163
|
2 |
202 |
6 |
$self->{'max_body_size'} and defined $request->{'content_length'} |
|
2176
|
22 |
172 |
15 |
!$is_websocket && $self->_is_sse_request($request) |
|
2208
|
624 |
0 |
22 |
$name eq "upgrade" and lc $value eq "websocket" |
|
2220
|
187 |
0 |
22 |
$has_upgrade && $has_connection_upgrade && $has_ws_key |
|
2357
|
7 |
134 |
11 |
$connection_header and $connection_header =~ /close/ |
|
2363
|
2 |
0 |
1 |
$connection_header and $connection_header =~ /keep-alive/ |
|
2478
|
17 |
0 |
0 |
$expect_continue and not $continue_sent |
|
2486
|
1 |
0 |
0 |
length $weak_self->{'buffer'} == 0 and not $weak_self->{'closed'} |
|
2503
|
1 |
0 |
0 |
ref $data eq "HASH" and $data->{'error'} |
|
2517
|
0 |
1 |
0 |
$weak_self->{'max_body_size'} and $bytes_read > $weak_self->{'max_body_size'} |
|
2563
|
16 |
0 |
12 |
length $weak_self->{'buffer'} == 0 and not $weak_self->{'closed'} |
|
2577
|
16 |
0 |
0 |
$weak_self->{'closed'} and length $weak_self->{'buffer'} == 0 |
|
2627
|
2 |
0 |
1 |
$h->[0] eq "connection" and lc($h->[1]) =~ /keep-alive/ |
|
2821
|
0 |
0 |
2 |
$handle and $handle->can("setsockopt") |
|
2846
|
156 |
0 |
18 |
defined $pending and length $pending |
|
2921
|
0 |
0 |
0 |
defined $query and length $query |
|
2961
|
271 |
0 |
2 |
not $reason and $self->{'server'} |
|
|
0 |
2 |
0 |
not $reason and $self->{'server'} and $self->{'server'}{'shutting_down'} |
|
2973
|
243 |
0 |
30 |
$self->{'current_connection_state'} and not $self->{'websocket_mode'} |
|
|
243 |
0 |
30 |
$self->{'current_connection_state'} and not $self->{'websocket_mode'} and not $self->{'sse_mode'} |
|
2981
|
255 |
2 |
16 |
$self->{'websocket_mode'} and not $is_completion |
|
3002
|
256 |
1 |
16 |
$self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready |
|
3046
|
20 |
0 |
9 |
$stream->{'body_pending'} and not $stream->{'body_pending'}->is_ready |
|
3076
|
136 |
14 |
123 |
$self->{'server'}{'shutting_down'} and keys %{$$self{"server"}{"connections"};} == 0 |
|
|
150 |
122 |
1 |
$self->{'server'}{'shutting_down'} and keys %{$$self{"server"}{"connections"};} == 0 and $self->{'server'}{'drain_complete'} |
|
|
122 |
0 |
1 |
$self->{'server'}{'shutting_down'} and keys %{$$self{"server"}{"connections"};} == 0 and $self->{'server'}{'drain_complete'} and not $self->{'server'}{'drain_complete'}->is_ready |
|
3150
|
0 |
0 |
45 |
$handle and $handle->isa("IO::Socket::SSL") |
|
3269
|
231 |
0 |
45 |
$self->{'tls_enabled'} and $self->{'tls_info'} |
|
3309
|
0 |
0 |
15 |
$self->{'sse_started'} and not $self->{'closed'} |
|
|
0 |
0 |
15 |
$self->{'sse_started'} and not $self->{'closed'} and $self->{'stream'} |
|
|
0 |
1 |
14 |
$self->{'sse_started'} and not $self->{'closed'} and $self->{'stream'} and $self->{'stream'}->write_handle |
|
3359
|
14 |
0 |
1 |
defined $content_length && $content_length > 0 |
|
3391
|
6 |
0 |
1 |
$has_body and not $body_complete |
|
3395
|
1 |
0 |
0 |
length $weak_self->{'buffer'} == 0 and not $weak_self->{'closed'} |
|
|
1 |
0 |
0 |
length $weak_self->{'buffer'} == 0 and not $weak_self->{'closed'} and $remaining > 0 |
|
3466
|
32 |
0 |
17 |
defined $event->{'event'} and length $event->{'event'} |
|
3477
|
41 |
0 |
7 |
defined $event->{'id'} and length $event->{'id'} |
|
3618
|
0 |
0 |
1 |
$handle and $handle->can("setsockopt") |
|
3863
|
18 |
0 |
0 |
$weak_self->{'receive_pending'} and not $weak_self->{'receive_pending'}->is_ready |
|
4011
|
0 |
0 |
130 |
$rsv and ref $rsv eq "ARRAY" |
|
4021
|
130 |
0 |
0 |
$opcode >= 3 and $opcode <= 7 |
|
|
130 |
0 |
0 |
$opcode >= 11 and $opcode <= 15 |
|
4029
|
130 |
0 |
0 |
$opcode == 8 || $opcode == 9 || $opcode == 10 and length $bytes > 125 |
|
4089
|
0 |
0 |
0 |
$code >= 1007 and $code <= 1011 |
|
|
0 |
0 |
0 |
$code >= 3000 and $code <= 4999 |
|
4147
|
28 |
0 |
10 |
$self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready |
|
|
28 |
0 |
10 |
$self->{'receive_pending'} and not $self->{'receive_pending'}->is_ready and @{$self->{'receive_queue'};} |
|
4169
|
0 |
3 |
7 |
$self->{'sync_file_threshold'} > 0 and $length <= $self->{'sync_file_threshold'} |
|
4225
|
5 |
0 |
1 |
$offset and $offset > 0 |
| line |
l |
!l |
condition |
|
195
|
203 |
72 |
$args{'extensions'} // {} |
|
|
203 |
72 |
$args{'state'} // {} |
|
|
203 |
72 |
$args{'tls_enabled'} // 0 |
|
|
203 |
72 |
$args{'timeout'} // 60 |
|
|
203 |
72 |
$args{'request_timeout'} // 0 |
|
|
203 |
72 |
$args{'ws_idle_timeout'} // 0 |
|
|
203 |
72 |
$args{'sse_idle_timeout'} // 0 |
|
|
203 |
72 |
$args{'max_receive_queue'} // 1000 |
|
|
203 |
72 |
$args{'max_ws_frame_size'} // 65536 |
|
|
203 |
72 |
$args{'sync_file_threshold'} // 65536 |
|
|
203 |
72 |
$args{'validate_events'} // 0 |
|
|
203 |
72 |
$args{'write_high_watermark'} // 65536 |
|
|
203 |
72 |
$args{'write_low_watermark'} // 16384 |
|
|
44 |
231 |
$args{'h2c_enabled'} // 0 |
|
|
203 |
72 |
$args{'transport_type'} // "tcp" |
|
235
|
199 |
1 |
$handle->peerhost // "127.0.0.1" |
|
236
|
199 |
1 |
$handle->peerport // 0 |
|
237
|
200 |
0 |
$handle->sockhost // "127.0.0.1" |
|
238
|
200 |
0 |
$handle->sockport // 5000 |
|
442
|
67 |
0 |
$pseudo->{':method'} // "" |
|
443
|
16 |
1 |
$pseudo->{':protocol'} // "" |
|
706
|
39 |
0 |
$pseudo->{':path'} // "/" |
|
708
|
2 |
37 |
$query_string //= "" |
|
748
|
39 |
0 |
$pseudo->{':method'} // "GET" |
|
836
|
132 |
0 |
$ss->{'send_queue'} ||= [] |
|
853
|
98 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
867
|
98 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
893
|
141 |
0 |
$event->{'type'} // "" |
|
901
|
33 |
0 |
$event->{'status'} // 200 |
|
904
|
33 |
0 |
$event->{'headers'} // [] |
|
914
|
108 |
0 |
$event->{'body'} // "" |
|
915
|
98 |
10 |
$event->{'more'} // 0 |
|
921
|
0 |
10 |
$ss->{'send_queue'} //= [] |
|
922
|
0 |
10 |
$ss->{'send_queue_bytes'} //= 0 |
|
943
|
65 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
962
|
10 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1004
|
17 |
0 |
$pseudo->{':path'} // "/" |
|
1006
|
0 |
17 |
$query_string //= "" |
|
1117
|
25 |
0 |
$event->{'type'} // "" |
|
1183
|
2 |
0 |
$event->{'status'} // 403 |
|
1186
|
2 |
0 |
$event->{'headers'} // [] |
|
1193
|
3 |
0 |
$event->{'body'} // "" |
|
1216
|
1 |
0 |
$event->{'code'} // 1000 |
|
1217
|
1 |
0 |
$event->{'reason'} // "" |
|
1243
|
13 |
0 |
$pseudo->{':path'} // "/" |
|
1245
|
0 |
13 |
$query_string //= "" |
|
1276
|
13 |
0 |
$pseudo->{':method'} // "GET" |
|
1362
|
74 |
0 |
$ss->{'send_queue'} ||= [] |
|
1378
|
33 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1389
|
33 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1415
|
38 |
0 |
$event->{'type'} // "" |
|
1427
|
12 |
0 |
$event->{'status'} // 200 |
|
1428
|
1 |
11 |
$event->{'headers'} // [] |
|
1454
|
0 |
12 |
$ss->{'send_queue'} //= [] |
|
1455
|
0 |
12 |
$ss->{'send_queue_bytes'} //= 0 |
|
1473
|
6 |
0 |
$ss->{'send_queue'} ||= [] |
|
1474
|
6 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1487
|
23 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1495
|
23 |
0 |
$ss->{'send_queue'} ||= [] |
|
1496
|
23 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1507
|
1 |
0 |
$ss->{'send_queue'} ||= [] |
|
1508
|
1 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1514
|
2 |
0 |
$event->{'interval'} // 0 |
|
1580
|
3 |
0 |
substr($bytes, 2) // "" |
|
1653
|
4 |
0 |
$reason // "" |
|
1820
|
384 |
0 |
$self->{'stream'}{'writequeue'} // [] |
|
1860
|
90 |
2 |
$ss->{'send_queue_bytes'} // 0 |
|
1939
|
544 |
2 |
$reason //= "connection closed" |
|
1959
|
5 |
0 |
$ss->{'send_queue_bytes'} // 0 |
|
1966
|
4 |
1 |
$ss->{'stream_drain_waiters'} //= [] |
|
2000
|
0 |
0 |
$timeout // 0 |
|
2102
|
2 |
0 |
$comment // "" |
|
2344
|
155 |
0 |
$request->{'http_version'} // "1.1" |
|
2418
|
172 |
0 |
$request->{'chunked'} // 0 |
|
2419
|
172 |
0 |
$request->{'expect_continue'} // 0 |
|
2505
|
0 |
0 |
$data->{'message'} // "Bad Request" |
|
2514
|
1 |
0 |
$data // "" |
|
2530
|
1 |
0 |
$data // "" |
|
2619
|
172 |
0 |
$request->{'method'} // "" |
|
2620
|
172 |
0 |
$request->{'http_version'} // "1.1" |
|
2644
|
328 |
0 |
$event->{'type'} // "" |
|
2658
|
158 |
0 |
$event->{'status'} // 200 |
|
2659
|
1 |
157 |
$event->{'trailers'} // 0 |
|
2661
|
158 |
0 |
$event->{'status'} // 200 |
|
2662
|
158 |
0 |
$event->{'headers'} // [] |
|
2711
|
1 |
0 |
$event->{'more'} // 0 |
|
2735
|
3 |
161 |
$event->{'offset'} // 0 |
|
2754
|
148 |
0 |
$body //= "" |
|
2755
|
127 |
21 |
$event->{'more'} // 0 |
|
2794
|
1 |
0 |
$event->{'headers'} // [] |
|
2797
|
0 |
1 |
$weak_self->{'_resp_pending'} // "" |
|
2910
|
199 |
0 |
$request->{'method'} // "-" |
|
|
199 |
0 |
$request->{'raw_path'} // "/" |
|
|
199 |
0 |
$request->{'http_version'} // "1.1" |
|
|
199 |
0 |
$self->{'response_status'} // "-" |
|
|
199 |
0 |
$self->{'_response_size'} // 0 |
|
|
199 |
0 |
$request->{'headers'} // [] |
|
2944
|
8 |
28 |
$self->{'ws_disconnect_code'} // 1006 |
|
|
32 |
4 |
$self->{'ws_disconnect_reason'} // "" |
|
2966
|
271 |
2 |
$reason //= "client_closed" |
|
2992
|
0 |
15 |
$self->{'sse_disconnect_reason'} // "client_closed" |
|
3016
|
4 |
0 |
$reason //= "" |
|
3109
|
0 |
15 |
$self->{'sse_disconnect_reason'} // "client_closed" |
|
3369
|
0 |
0 |
($weak_self ? $weak_self->{'sse_disconnect_reason'} : undef) // "client_closed" |
|
3472
|
48 |
0 |
$event->{'data'} // "" |
|
3495
|
5 |
0 |
$event->{'comment'} // "" |
|
3518
|
34 |
0 |
$event->{'type'} // "" |
|
3531
|
14 |
1 |
$event->{'status'} // 200 |
|
3533
|
13 |
2 |
$event->{'headers'} // [] |
|
3598
|
0 |
0 |
$event->{'interval'} // 0 |
|
3810
|
42 |
0 |
$event->{'type'} // "" |
|
3913
|
1 |
0 |
$event->{'status'} // 403 |
|
3916
|
1 |
0 |
$event->{'headers'} // [] |
|
3923
|
1 |
0 |
$event->{'body'} // "" |
|
3949
|
0 |
2 |
$event->{'code'} // 1000 |
|
3950
|
0 |
2 |
$event->{'reason'} // "" |
|
3969
|
0 |
0 |
$event->{'interval'} // 0 |
|
4083
|
0 |
0 |
substr($bytes, 2) // "" |
| line |
l |
!l&&r |
!l&&!r |
condition |
|
218
|
273 |
0 |
0 |
$stream->write_handle // $stream->read_handle |
|
713
|
39 |
0 |
0 |
eval {
do {
&decode("UTF-8", $unescaped, 1)
}
} // $unescaped |
|
748
|
39 |
0 |
0 |
$pseudo->{':scheme'} // $self->_get_scheme |
|
1010
|
17 |
0 |
0 |
eval {
do {
&decode("UTF-8", $unescaped, 1)
}
} // $unescaped |
|
1249
|
13 |
0 |
0 |
eval {
do {
&decode("UTF-8", $unescaped, 1)
}
} // $unescaped |
|
1276
|
13 |
0 |
0 |
$pseudo->{':scheme'} // $self->_get_scheme |
|
1584
|
2 |
0 |
1 |
$code == 1000 or $code == 1001 |
|
|
2 |
0 |
1 |
$code == 1000 or $code == 1001 or $code == 1002 |
|
|
0 |
0 |
1 |
$code == 1000 or $code == 1001 or $code == 1002 or $code == 1003 |
|
2426
|
5 |
1 |
166 |
defined $content_length && $content_length > 0 || $is_chunked |
|
2679
|
1 |
3 |
154 |
$is_head_request or $is_http10 |
|
2772
|
10 |
1 |
131 |
$more or $expects_trailers |
|
2910
|
197 |
2 |
0 |
$self->{'client_host'} // ($self->{'transport_type'} eq "unix" ? "unix" : "-") |
|
3757
|
23 |
0 |
0 |
$weak_self->{'websocket_mode'} or $weak_self->{'closed'} |
|
4021
|
0 |
0 |
130 |
$opcode >= 3 and $opcode <= 7 or $opcode >= 11 and $opcode <= 15 |
|
4029
|
0 |
0 |
130 |
$opcode == 8 || $opcode == 9 || $opcode == 10 |
|
4089
|
0 |
0 |
0 |
$code == 1000 or $code == 1001 |
|
|
0 |
0 |
0 |
$code == 1000 or $code == 1001 or $code == 1002 |
|
|
0 |
0 |
0 |
$code == 1000 or $code == 1001 or $code == 1002 or $code == 1003 |
|
4163
|
1 |
9 |
0 |
$length //= $file_size - $offset |