fix
authorChristian Grothoff <christian@grothoff.org>
Thu, 16 Jun 2011 13:46:20 +0000 (13:46 +0000)
committerChristian Grothoff <christian@grothoff.org>
Thu, 16 Jun 2011 13:46:20 +0000 (13:46 +0000)
src/fs/gnunet-service-fs_pr.c

index 2a6897cfb8b2a721d0af6a0ffee1a86f00a8ba49..d8c4340fba1159545644215f96dfa782af2d7690 100644 (file)
@@ -1150,33 +1150,43 @@ process_local_reply (void *cls,
   struct ProcessReplyClosure prq;
   GNUNET_HashCode query;
   unsigned int old_rf;
-  
-  pr->qe = NULL;
+
   GNUNET_SCHEDULER_cancel (pr->warn_task);
   pr->warn_task = GNUNET_SCHEDULER_NO_TASK;
-  if (GNUNET_NO == pr->have_first_uid)
-    {
-      pr->first_uid = uid;
-      pr->have_first_uid = 1;
-    }
-  else
+  if (NULL != pr->qe)
     {
-      if (uid == pr->first_uid)
+      pr->qe = NULL;
+      if (NULL == key)
        {
          GNUNET_STATISTICS_update (GSF_stats,
-                                   gettext_noop ("# Datastore lookups concluded"),
+                                   gettext_noop ("# Datastore lookups concluded (no results)"),
                                    1,
                                    GNUNET_NO);
-         key = NULL; /* all replies seen! */
        }
-      pr->have_first_uid++;
-      if (pr->have_first_uid > MAX_RESULTS)
+      if (GNUNET_NO == pr->have_first_uid)
        {
-         GNUNET_STATISTICS_update (GSF_stats,
-                                   gettext_noop ("# Datastore lookups aborted (more than MAX_RESULTS)"),
-                                   1,
-                                   GNUNET_NO);
-         key = NULL; /* all replies seen! */
+         pr->first_uid = uid;
+         pr->have_first_uid = 1;
+       }
+      else
+       {
+         if ( (uid == pr->first_uid) && (key != NULL) )
+           {
+             GNUNET_STATISTICS_update (GSF_stats,
+                                       gettext_noop ("# Datastore lookups concluded (seen all)"),
+                                       1,
+                                       GNUNET_NO);
+             key = NULL; /* all replies seen! */
+           }
+         pr->have_first_uid++;
+         if ( (pr->have_first_uid > MAX_RESULTS) && (key != NULL) )
+           {
+             GNUNET_STATISTICS_update (GSF_stats,
+                                       gettext_noop ("# Datastore lookups aborted (more than MAX_RESULTS)"),
+                                       1,
+                                       GNUNET_NO);
+             key = NULL; /* all replies seen! */
+           }
        }
     }
   if (NULL == key)
@@ -1250,7 +1260,13 @@ process_local_reply (void *cls,
                                         &process_local_reply,
                                         pr);
       if (NULL != pr->qe)
-       return; /* we're done */        
+       {
+         GNUNET_STATISTICS_update (GSF_stats,
+                                   gettext_noop ("# Datastore lookups concluded (error queueing)"),
+                                   1,
+                                   GNUNET_NO);
+         return; /* we're done */      
+       }
       goto check_error_and_continue;
     }
   old_rf = pr->public_data.results_found;