-fixing #2402, #2403, #2399, #2398
authorChristian Grothoff <christian@grothoff.org>
Fri, 8 Jun 2012 14:14:21 +0000 (14:14 +0000)
committerChristian Grothoff <christian@grothoff.org>
Fri, 8 Jun 2012 14:14:21 +0000 (14:14 +0000)
src/fs/fs_api.c
src/fs/fs_download.c
src/fs/fs_search.c

index 11195eaa144885c13adf8149d6a2ad057bffefaa..86402048eb4c131aa61de23b9f74ca2b77891202 100644 (file)
@@ -1853,7 +1853,7 @@ GNUNET_FS_search_result_sync_ (struct GNUNET_FS_SearchResult *sr)
                                  NULL) ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH :
                                 GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
                                 sr->sc->serialization, sr->serialization);
-  if (wh == NULL)
+  if (NULL == wh)
   {
     GNUNET_break (0);
     goto cleanup;
@@ -1878,7 +1878,7 @@ GNUNET_FS_search_result_sync_ (struct GNUNET_FS_SearchResult *sr)
     GNUNET_break (0);
     goto cleanup;
   }
-  if ( (sr->uri != NULL) &&
+  if ( (NULL != sr->uri) &&
        (sr->sc->uri->type == ksk) &&
        (GNUNET_OK != GNUNET_BIO_write (wh, sr->keyword_bitmap,
                                       (sr->sc->uri->data.ksk.keywordCount + 7) / 8)) )
@@ -1896,7 +1896,7 @@ GNUNET_FS_search_result_sync_ (struct GNUNET_FS_SearchResult *sr)
   return;
 cleanup:
   GNUNET_free_non_null (uris);
-  if (wh != NULL)
+  if (NULL != wh)
     (void) GNUNET_BIO_write_close (wh);
   remove_sync_file_in_dir (sr->sc->h,
                            (sr->sc->psearch_result ==
index 7c4dccb3c74756ed02ec92ce521acf9a90bd8936..f873885b3d27871f6794c05827a9a093941bcf8c 100644 (file)
@@ -2128,7 +2128,7 @@ GNUNET_FS_download_start (struct GNUNET_FS_Handle *h,
   dc->parent = parent;
   if (NULL != parent)
     GNUNET_CONTAINER_DLL_insert (parent->child_head, parent->child_tail, dc);
-  else
+  else if (0 == (GNUNET_FS_DOWNLOAD_IS_PROBE & options) )
     dc->top =
         GNUNET_FS_make_top (dc->h, &GNUNET_FS_download_signal_suspend_, dc);
   return dc;
index b280670f66d1f60e7041a010d8bba170896bc930..adbb85dc03f9fba9b62822b7d97bcd8d2e34994e 100644 (file)
@@ -1483,6 +1483,17 @@ search_result_stop (void *cls, const GNUNET_HashCode * key, void *value)
   struct GNUNET_FS_SearchResult *sr = value;
   struct GNUNET_FS_ProgressInfo pi;
 
+  if (NULL != sr->probe_ctx)
+  {
+    GNUNET_FS_download_stop (sr->probe_ctx, GNUNET_YES);
+    sr->probe_ctx = NULL;
+  }
+  if (GNUNET_SCHEDULER_NO_TASK != sr->probe_cancel_task)
+  {
+    GNUNET_SCHEDULER_cancel (sr->probe_cancel_task);
+    sr->probe_cancel_task = GNUNET_SCHEDULER_NO_TASK;
+  }
+
   if (NULL != sr->download)
   {
     sr->download->search = NULL;
@@ -1528,14 +1539,12 @@ search_result_free (void *cls, const GNUNET_HashCode * key, void *value)
     GNUNET_FS_search_stop (sr->update_search);
     GNUNET_assert (NULL == sr->update_search);
   }
+  GNUNET_break (NULL == sr->probe_ctx);
+  GNUNET_break (GNUNET_SCHEDULER_NO_TASK == sr->probe_cancel_task);
   GNUNET_break (NULL == sr->client_info);
   GNUNET_free_non_null (sr->serialization);
   GNUNET_FS_uri_destroy (sr->uri);
   GNUNET_CONTAINER_meta_data_destroy (sr->meta);
-  if (NULL != sr->probe_ctx)
-    GNUNET_FS_download_stop (sr->probe_ctx, GNUNET_YES);
-  if (GNUNET_SCHEDULER_NO_TASK != sr->probe_cancel_task)
-    GNUNET_SCHEDULER_cancel (sr->probe_cancel_task);
   GNUNET_free_non_null (sr->keyword_bitmap);
   GNUNET_free (sr);
   return GNUNET_OK;