X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FTest%2FPing.pm;h=5c93fb7d6e46d614f6178e27b6d0bd371b46efad;hb=49b4c8568a62fa6935ecad17881be2da15959b03;hp=51283020fce5a24d784074b62ddf22ff836abbf2;hpb=3c4477e7a38ce6badda0cd3a1242c090fa128022;p=irspy-moved-to-github.git diff --git a/lib/ZOOM/IRSpy/Test/Ping.pm b/lib/ZOOM/IRSpy/Test/Ping.pm index 5128302..5c93fb7 100644 --- a/lib/ZOOM/IRSpy/Test/Ping.pm +++ b/lib/ZOOM/IRSpy/Test/Ping.pm @@ -1,4 +1,4 @@ -# $Id: Ping.pm,v 1.21 2007-03-02 11:56:15 mike Exp $ +# $Id: Ping.pm,v 1.23 2007-04-30 11:26:57 mike Exp $ # See the "Main" test package for documentation @@ -55,6 +55,9 @@ sub maybe_connected { foreach my $opt (qw(serverImplementationId serverImplementationName serverImplementationVersion)) { + my $val = $conn->option($opt); + next if !defined $val; # not defined for SRU, for example + # There doesn't seem to be a reliable way to tell what # character set the server uses for these. At least one # server (z3950.bcl.jcyl.es:210/AbsysCCFL) returns an ISO @@ -67,9 +70,11 @@ sub maybe_connected { # ASCII-Latin-1, and try to convert to UTF-8. If that # conversion works, fine; if not, assume it's because the # string was already UTF-8, so use it as is. - my $val = $conn->option($opt); - my $maybe = $conv->convert($val); - if (defined $conv->retval() && $maybe ne $val) { + Text::Iconv->raise_error(1); + my $maybe; + eval { + $maybe = $conv->convert($val); + }; if (!$@ && $maybe ne $val) { $conn->log("irspy", "converted '$val' from Latin-1 to UTF-8"); $val = $maybe; }