X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FConnection.pm;h=0d68df2a097561d55d7f4eb2cdb745b8fa2e5060;hp=8d77f5fb63de6b7b28698c35535fc081db91526d;hb=8f2e5d627d5d64808520e6dd8fff91e80dfc8b1b;hpb=9a26de6de61feb7e4e7850b3ded54bc1501d34ed diff --git a/lib/ZOOM/IRSpy/Connection.pm b/lib/ZOOM/IRSpy/Connection.pm index 8d77f5f..0d68df2 100644 --- a/lib/ZOOM/IRSpy/Connection.pm +++ b/lib/ZOOM/IRSpy/Connection.pm @@ -1,4 +1,4 @@ -# $Id: Connection.pm,v 1.14 2007-05-01 15:32:51 mike Exp $ +# $Id: Connection.pm,v 1.20 2007-12-20 12:31:09 mike Exp $ package ZOOM::IRSpy::Connection; @@ -47,9 +47,22 @@ sub create { $this->{tasks} = []; my $query = cql_target($id); - my $rs = $irspy->{conn}->search(new ZOOM::Query::CQL($query)); + my $rs; + eval { + $rs = $irspy->{conn}->search(new ZOOM::Query::CQL($query)); + }; if ($@) { + # This should be a "can't happen", but junk entries such as + # //lucasportal.info/blogs/payday-usa">'night:G'night/Illepeliz + # (yes, really) yield BIB-1 diagnostic 108 "Malformed query" + warn "registry search for record '$id' had error: '$@'"; + return undef; + } my $n = $rs->size(); - $this->log("irspy", "query '$query' found $n records"); + $this->log("irspy", "query '$query' found $n record", $n==1 ? "" : "s"); + ### More than 1 hit is always an error and indicates duplicate + # records in the database; no hits is fine for a new target + # being probed for the first time, but not if the connection is + # being created as part of an "all known targets" scan. my $zeerex; $zeerex = render_record($rs, 0, "zeerex") if $n > 0; $this->{record} = new ZOOM::IRSpy::Record($this, $target, $zeerex); @@ -136,13 +149,14 @@ sub irspy_search { my $this = shift(); my($qtype, $qstr, $udata, $options, %cb) = @_; + #warn "calling $this->irspy_search(", join(", ", @_), ")\n"; $this->add_task(new ZOOM::IRSpy::Task::Search ($qtype, $qstr, $this, $udata, $options, %cb)); } # Wrapper for backwards compatibility -sub irspy_search_cql { +sub irspy_search_pqf { my $this = shift(); return $this->irspy_search("pqf", @_); }