Branch Coverage

blib/lib/Net/Clacks/Server.pm
Criterion Covered Total %
branch 0 496 0.0


line true false branch
88 0 0 if (defined $ENV{'CLACKS_SIMULATED_TIME_OFFSET'})
105 0 0 unless (defined $self->{'initHasRun'} and $self->{'initHasRun'})
111 0 0 if ($self->{'shutdowntime'} and $self->{'shutdowntime'} < &Net::Clacks::Server::time())
118 0 0 if ($self->{'workCount'}) { }
0 0 elsif ($self->{'usleep'} < $self->{'config'}{'throttle'}{'maxsleep'}) { }
123 0 0 if ($self->{'usleep'})
134 0 0 unless (defined $self->{'initHasRun'} and $self->{'initHasRun'})
141 0 0 if ($self->{'savecache'} and $now > $self->{'lastsavecache'} + $self->{'persistanceinterval'})
148 0 0 if (defined $self->{'config'}{'master'}{'socket'} or defined $self->{'config'}{'master'}{'ip'})
156 0 0 unless (scalar keys %{$$self{"clients"};})
170 0 0 if ($buf eq "\r") { }
0 0 elsif ($buf eq "\n") { }
173 0 0 if $self->{'clients'}{$cid}{'buffer'} eq ""
186 0 0 if ($self->{'interclackslock'} and not $self->{'clients'}{$cid}{'interclacksclient'})
194 0 0 if $self->{'clients'}{$cid}{'inmessages'}[0]{'releasetime'} > $now
199 0 0 if ($inmsg =~ /^CLACKS\ (.+)/u)
213 0 0 unless ($self->{'clients'}{$cid}{'authok'})
217 0 0 unless ($self->{'nodebug'})
228 0 0 if ($self->{'discardafterlogging'})
234 0 0 if ($inmsg =~ /^OVERHEAD\ /u) { }
0 0 elsif ($self->_handleMessageDirect($cid, $inmsg)) { }
0 0 elsif ($self->_handleMessageCaching($cid, $inmsg)) { }
0 0 elsif ($self->_handleMessageControl($cid, $inmsg)) { }
251 0 0 if ($self->{'sendinterclacks'})
253 0 0 if ($cid eq $interclackscid or not $self->{'clients'}{$interclackscid}{'interclacks'})
265 0 0 if ($self->{'nextcachecleanup'} < $now)
297 0 0 unless ($self->{'persistance'})
305 0 0 if ($self->{'savecache'} == 1)
314 0 0 if ($self->{'savecache'} == 2)
323 0 0 unless length $buffer
331 0 0 if ($Net::Clacks::Server::EVAL_ERROR or not $ok)
349 0 0 unless open my $fh, "<", $fname
362 0 0 unless open my $fh, ">", $fname
375 0 0 if (-f $self->{'config'}{'persistancefile'})
380 0 0 if (not $loadok and -f $previousfname)
383 0 0 if ($loadok)
387 0 0 if (not $loadok and -f $tempfname)
390 0 0 if ($loadok)
395 0 0 if (not $loadok) { }
406 0 0 if (defined $self->{'initHasRun'} and $self->{'initHasRun'})
412 0 0 if (defined $ENV{'PC_CONFIG_PATHS'}) { }
423 0 0 if ($path ne "" and not $path =~ m[/$]u)
427 0 0 unless -f $fullfname
433 0 0 unless $varname =~ /^PC\_/u
442 0 0 if (not defined $filedata or $filedata eq "")
452 0 0 if (defined $config->{'hosts'}{$hname})
460 0 0 unless (defined $self->{'config'}{'throttle'}{'maxsleep'})
463 0 0 unless (defined $self->{'config'}{'throttle'}{'step'})
469 0 0 if (defined $config->{'ip'})
471 0 0 unless (defined $self->{'config'}{'ssl'} and defined $self->{'config'}{'ssl'}{'cert'} and defined $self->{'config'}{'ssl'}{'key'})
476 0 0 unless (-f $self->{'config'}{'ssl'}{'cert'})
479 0 0 unless (-f $self->{'config'}{'ssl'}{'key'})
484 0 0 unless (defined $self->{'config'}{'username'})
487 0 0 unless (defined $self->{'config'}{'password'})
502 0 0 if (defined $self->{'config'}{'user'})
504 0 0 unless (defined $user->{'username'} and defined $user->{'password'})
515 0 0 if (defined $user->{$key} and $user->{$key})
522 0 0 if (defined $self->{'config'}{'persistancefile'}) { }
528 0 0 if (not defined $self->{'config'}{'persistanceinterval'}) { }
534 0 0 unless (defined $self->{'config'}{'interclacksreconnecttimeout'})
538 0 0 unless (defined $self->{'config'}{'authtimeout'})
542 0 0 unless (defined $self->{'config'}{'deletedcachetime'})
545 0 0 unless (defined $self->{'config'}{'stalecachetime'})
549 0 0 unless (defined $self->{'config'}{'cachecleaninterval'})
553 0 0 unless (defined $self->{'config'}{'readfailtimeout'})
557 0 0 unless (defined $self->{'config'}{'interclacksreadfailtimeout'})
577 0 0 if (defined $config->{'ip'})
578 0 0 unless (defined $config->{'port'})
585 0 0 unless my $tcp = "IO::Socket::IP"->new("LocalHost", $ip, "LocalPort", $config->{'port'}, "Listen", 20, "Blocking", 0, "ReuseAddr", 1, "Proto", "tcp")
596 0 0 if (defined $config->{'socket'} or defined $self->{'config'}{'master'}{'socket'})
602 0 0 unless ($udsloaded)
625 0 0 if (defined $config->{'socket'})
627 0 0 if (-S $socket)
631 0 0 unless my $tcp = "IO::Socket::UNIX"->new("Type", 1, "Local", $socket, "Listen", 20)
642 0 0 if (defined $config->{'socketchmod'} and $config->{'socketchmod'} ne "")
648 0 0 if (defined $config->{'socketcommands'})
670 0 0 if ($self->{'persistance'})
684 0 0 unless (-f $fname)
691 0 0 if (length $data < 11)
696 0 0 if (substr($data, 0, 9) ne "\0CLACKSV3")
697 0 0 if ($alreadyupgraded)
703 0 0 unless ($self->_inplaceUpgrade($fname))
711 0 0 if (length $data < 18)
718 0 0 if (substr($data, -9, 9) ne "\0CLACKSV3")
726 0 0 if (length $data)
732 0 0 unless ($loadok)
751 0 0 if (open my $ifh, '<', $fname) { }
763 0 0 if (not defined $endline and $accesstimeline eq 'ENDBYTES') { }
771 0 0 if (not defined $line && defined $timestampline or $endline ne "ENDBYTES")
778 0 0 if ($line ne "")
784 0 0 unless ($loadok)
796 0 0 if ($timestampline ne "")
803 0 0 if (not $loadok) { }
814 0 0 if ($needupgrade) { }
0 0 elsif ($accesstimeline ne '') { }
826 0 0 if (not $loadok) { }
844 0 0 if (defined $clackscachetime{$key})
847 0 0 if (defined $clackscacheaccesstime{$key})
860 0 0 if (defined $cache{$key})
867 0 0 if (defined $clackscacheaccesstime{$key})
890 0 0 if (defined $self->{'config'}{'master'}{'socket'}) { }
895 0 0 if (not defined $self->{'clients'}{$mcid} and $self->{'nextinterclackscheck'} < $now)
901 0 0 if (defined $self->{'config'}{'master'}{'socket'}) { }
914 0 0 if (not defined $msocket) { }
919 0 0 if (ref $msocket ne "IO::Socket::UNIX")
925 0 0 unless ($encrypted)
965 0 0 if (defined $self->{'config'}{'master'}{'ip'})
983 0 0 if (defined $clientsocket)
986 0 0 if (ref $tcpsocket eq 'IO::Socket::UNIX') { }
995 0 0 if ($self->{'clients'}{$debugcid}{'mirror'})
1000 0 0 if (ref $clientsocket ne "IO::Socket::UNIX")
1021 0 0 unless ($encrypted)
1083 0 0 unless ($self->{'clients'}{$cid}{'socket'}->connected)
1087 0 0 if (not $self->{'clients'}{$cid}{'interclacks'}) { }
1088 0 0 if ($self->{'clients'}{$cid}{'lastping'} > 0 and $self->{'clients'}{$cid}{'lastping'} < $pingtime)
1094 0 0 if ($self->{'clients'}{$cid}{'lastping'} < $interclackspingtime)
1101 0 0 if ($self->{'clients'}{$cid}{'interclacks'} and $self->{'clients'}{$cid}{'lastinterclacksping'} < $interclackspinginterval)
1106 0 0 if (not $self->{'clients'}{$cid}{'authok'} and $self->{'clients'}{$cid}{'authtimeout'} < $now)
1113 0 0 if (scalar @{$self->{'toremove'};})
1120 0 0 if contains($cid, \@flushed)
1122 0 0 unless length $self->{'clients'}{$cid}{'outbuffer'}
1132 0 0 if (defined $self->{'clients'}{$cid})
1135 0 0 if ($self->{'clients'}{$debugcid}{'mirror'})
1137 0 0 if ($self->{'clients'}{$cid}{'interclacksclient'} and $self->{'interclackslock'})
1143 0 0 if ($self->{'clients'}{$cid}{'interclacksclient'} and $self->{'interclackslock'})
1165 0 0 if (length $self->{'clients'}{$cid}{'buffer'} > 0)
1172 0 0 if ($hasoutbufferwork)
1181 0 0 unless defined $self->{'clients'}{$cid}
1182 0 0 if contains($cid, $self->{'toremove'})
1194 0 0 unless ($readok)
1199 0 0 unless (defined $bytes)
1201 0 0 unless ($Net::Clacks::Server::ERRNO{'EAGAIN'} or $Net::Clacks::Server::ERRNO{'EWOULDBLOCK'})
1207 0 0 if ($bytes == 0)
1216 0 0 unless ($readchunksleft)
1226 0 0 if ($totalread) { }
1234 0 0 $self->{'clients'}{$cid}{'interclacks'} ? :
1236 0 0 if ($self->{'clients'}{$cid}{'failtime'} == 0) { }
0 0 elsif ($now - $self->{'clients'}{$cid}{'failtime'} > $failtimeout) { }
1255 0 0 if ($forceclientid ne "" and $forceclientid ne $cid)
1258 0 0 if ($cid ne $forceclientid and contains($cid, $self->{'toremove'}))
1261 0 0 if (length $self->{'clients'}{$cid}{'outbuffer'}) { }
0 0 elsif ($self->{'clients'}{$cid}{'lastmessage'} + 60 < $now) { }
1269 0 0 unless length $self->{'clients'}{$cid}{'outbuffer'}
1277 0 0 if ($Net::Clacks::Server::EVAL_ERROR)
1282 0 0 unless (defined $written)
1284 0 0 if ($Net::Clacks::Server::ERRNO{'EPIPE'}) { }
0 0 elsif (not $Net::Clacks::Server::ERRNO{'EAGAIN'} || $Net::Clacks::Server::ERRNO{'EWOULDBLOCK'}) { }
1298 0 0 if (not $self->{'clients'}{$cid}{'socket'}->opened or $self->{'clients'}{$cid}{'socket'}->error)
1304 0 0 if (defined $written and $written)
1305 0 0 if (length $self->{'clients'}{$cid}{'outbuffer'} == $written) { }
1323 0 0 if ($self->{'cache'}{$ckey}{'deleted'} and $self->{'cache'}{$ckey}{'cachetime'} < $deletedtime)
1339 0 0 if (not $self->{'cache'}{$ckey}{'deleted'} and $self->{'cache'}{$ckey}{'accesstime'} < $staletime)
1365 0 0 if ($line->{'type'} eq "DEBUG" and $self->{'clients'}{$cid}{'mirror'})
1369 0 0 if ($cid eq $line->{'sender'})
1373 0 0 if ($line->{'type'} ne "DEBUG" and defined $self->{'clients'}{$cid}{'listening'}{$line->{'name'}})
1375 0 0 if ($line->{'type'} eq 'NOTIFY') { }
0 0 elsif ($line->{'type'} eq 'SET') { }
0 0 elsif ($line->{'type'} eq 'SETANDSTORE') { }
1382 0 0 if ($self->{'clients'}{$cid}{'interclacks'}) { }
1396 0 0 if $self->{'clients'}{$cid}{'outmessages'}[0]{'releasetime'} > $now
1399 0 0 if ($outmsg->{'message'} eq 'EXIT') { }
1411 0 0 if (defined $self->{'clients'}{$cid}{'permissions'}{$type} and $self->{'clients'}{$cid}{'permissions'}{$type})
1425 0 0 if ($inmsg =~ /^OVERHEAD\ (.+?)\ (.+)/u)
1432 0 0 if (contains($key, \@flagparts)) { }
1441 0 0 if ($parsedflags{'auth_token'})
1442 0 0 if (defined $self->{'userlist'}{$value}) { }
1464 0 0 unless ($self->{'clients'}{$cid}{'authok'})
1468 0 0 if ($parsedflags{'timestamp'})
1475 0 0 if ($parsedflags{'lock_for_sync'} and $self->{'clients'}{$cid}{'interclacksclient'})
1476 0 0 unless $self->_requirePermission($cid, "interclacks")
1477 0 0 if ($value) { }
1490 0 0 unless (defined $self->{'cache'}{$ckey}{'cachetime'} and &looks_like_number($self->{'cache'}{$ckey}{'cachetime'}))
1493 0 0 unless (defined $self->{'cache'}{$ckey}{'accesstime'} and &looks_like_number($self->{'cache'}{$ckey}{'accesstime'}))
1496 0 0 unless (defined $self->{'cache'}{$ckey}{'deleted'} and $self->{'cache'}{$ckey}{'deleted'})
1499 0 0 unless (defined $self->{'cache'}{$ckey}{'data'})
1504 0 0 if (not $self->{'cache'}{$ckey}{'deleted'}) { }
1515 0 0 if ($parsedflags{'close_all_connections'} and $value)
1516 0 0 unless $self->_requirePermission($cid, "manage")
1518 0 0 if ($self->{'clients'}{$closecid}{'interclacks'} and $parsedflags{'forward_message'})
1527 0 0 if ($parsedflags{'shutdown_service'})
1528 0 0 unless $self->_requirePermission($cid, "manage")
1530 0 0 if ($value > 0)
1535 0 0 if ($parsedflags{'discard_message'})
1538 0 0 if ($parsedflags{'no_logging'})
1542 0 0 if ($parsedflags{'error_message'})
1546 0 0 if ($parsedflags{'set_interclacks_mode'})
1547 0 0 unless $self->_requirePermission($cid, "interclacks")
1551 0 0 if ($value) { }
1568 0 0 unless (defined $self->{'cache'}{$ckey}{'cachetime'} and &looks_like_number($self->{'cache'}{$ckey}{'cachetime'}))
1571 0 0 unless (defined $self->{'cache'}{$ckey}{'accesstime'} and &looks_like_number($self->{'cache'}{$ckey}{'accesstime'}))
1574 0 0 unless (defined $self->{'cache'}{$ckey}{'deleted'} and $self->{'cache'}{$ckey}{'deleted'})
1577 0 0 unless (defined $self->{'cache'}{$ckey}{'data'})
1582 0 0 if (not $self->{'cache'}{$ckey}{'deleted'}) { }
1601 0 0 if $key eq "Z"
1602 0 0 if ($newflags{$overheadflags{$key}})
1606 0 0 if ($newflagstring eq "")
1610 0 0 if ($parsedflags{'forward_message'})
1611 0 0 unless $self->_requirePermission($cid, "write")
1613 0 0 if $cid eq $overheadcid and not $parsedflags{'return_to_sender'}
1628 0 0 if ($inmsg =~ /^KEYSYNC\ (.+?)\ (.+?)\ (.+?)\ (.+?)\=(.*)/u) { }
0 0 elsif ($inmsg =~ /^STORE\ (.+?)\=(.*)/u) { }
0 0 elsif ($inmsg =~ /^SETANDSTORE\ (.+?)\=(.*)/u) { }
0 0 elsif ($inmsg =~ /^RETRIEVE\ (.+)/u) { }
0 0 elsif ($inmsg =~ /^REMOVE\ (.+)/u) { }
0 0 elsif ($inmsg =~ /^INCREMENT\ (.+)/u) { }
0 0 elsif ($inmsg =~ /^DECREMENT\ (.+)/u) { }
0 0 elsif ($inmsg =~ /^KEYLIST/u) { }
0 0 elsif ($inmsg =~ /^CLEARCACHE/u) { }
1629 0 0 unless $self->_requirePermission($cid, "interclacks")
1635 0 0 if ($atimestamp)
1639 0 0 if (not defined $self->{'cache'}{$ckey} or $ctimestamp > $self->{'cache'}{$ckey}{'cachetime'})
1647 0 0 if ($cmode eq "D")
1656 0 0 unless $self->_requirePermission($cid, "write")
1666 0 0 unless $self->_requirePermission($cid, "write")
1683 0 0 unless $self->_requirePermission($cid, "read")
1686 0 0 if (defined $self->{'cache'}{$ckey} and not $self->{'cache'}{$ckey}{'deleted'}) { }
1695 0 0 unless $self->_requirePermission($cid, "write")
1705 0 0 unless $self->_requirePermission($cid, "write")
1708 0 0 if ($ckey =~ /(.+)\=(.+)/u)
1714 0 0 if (defined $self->{'cache'}{$ckey} and not $self->{'cache'}{$ckey}{'deleted'} and &looks_like_number($self->{'cache'}{$ckey}{'data'}))
1727 0 0 unless $self->_requirePermission($cid, "write")
1730 0 0 if ($ckey =~ /(.+)\=(.+)/u)
1736 0 0 if (defined $self->{'cache'}{$ckey} and not $self->{'cache'}{$ckey}{'deleted'} and &looks_like_number($self->{'cache'}{$ckey}{'data'}))
1749 0 0 unless $self->_requirePermission($cid, "read")
1757 0 0 unless $self->_requirePermission($cid, "manage")
1771 0 0 if ($inmsg =~ /^LISTEN\ (.*)/u) { }
0 0 elsif ($inmsg =~ /^UNLISTEN\ (.*)/u) { }
0 0 elsif ($inmsg =~ /^MONITOR/u) { }
0 0 elsif ($inmsg =~ /^UNMONITOR/u) { }
0 0 elsif ($inmsg =~ /^QUIT/u) { }
0 0 elsif ($inmsg =~ /^TIMEOUT/u and $self->{'clients'}{$cid}{'interclacks'}) { }
0 0 elsif ($inmsg =~ /^PING/u) { }
0 0 elsif ($inmsg =~ /^NOPING/u) { }
0 0 elsif ($inmsg =~ /^CLIENTLIST/u) { }
0 0 elsif ($inmsg =~ /^CLIENTDISCONNECT\ (.+)/u) { }
0 0 elsif ($inmsg =~ /^FLUSH\ (.+)/u) { }
1772 0 0 unless $self->_requirePermission($cid, "read")
1776 0 0 unless $self->_requirePermission($cid, "read")
1780 0 0 unless $self->_requirePermission($cid, "manage")
1784 0 0 unless $self->_requirePermission($cid, "manage")
1792 0 0 unless $self->_requirePermission($cid, "interclacks")
1804 0 0 unless $self->_requirePermission($cid, "manage")
1822 0 0 unless $self->_requirePermission($cid, "manage")
1824 0 0 if (defined $self->{'clients'}{$lmccid})
1844 0 0 if ($inmsg =~ /^NOTIFY\ (.*)/u) { }
0 0 elsif ($inmsg =~ /^SET\ (.+?)\=(.*)/u) { }
1845 0 0 unless $self->_requirePermission($cid, "write")
1853 0 0 unless $self->_requirePermission($cid, "write")