diff options
Diffstat (limited to 'lib')
| -rwxr-xr-x | lib/MasterServer/Core/Logging.pm | 41 | ||||
| -rwxr-xr-x | lib/MasterServer/TCP/Syncer.pm | 2 | ||||
| -rwxr-xr-x | lib/MasterServer/TCP/UCCAppletQuery.pm | 2 |
3 files changed, 42 insertions, 3 deletions
diff --git a/lib/MasterServer/Core/Logging.pm b/lib/MasterServer/Core/Logging.pm index 5aaf683..e8631de 100755 --- a/lib/MasterServer/Core/Logging.pm +++ b/lib/MasterServer/Core/Logging.pm @@ -3,10 +3,49 @@ package MasterServer::Core::Logging; use strict; use warnings; +use Switch; use POSIX qw/strftime/; use Exporter 'import'; -our @EXPORT = qw| log |; +our @EXPORT = qw| log error |; + +################################################################################ +## Split up errors in multiple log types for suppressing +## args: $self, message +################################################################################ +sub error { + my ($self, $error, $instigator) = @_; + + # which error? + switch ($error) { + + # connection timed out + case m/Connection timed out/i { + $self->log("timeout", "on $instigator."); + } + + # connection reset by peer + case m/Connection reset by peer/i { + $self->log("reset", "on $instigator."); + } + + # connection refused + case m/Connection refused/i { + $self->log("refused", "on $instigator."); + } + + # no such device or address + case m/No such device or address/i { + $self->log("nodevice", "on $instigator."); + } + + # if all else fails + else { + $self->log("error", "$error on $instigator."); + } + } +} + ################################################################################ ## Log to file and print to screen. diff --git a/lib/MasterServer/TCP/Syncer.pm b/lib/MasterServer/TCP/Syncer.pm index bfe3d78..3e903e0 100755 --- a/lib/MasterServer/TCP/Syncer.pm +++ b/lib/MasterServer/TCP/Syncer.pm @@ -30,7 +30,7 @@ sub sync_with_master { connect => [$ms->{ip} => $ms->{tcp}], timeout => 4, poll => 'r', - on_error => sub {$self->log("error","$! on $ms->{ip} $ms->{tcp}"); $handle->destroy;}, + on_error => sub {$self->error($!, "$ms->{ip}:$ms->{port}"); $handle->destroy;}, on_eof => sub {$self->process_sync_list($sync_list, $ms); $handle->destroy;}, on_read => sub { # receive and clear buffer diff --git a/lib/MasterServer/TCP/UCCAppletQuery.pm b/lib/MasterServer/TCP/UCCAppletQuery.pm index e3eb587..7637e9f 100755 --- a/lib/MasterServer/TCP/UCCAppletQuery.pm +++ b/lib/MasterServer/TCP/UCCAppletQuery.pm @@ -29,7 +29,7 @@ sub query_applet { connect => [$ms->{ip} => $ms->{port}], timeout => 5, poll => 'r', - on_error => sub {$self->log("error", "$! on $ms->{ip}:$ms->{port}."); $handle->destroy;}, + on_error => sub {$self->error($!, "$ms->{ip}:$ms->{port}"); $handle->destroy;}, on_eof => sub {$self->process_ucc_applet_query($master_list, $ms); $handle->destroy;}, on_read => sub { |
