version 1.88, 2008/10/06 10:55:46
|
version 1.93, 2011/01/10 12:23:00
|
Line 85 my $ClientConnection = 0; # Uniquifier f
|
Line 85 my $ClientConnection = 0; # Uniquifier f
|
|
|
my $DebugLevel = 0; |
my $DebugLevel = 0; |
my $NextDebugLevel= 2; # So Sigint can toggle this. |
my $NextDebugLevel= 2; # So Sigint can toggle this. |
my $IdleTimeout= 600; # Wait 10 minutes before pruning connections. |
my $IdleTimeout= 7200; # Wait two hours before pruning connections. |
|
|
my $LogTransactions = 0; # When True, all transactions/replies get logged. |
my $LogTransactions = 0; # When True, all transactions/replies get logged. |
my $executable = $0; # Get the full path to me. |
my $executable = $0; # Get the full path to me. |
Line 441 Trigger disconnections of idle sockets.
|
Line 441 Trigger disconnections of idle sockets.
|
|
|
sub SetupTimer { |
sub SetupTimer { |
Debug(6, "SetupTimer"); |
Debug(6, "SetupTimer"); |
Event->timer(interval => 1, cb => \&Tick ); |
Event->timer(interval => 1, cb => \&Tick, |
|
hard => 1); |
} |
} |
|
|
=pod |
=pod |
Line 761 sub KillSocket {
|
Line 762 sub KillSocket {
|
delete ($ActiveTransactions{$Socket}); |
delete ($ActiveTransactions{$Socket}); |
} |
} |
if(exists($ActiveConnections{$Socket})) { |
if(exists($ActiveConnections{$Socket})) { |
|
$ActiveConnections{$Socket}->cancel; |
delete($ActiveConnections{$Socket}); |
delete($ActiveConnections{$Socket}); |
$ConnectionCount--; |
$ConnectionCount--; |
if ($ConnectionCount < 0) { $ConnectionCount = 0; } |
if ($ConnectionCount < 0) { $ConnectionCount = 0; } |
Line 772 sub KillSocket {
|
Line 774 sub KillSocket {
|
EmptyQueue(); |
EmptyQueue(); |
CloseAllLondConnections; # Should all already be closed but... |
CloseAllLondConnections; # Should all already be closed but... |
} |
} |
|
UpdateStatus(); |
} |
} |
|
|
=pod |
=pod |
Line 1206 sub MakeLondConnection {
|
Line 1209 sub MakeLondConnection {
|
&GetServerPort(), |
&GetServerPort(), |
&GetHostId()); |
&GetHostId()); |
|
|
if($Connection eq undef) { # Needs to be more robust later. |
if($Connection eq undef) { |
Log("CRITICAL","Failed to make a connection with lond."); |
Log("CRITICAL","Failed to make a connection with lond."); |
$ConnectionRetriesLeft--; |
$ConnectionRetriesLeft--; |
return 0; # Failure. |
return 0; # Failure. |
Line 1730 sub ChildProcess {
|
Line 1733 sub ChildProcess {
|
cb => \&ToggleDebug, |
cb => \&ToggleDebug, |
data => "INT"); |
data => "INT"); |
|
|
|
# Block the pipe signal we'll get when the socket disconnects. We detect |
|
# socket disconnection via send/receive failures. On disconnect, the |
|
# socket becomes readable .. which will force the disconnect detection. |
|
|
|
my $set = POSIX::SigSet->new(SIGPIPE); |
|
sigprocmask(SIG_BLOCK, $set); |
|
|
# Figure out if we got passed a socket or need to open one to listen for |
# Figure out if we got passed a socket or need to open one to listen for |
# client requests. |
# client requests. |
|
|
Line 1773 sub CreateChild {
|
Line 1783 sub CreateChild {
|
my $sigset = POSIX::SigSet->new(SIGINT); |
my $sigset = POSIX::SigSet->new(SIGINT); |
sigprocmask(SIG_BLOCK, $sigset); |
sigprocmask(SIG_BLOCK, $sigset); |
$RemoteHost = $host; |
$RemoteHost = $host; |
|
ShowStatus('Parent keeping the flock'); # Update time in status message. |
Log("CRITICAL", "Forking server for ".$host); |
Log("CRITICAL", "Forking server for ".$host); |
my $pid = fork; |
my $pid = fork; |
if($pid) { # Parent |
if($pid) { # Parent |