From: Christian Grothoff Date: Mon, 5 Mar 2012 00:18:35 +0000 (+0000) Subject: -misc bugfixes X-Git-Tag: initial-import-from-subversion-38251~14441 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=95eb80f56591ba9dfab35b97ba11088a355ef58b;p=oweals%2Fgnunet.git -misc bugfixes --- diff --git a/src/fs/fs_search.c b/src/fs/fs_search.c index b2ccc0e16..5beac0d73 100644 --- a/src/fs/fs_search.c +++ b/src/fs/fs_search.c @@ -1442,6 +1442,30 @@ GNUNET_FS_search_continue (struct GNUNET_FS_SearchContext *sc) } +/** + * Signal stop for the given search result. + * + * @param cls the global FS handle + * @param key the key for the search result (unused) + * @param value the search result to free + * @return GNUNET_OK + */ +static int +search_result_stop (void *cls, const GNUNET_HashCode * key, void *value) +{ + struct GNUNET_FS_SearchContext *sc = cls; + struct GNUNET_FS_SearchResult *sr = value; + struct GNUNET_FS_ProgressInfo pi; + + pi.status = GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED; + pi.value.search.specifics.result_stopped.cctx = sr->client_info; + pi.value.search.specifics.result_stopped.meta = sr->meta; + pi.value.search.specifics.result_stopped.uri = sr->uri; + sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc); + return GNUNET_OK; +} + + /** * Free the given search result. * @@ -1480,11 +1504,6 @@ search_result_free (void *cls, const GNUNET_HashCode * key, void *value) GNUNET_FS_search_stop (sr->update_search); GNUNET_assert (sr->update_search == NULL); } - pi.status = GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED; - pi.value.search.specifics.result_stopped.cctx = sr->client_info; - pi.value.search.specifics.result_stopped.meta = sr->meta; - pi.value.search.specifics.result_stopped.uri = sr->uri; - sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc); GNUNET_break (NULL == sr->client_info); GNUNET_free_non_null (sr->serialization); GNUNET_FS_uri_destroy (sr->uri); @@ -1512,6 +1531,8 @@ GNUNET_FS_search_stop (struct GNUNET_FS_SearchContext *sc) if (sc->top != NULL) GNUNET_FS_end_top (sc->h, sc->top); + GNUNET_CONTAINER_multihashmap_iterate (sc->master_result_map, + &search_result_stop, sc); if (sc->psearch_result != NULL) sc->psearch_result->update_search = NULL; if (sc->serialization != NULL)