diff --git a/C4/Search.pm b/C4/Search.pm index c42ca1d84f..ab0d4070c9 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -217,19 +217,31 @@ sub SimpleSearch { # Connect & Search for ( my $i = 0 ; $i < @servers ; $i++ ) { - $zconns[$i] = C4::Context->Zconn( $servers[$i], 1 ); - $tmpresults[$i] = - $zconns[$i] - ->search( new ZOOM::Query::CCL2RPN( $query, $zconns[$i] ) ); + eval { + $zconns[$i] = C4::Context->Zconn( $servers[$i], 1 ); + $tmpresults[$i] = + $zconns[$i] + ->search( new ZOOM::Query::CCL2RPN( $query, $zconns[$i] ) ); + + # getting error message if one occured. + my $error = + $zconns[$i]->errmsg() . " (" + . $zconns[$i]->errcode() . ") " + . $zconns[$i]->addinfo() . " " + . $zconns[$i]->diagset(); - # getting error message if one occured. - my $error = - $zconns[$i]->errmsg() . " (" - . $zconns[$i]->errcode() . ") " - . $zconns[$i]->addinfo() . " " - . $zconns[$i]->diagset(); - - return ( $error, undef ) if $zconns[$i]->errcode(); + return ( $error, undef ) if $zconns[$i]->errcode(); + }; + if ($@) { + # caught a ZOOM::Exception + my $error = + $@->message() . " (" + . $@->code() . ") " + . $@->addinfo() . " " + . $@->diagset(); + warn $error; + return ( $error, undef ); + } } my $hits; my $ev;