summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-06-21 20:26:59 +0200
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-06-21 20:26:59 +0200
commit99b5ef197b23ea72220ef568b38f0f3c97943293 (patch)
treeb504975d07a5536e517c4b25805daae5eb563c49
parentea57f7b2b7b295a06c6cb361f5c1e61f78e7b456 (diff)
downloadsrs-99b5ef197b23ea72220ef568b38f0f3c97943293.tar.gz
srs-99b5ef197b23ea72220ef568b38f0f3c97943293.tar.bz2
srs-99b5ef197b23ea72220ef568b38f0f3c97943293.zip
No Socketmap protocol in Spline::Srs
Better error handling.
-rw-r--r--Spline/Socketmap/Srs.pm27
-rw-r--r--Spline/Srs.pm22
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;