Fix result-set leak.
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy / Test / Search / Boolean.pm
index 6fe68fb..8d3e5bb 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Boolean.pm,v 1.1 2006-10-25 10:08:50 sondberg Exp $
+# $Id: Boolean.pm,v 1.5 2007-03-15 11:40:39 mike Exp $
 
 # See the "Main" test package for documentation
 
@@ -24,8 +24,8 @@ sub start {
 
     foreach my $operator (keys %pqfs) {
        $conn->irspy_search_pqf($pqfs{$operator},
-                                {'operator' => $operator},
-                               ZOOM::Event::RECV_SEARCH, \&found,
+                                {'operator' => $operator}, {},
+                               ZOOM::Event::ZEND, \&found,
                                exception => \&error);
     }
 }
@@ -34,12 +34,12 @@ sub start {
 sub found {
     my($conn, $task, $test_args, $event) = @_;
     my $operator = $test_args->{'operator'};
-    my $n = $task->{rs}->size();
 
+    my $n = $task->{rs}->size();
+    $task->{rs}->destroy();
     $conn->log("irspy_test", "search using boolean operator ", $operator,
                              " found $n record", $n==1 ? "" : "s");
-    $conn->record()->store_result('boolean', 'operator' => $operator,
-                                             'ok'       => 1);
+    update($conn, $operator, 1);
 
     return ZOOM::IRSpy::Status::TASK_DONE;
 }
@@ -49,12 +49,20 @@ sub error {
     my($conn, $task, $test_args, $exception) = @_;
     my $operator = $test_args->{'operator'};
 
+    $task->{rs}->destroy();
     $conn->log("irspy_test", "search using boolean operator ", $operator,
                              " had error: ", $exception);
-    $conn->record()->store_result('boolean', 'operator' => $operator,
-                                             'ok'       => 0);
+    update($conn, $operator, 0);
     return ZOOM::IRSpy::Status::TASK_DONE;
 }
 
 
+sub update {
+    my ($conn, $operator, $ok) = @_;
+
+    $conn->record()->store_result('boolean', 'operator' => $operator,
+                                             'ok'       => $ok);
+}
+
+
 1;