Experiment with check for dead sessions.
[idzebra-moved-to-github.git] / index / zsets.c
index 9b045d4..74a4733 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zsets.c,v 1.116 2007-01-16 15:01:15 adam Exp $
+/* $Id: zsets.c,v 1.118 2007-01-17 13:22:53 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -146,11 +146,10 @@ static ZEBRA_RES resultSetSearch(ZebraHandle zh, NMEM nmem, NMEM rset_nmem,
 }
 
 
-ZEBRA_RES resultSetAddRPN (ZebraHandle zh, NMEM m, Z_RPNQuery *rpn,
-                          int num_bases, char **basenames,
-                          const char *setname,
-                           zint *hits, int *estimated_hit_count,
-                           int *partial_resultset)
+ZEBRA_RES resultSetAddRPN(ZebraHandle zh, NMEM m, Z_RPNQuery *rpn,
+                          int num_bases, char **basenames,
+                          const char *setname,
+                          zint *hits, int *estimated_hit_count)
 {
     ZebraSet zebraSet;
     int i;
@@ -158,7 +157,6 @@ ZEBRA_RES resultSetAddRPN (ZebraHandle zh, NMEM m, Z_RPNQuery *rpn,
 
     *hits = 0;
     *estimated_hit_count = 0;
-    *partial_resultset = 0;
 
     zebraSet = resultSetAdd(zh, setname, 1);
     if (!zebraSet)
@@ -1030,6 +1028,15 @@ ZEBRA_RES resultSetRank(ZebraHandle zh, ZebraSet zebraSet,
                key_logdump_txt(log_level_searchhits, &key, termid->name);
            if (this_sys != psysno) 
            {   /* new record .. */
+                if (zh->busy_handler_func)
+                {
+                    if (zh->busy_handler_func(zh->busy_handler_data))
+                    {
+                        yaz_log(YLOG_LOG, "Session end. Stop search");
+                        zebraSet->estimated_hit_count = 1;
+                        break;
+                    }
+                }
                if (rfd->counted_items > rset->hits_limit)
                 {
                     zebraSet->estimated_hit_count = 1;