| line |
true |
false |
branch |
|
58
|
96 |
0 |
exists &Errno::EINTR ? : |
|
59
|
96 |
0 |
exists &Errno::EAGAIN ? : |
|
60
|
96 |
0 |
exists &Errno::EWOULDBLOCK ? : |
|
103
|
1 |
88 |
defined $args{'min_reqs_per_child'} ? : |
|
|
0 |
89 |
defined $args{'err_respawn_interval'} ? : |
|
112
|
0 |
89 |
if ($^O eq "MSWin32") |
|
115
|
0 |
0 |
if ($v[1] * 1000 + $v[2] < 6002) |
|
120
|
0 |
89 |
if ($args{'max_workers'} and $args{'max_workers'} > 1) |
|
139
|
0 |
6 |
if ($self->{'socket'} and $self->{'port'}) |
|
143
|
0 |
6 |
if ($self->{'socket'} and $self->{'ssl'}) |
|
147
|
6 |
82 |
if ($self->{'socket'}) |
|
149
|
0 |
6 |
unless &try(sub {
require IO::Socket::UNIX;
1;
}
) |
|
154
|
82 |
0 |
if ($self->{'ipv6'}) |
|
158
|
0 |
82 |
if ($self->{'ssl'}) |
|
160
|
0 |
0 |
unless &try(sub {
require IO::Socket::SSL;
1;
}
) |
|
168
|
0 |
82 |
if $self->{'ssl'} |
|
169
|
82 |
0 |
if $self->{'ipv6'} |
|
185
|
6 |
82 |
$self->{'socket'} ? : |
|
189
|
0 |
88 |
$self->{'ssl'} ? : |
|
190
|
6 |
82 |
$self->{'socket'} ? : |
|
194
|
0 |
88 |
unless ($self->{'listen_sock'} ||= $class->new(%args)) |
|
199
|
0 |
88 |
unless $self->{'quiet'} |
|
206
|
82 |
6 |
if ($^O eq "linux" and $self->{'_listen_sock_is_tcp'}) |
|
208
|
82 |
0 |
if setsockopt $self->{'listen_sock'}, 6, 9, 1 |
|
211
|
6 |
82 |
if ($self->{'_listen_sock_is_unix'} and not $args{'Local'} =~ /^\0/) |
|
230
|
58 |
0 |
if $self->{'can_exit'} |
|
233
|
0 |
0 |
if $is_keepalive and $self->{'can_exit'} or $self->{'term_received'} > 1 |
|
241
|
0 |
101 |
unless (my($conn, $peer) = $self->{'listen_sock'}->accept) |
|
247
|
100 |
1 |
if ($self->{'_listen_sock_is_tcp'}) |
|
248
|
0 |
100 |
if (Socket::sockaddr_family(getsockname $conn) == 10) { } |
|
255
|
100 |
0 |
if (&try(sub {
1;
}
)) |
|
257
|
0 |
100 |
unless ($conn->setsockopt(6, 1, 1)) |
|
264
|
0 |
101 |
if ($conn->isa("IO::Socket::SSL")) |
|
265
|
0 |
0 |
unless ($conn->accept_SSL) |
|
267
|
0 |
0 |
if $! |
|
268
|
0 |
0 |
if $IO::Socket::SSL::SSL_ERROR |
|
276
|
0 |
101 |
unless ($conn->blocking(0)) |
|
298
|
0 |
101 |
$self->{'ssl'} ? : |
|
306
|
0 |
0 |
if ($may_keepalive and $max_reqs_per_child and $proc_req_count >= $max_reqs_per_child) |
|
309
|
0 |
101 |
if length $pipelined_buf |
|
316
|
23 |
78 |
if ($env->{'psgix.harakiri.commit'}) |
|
320
|
78 |
0 |
unless $keepalive |
|
337
|
101 |
0 |
defined $prebuf ? : |
|
340
|
0 |
101 |
if ($rlen = length $prebuf) { } |
|
347
|
0 |
101 |
$is_keepalive ? : |
|
|
9 |
92 |
unless $rlen = $self->read_timeout($conn, \$buf, 131072 - length($buf), length $buf, $is_keepalive ? $self->{'keepalive_timeout'} : $self->{'timeout'}) |
|
351
|
92 |
0 |
if ($reqlen >= 0) |
|
355
|
0 |
92 |
if ($use_keepalive) |
|
356
|
0 |
0 |
if ($protocol eq 'HTTP/1.1') { } |
|
357
|
0 |
0 |
if (my $c = $env->{'HTTP_CONNECTION'}) |
|
358
|
0 |
0 |
if $c =~ /^\s*close\s*/i |
|
362
|
0 |
0 |
if (my $c = $env->{'HTTP_CONNECTION'}) { } |
|
363
|
0 |
0 |
unless $c =~ /^\s*keep-alive\s*/i |
|
372
|
5 |
87 |
if (my $cl = $env->{'CONTENT_LENGTH'}) { } |
|
|
1 |
86 |
elsif ($chunked) { } |
|
376
|
4 |
2 |
if (length $buf) { } |
|
381
|
1 |
1 |
unless $self->read_timeout($conn, \$chunk, $cl, 0, $self->{'timeout'}) |
|
393
|
1 |
8 |
if (length $buf) { } |
|
398
|
0 |
8 |
unless $self->read_timeout($conn, \$chunk, 65536, 0, $self->{'timeout'}) |
|
405
|
1 |
99 |
if ($chunk_len == 0) { } |
|
|
1 |
98 |
elsif (length $chunk_buffer < $chunk_len + 2) { } |
|
419
|
0 |
86 |
if ($buf =~ /^(?:GET|HEAD)/) |
|
426
|
0 |
91 |
if ($env->{'HTTP_EXPECT'}) |
|
427
|
0 |
0 |
if ($env->{'HTTP_EXPECT'} eq '100-continue') { } |
|
428
|
0 |
0 |
unless $self->write_all($conn, "HTTP/1.1 100 Continue\r\n\r\n") |
|
439
|
0 |
0 |
if ($reqlen == -2) { } |
|
|
0 |
0 |
elsif ($reqlen == -1) { } |
|
449
|
88 |
3 |
if (ref $res eq 'ARRAY') { } |
|
|
3 |
0 |
elsif (ref $res eq 'CODE') { } |
|
460
|
0 |
91 |
if ($self->{'term_received'}) |
|
478
|
0 |
104 |
unless defined $v |
|
480
|
0 |
104 |
if ($lck eq 'connection') { } |
|
481
|
0 |
0 |
if $$use_keepalive_r and lc $v ne "keep-alive" |
|
488
|
90 |
1 |
unless (exists $send_headers{'server'}) |
|
491
|
91 |
0 |
unless (exists $send_headers{'date'}) |
|
497
|
89 |
2 |
if (defined $protocol and $protocol eq 'HTTP/1.1') { } |
|
498
|
4 |
85 |
if (defined $send_headers{'content-length'} or defined $send_headers{'transfer-encoding'}) { } |
|
|
84 |
1 |
elsif (not Plack::Util::status_with_no_entity_body($status_code)) { } |
|
506
|
89 |
0 |
unless $$use_keepalive_r |
|
510
|
0 |
2 |
if ($$use_keepalive_r) |
|
511
|
0 |
0 |
if (defined $send_headers{'content-length'} or defined $send_headers{'transfer-encoding'}) { } |
|
|
0 |
0 |
elsif (not Plack::Util::status_with_no_entity_body($status_code) and defined(my $cl = Plack::Util::content_length($body))) { } |
|
523
|
0 |
2 |
if $$use_keepalive_r |
|
524
|
2 |
0 |
unless $$use_keepalive_r |
|
530
|
81 |
2 |
if (defined $body and ref $body eq "ARRAY" and @$body == 1 and defined $body->[0] and length $body->[0] < 8192) |
|
538
|
78 |
3 |
if ($use_chunked) |
|
548
|
0 |
10 |
unless $self->write_all($conn, join("", @lines), $self->{'timeout'}) |
|
550
|
8 |
2 |
if (defined $body) { } |
|
553
|
3 |
5 |
ref $body eq 'ARRAY' ? : |
|
557
|
10 |
0 |
unless ($failed) |
|
560
|
7 |
3 |
if ($use_chunked) |
|
562
|
0 |
7 |
unless $len |
|
564
|
2 |
5 |
if ($body_count == 0) |
|
570
|
0 |
10 |
unless $self->write_all($conn, $buf, $self->{'timeout'}) |
|
574
|
2 |
6 |
if $use_chunked and not $completed |
|
578
|
5 |
0 |
if ($use_chunked) |
|
580
|
1 |
4 |
unless $len |
|
586
|
2 |
0 |
if $use_chunked |
|
595
|
11 |
100 |
unless ($is_write or delete $self->{'_is_deferred_accept'}) |
|
601
|
109 |
111 |
if ($is_write) { } |
|
602
|
109 |
0 |
if $ret = syswrite($sock, $buf, $len, $off) |
|
605
|
101 |
10 |
if $ret = sysread($sock, $$buf, $len, $off) |
|
608
|
10 |
0 |
if (defined $ret or $! != 4 and $! != 11 and $! != 11) |
|
618
|
0 |
11 |
if ($is_write) { } |
|
626
|
11 |
0 |
if $nfound |
|
627
|
0 |
0 |
if $timeout <= 0 |
|
649
|
0 |
109 |
unless my $ret = $self->write_timeout($sock, $buf, $len, $off, $timeout) |
|
664
|
0 |
85 |
if ($^O eq "MSWin32") |
|
666
|
0 |
0 |
if $self->{$arg} |
|
671
|
0 |
85 |
if ($self->{'pid'}) |
|
673
|
0 |
0 |
if (defined *Fcntl::O_EXCL{'CODE'}) { } |
|
674
|
0 |
0 |
unless sysopen $pidfh, $pidfile, 193 |
|
677
|
0 |
0 |
unless open $pidfh, ">", $pidfile |
|
681
|
0 |
85 |
if (defined $self->{'error_log'}) |
|
682
|
0 |
0 |
unless open STDERR, ">>", $self->{'error_log'} |
|
685
|
0 |
85 |
if ($self->{'daemonize'}) |
|
687
|
0 |
0 |
unless chdir "File::Spec"->rootdir |
|
689
|
0 |
0 |
unless open my $devnull, "+>", "File::Spec"->devnull |
|
691
|
0 |
0 |
unless open STDIN, ">&", $devnull |
|
692
|
0 |
0 |
unless open STDOUT, ">&", $devnull |
|
694
|
0 |
0 |
unless defined(my $pid = fork) |
|
695
|
0 |
0 |
if ($pid) |
|
696
|
0 |
0 |
if ($self->{'pid'} and $pid) |
|
697
|
0 |
0 |
unless print $pidfh "$pid\n" |
|
699
|
0 |
0 |
unless open STDERR, ">&", $devnull |
|
704
|
0 |
0 |
if $pidfh |
|
706
|
0 |
0 |
if ($Config::Config{'d_setsid'}) |
|
707
|
0 |
0 |
unless POSIX::setsid() |
|
710
|
0 |
0 |
unless (defined $self->{'error_log'}) |
|
711
|
0 |
0 |
unless open STDERR, ">&", $devnull |
|
715
|
0 |
85 |
if ($pidfile) |
|
725
|
0 |
85 |
if (defined $self->{'group'}) |
|
726
|
0 |
0 |
unless ($Config::Config{'d_setegid'}) |
|
729
|
0 |
0 |
if ($self->_get_gid($self->{'group'}) ne $Starlight::Server::EGID) |
|
735
|
0 |
85 |
if (defined $self->{'user'}) |
|
736
|
0 |
0 |
unless ($Config::Config{'d_seteuid'}) |
|
739
|
0 |
0 |
if ($self->_get_uid($self->{'user'}) ne $Starlight::Server::EUID) |
|
745
|
0 |
85 |
if (defined $self->{'umask'}) |
|
746
|
0 |
0 |
unless ($Config::Config{'d_umask'}) |
|
760
|
0 |
0 |
if ($user =~ /^(\d+)$/) { } |
|
767
|
0 |
0 |
unless defined $uid |
|
777
|
0 |
0 |
if ($group =~ /^\d+$/) { } |
|
781
|
0 |
0 |
unless defined $id |
|
786
|
0 |
0 |
unless @gid |
|
795
|
0 |
0 |
unless eval {
do {
POSIX::setuid($uid)
}
} |
|
796
|
0 |
0 |
if ($Starlight::Server::UID != $uid or $Starlight::Server::EUID != $uid) |
|
798
|
0 |
0 |
if ($Starlight::Server::UID != $uid) |
|
811
|
0 |
0 |
unless eval {
do {
$Starlight::Server::EGID = $gids
}
} |
|
813
|
0 |
0 |
unless eval {
do {
POSIX::setgid($gid)
}
} |
|
814
|
0 |
0 |
unless (grep {$gid == $_;} split(/\s+/, $Starlight::Server::GID, 0)) |
|
823
|
855 |
771 |
if $t |
|
829
|
0 |
849 |
unless defined $pid |
|
831
|
78 |
771 |
if ($pid == 0) { } |
|
833
|
23 |
0 |
unless eval {
do {
$SIG{'CHLD'} = "DEFAULT";
$self->accept_loop($app, $self->_calc_reqs_per_child)
}
} |
|
837
|
0 |
23 |
if $@ |
|
848
|
10000 |
78 |
if (my $min = $self->{'min_reqs_per_child'}) { } |