From 99b5ef197b23ea72220ef568b38f0f3c97943293 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 21 Jun 2016 20:26:59 +0200 Subject: No Socketmap protocol in Spline::Srs Better error handling. --- Spline/Socketmap/Srs.pm | 27 +++++++++++++++++++++++++-- Spline/Srs.pm | 22 +++++++--------------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/Spline/Socketmap/Srs.pm b/Spline/Socketmap/Srs.pm index c4a9623..785fd04 100644 --- a/Spline/Socketmap/Srs.pm +++ b/Spline/Socketmap/Srs.pm @@ -9,8 +9,31 @@ use Spline::Srs; sub lookup($$) { my $self = shift; my ($map, $key) = @_; + my $result; - $self->{srs}->handle($map, $key); + eval { + $result = $self->{srs}->handle($map, $key); + }; + + my $err = $@; + if ($err) { + if ($err =~ m/(Invalid hash|Invalid timestamp)/) { + $self->log(0, "Error: $err"); + return "PERM $err"; + } + } + + if (defined $result) { + if ($result eq $key) { + $self->log(1, 'Not mapping "' . $key . '"'); + return 'NOTFOUND '; + } + + $self->log(1, 'Mapping "' . $key . '" to "' . $result . '"'); + return "OK $result"; + } + + return 'NOTFOUND '; } sub options($$) { @@ -70,7 +93,7 @@ sub post_configure_hook { close($file); } else { - $self->log(1, 'ERROR: Cannot open secret_file: "' . $filename . '"'); + $self->log(0, 'ERROR: Cannot open secret_file: "' . $filename . '"'); } } diff --git a/Spline/Srs.pm b/Spline/Srs.pm index 597e3ed..ed83bac 100644 --- a/Spline/Srs.pm +++ b/Spline/Srs.pm @@ -99,15 +99,12 @@ sub reverse($) { my $err = $@; if ($err) { - if ($err =~ m/Invalid hash/) { - my $fallback = replace_srsalt_chars($addr); - return $self->{srs}->reverse($fallback); - } - - die $err; + die $err unless $err =~ m/Invalid hash/; + $addr = replace_srsalt_chars($addr); + } + else { + return $result; } - - return $result; } return $self->{srs}->reverse($addr); @@ -125,15 +122,10 @@ sub handle($$) { $result = $self->reverse($key); } else { - return "PERM Invalid request"; + die 'Invalid request'; } - if (!defined($result)) { - return 'NOTFOUND '; - } - else { - return 'OK ' . $result; - } + return $result; } 1; -- cgit v1.2.3-1-g7c22