From b463799cce828b69dc55f02b4280b67010dd9f77 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 16 Jun 2011 13:46:20 +0000 Subject: fix --- src/fs/gnunet-service-fs_pr.c | 54 ++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/src/fs/gnunet-service-fs_pr.c b/src/fs/gnunet-service-fs_pr.c index 2a6897cfb..d8c4340fb 100644 --- a/src/fs/gnunet-service-fs_pr.c +++ b/src/fs/gnunet-service-fs_pr.c @@ -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; -- cgit v1.2.3