(sitka) [RT18218] fix z39.50 timeout Staff Client network error user/lwhalen/RT18218_z3950_timeout
authorLiam Whalen <liam.whalen@bc.libraries.coop>
Tue, 7 Jan 2014 03:22:50 +0000 (19:22 -0800)
committerLiam Whalen <liam.whalen@bc.libraries.coop>
Tue, 7 Jan 2014 03:22:50 +0000 (19:22 -0800)
When doing a z39.50 search in the staff client, if a z39.50 server
timesout, then the result set returned is null.  Currenlty, this breaks
the code on the server and sends a Network Error to the staff client.

This code adds a check to ensure that the results are populated in order
to avoid creating the server error.

Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Z3950.pm

index 1f17a0c..88475f7 100644 (file)
@@ -295,9 +295,12 @@ sub do_class_search {
         my $ev = $connections[$index - 1]->last_event();
         $logger->debug("z3950: Received event $ev");
         if ($ev == OpenILS::Utils::ZClient::EVENT_END()) {
-            my $munged = process_results( $results[$index - 1], $$args{limit}, $$args{offset}, $$args{service}[$index -1] );
-            $$munged{service} = $$args{service}[$index - 1];
-            $conn->respond($munged);
+            #check to make sure a result was returned otherwise an undef results[] value breaks process_results
+            if ($results[$index -1]) {
+                my $munged = process_results( $results[$index - 1], $$args{limit}, $$args{offset}, $$args{service}[$index -1] );
+                $$munged{service} = $$args{service}[$index - 1];
+                $conn->respond($munged);
+            }
         }
     }