aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterServer
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MasterServer')
-rwxr-xr-xlib/MasterServer/Core/Logging.pm41
-rwxr-xr-xlib/MasterServer/TCP/Syncer.pm2
-rwxr-xr-xlib/MasterServer/TCP/UCCAppletQuery.pm2
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 {