gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r27333 - gnunet/src/fs


From: gnunet
Subject: [GNUnet-SVN] r27333 - gnunet/src/fs
Date: Thu, 30 May 2013 15:04:02 +0200

Author: grothoff
Date: 2013-05-30 15:04:02 +0200 (Thu, 30 May 2013)
New Revision: 27333

Modified:
   gnunet/src/fs/fs_api.c
   gnunet/src/fs/fs_api.h
   gnunet/src/fs/fs_search.c
Log:
-preparations for fixing #2711


Modified: gnunet/src/fs/fs_api.c
===================================================================
--- gnunet/src/fs/fs_api.c      2013-05-30 00:09:55 UTC (rev 27332)
+++ gnunet/src/fs/fs_api.c      2013-05-30 13:04:02 UTC (rev 27333)
@@ -1965,7 +1965,7 @@
   uris = NULL;
   if (NULL == sr->serialization)
     sr->serialization =
-        make_serialization_file_name_in_dir (sr->sc->h,
+        make_serialization_file_name_in_dir (sr->h,
                                              (sr->sc->psearch_result ==
                                               NULL) ?
                                              GNUNET_FS_SYNC_PATH_MASTER_SEARCH 
:
@@ -1973,7 +1973,7 @@
                                              sr->sc->serialization);
   if (NULL == sr->serialization)
     return;
-  wh = get_write_handle_in_dir (sr->sc->h,
+  wh = get_write_handle_in_dir (sr->h,
                                 (sr->sc->psearch_result ==
                                  NULL) ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH :
                                 GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
@@ -2023,7 +2023,7 @@
   GNUNET_free_non_null (uris);
   if (NULL != wh)
     (void) GNUNET_BIO_write_close (wh);
-  remove_sync_file_in_dir (sr->sc->h,
+  remove_sync_file_in_dir (sr->h,
                            (NULL == sr->sc->psearch_result) 
                           ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH 
                           : GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
@@ -2322,6 +2322,7 @@
   download = NULL;
   update_srch = NULL;
   sr = GNUNET_malloc (sizeof (struct GNUNET_FS_SearchResult));
+  sr->h = sc->h;
   sr->sc = sc;
   sr->serialization = ser;
   if ((GNUNET_OK != GNUNET_BIO_read_string (rh, "result-uri", &uris, 10 * 
1024))
@@ -2485,7 +2486,7 @@
         sr->availability_trials;
     pi.value.search.specifics.resume_result.applicability_rank =
         sr->optional_support;
-    sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+    sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   }
   if (NULL != sr->download)
   {
@@ -2761,7 +2762,7 @@
   pi.value.search.specifics.resume.message = sc->emsg;
   pi.value.search.specifics.resume.is_paused =
       (NULL == sc->client) ? GNUNET_YES : GNUNET_NO;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   GNUNET_CONTAINER_multihashmap_iterate (sc->master_result_map,
                                          &signal_result_resume, sc);
 

Modified: gnunet/src/fs/fs_api.h
===================================================================
--- gnunet/src/fs/fs_api.h      2013-05-30 00:09:55 UTC (rev 27332)
+++ gnunet/src/fs/fs_api.h      2013-05-30 13:04:02 UTC (rev 27333)
@@ -510,8 +510,6 @@
 };
 
 
-
-
 /**
  * Information we store for each search result.
  */
@@ -519,8 +517,14 @@
 {
 
   /**
-   * Search context this result belongs to.
+   * File-sharing context this result belongs to.
    */
+  struct GNUNET_FS_Handle *h;
+
+  /**
+   * Search context this result belongs to; can be NULL
+   * for probes that come from a directory result.
+   */
   struct GNUNET_FS_SearchContext *sc;
 
   /**
@@ -819,11 +823,13 @@
  * call the callback.
  *
  * @param pi structure to fill in
+ * @param h file-sharing handle
  * @param sc overall search context
  * @return value returned by the callback
  */
 void *
 GNUNET_FS_search_make_status_ (struct GNUNET_FS_ProgressInfo *pi,
+                              struct GNUNET_FS_Handle *h,
                                struct GNUNET_FS_SearchContext *sc);
 
 
@@ -1992,6 +1998,9 @@
 };
 
 
+/**
+ * Handle to one of our namespaces.
+ */
 struct GNUNET_FS_Namespace
 {
 

Modified: gnunet/src/fs/fs_search.c
===================================================================
--- gnunet/src/fs/fs_search.c   2013-05-30 00:09:55 UTC (rev 27332)
+++ gnunet/src/fs/fs_search.c   2013-05-30 13:04:02 UTC (rev 27333)
@@ -39,24 +39,29 @@
  * call the callback.
  *
  * @param pi structure to fill in
+ * @param h file-sharing handle
  * @param sc overall search context
  * @return value returned by the callback
  */
 void *
 GNUNET_FS_search_make_status_ (struct GNUNET_FS_ProgressInfo *pi,
+                              struct GNUNET_FS_Handle *h,
                                struct GNUNET_FS_SearchContext *sc)
 {
   void *ret;
 
   pi->value.search.sc = sc;
-  pi->value.search.cctx = sc->client_info;
+  pi->value.search.cctx = (NULL != sc) ? sc->client_info : NULL;
   pi->value.search.pctx =
-      (NULL == sc->psearch_result) ? NULL : sc->psearch_result->client_info;
-  pi->value.search.query = sc->uri;
-  pi->value.search.duration =
-      GNUNET_TIME_absolute_get_duration (sc->start_time);
-  pi->value.search.anonymity = sc->anonymity;
-  ret = sc->h->upcb (sc->h->upcb_cls, pi);
+    ((NULL == sc) || (NULL == sc->psearch_result)) 
+    ? NULL 
+    : sc->psearch_result->client_info;
+  pi->value.search.query = (NULL != sc) ? sc->uri : NULL;
+  pi->value.search.duration = (NULL != sc) 
+    ? GNUNET_TIME_absolute_get_duration (sc->start_time)
+    : GNUNET_TIME_UNIT_ZERO;
+  pi->value.search.anonymity = (NULL != sc) ? sc->anonymity : 0;
+  ret = h->upcb (h->upcb_cls, pi);
   return ret;
 }
 
@@ -102,7 +107,7 @@
   pi.value.search.specifics.result.uri = sr->uri;
   pi.value.search.specifics.result.result = sr;
   pi.value.search.specifics.result.applicability_rank = sr->optional_support;
-  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
 }
 
 
@@ -130,7 +135,7 @@
   pi.value.search.specifics.update.applicability_rank = sr->optional_support;
   pi.value.search.specifics.update.current_probe_time 
     = GNUNET_TIME_absolute_get_duration (sr->probe_active_time);
-  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
 }
 
 
@@ -194,7 +199,7 @@
   pi.value.search.specifics.update.applicability_rank = sr->optional_support;
   pi.value.search.specifics.update.current_probe_time 
     = GNUNET_TIME_absolute_get_duration (sr->probe_active_time);
-  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sr->sc);
+  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sr->h, sr->sc);
   GNUNET_FS_search_start_probe_ (sr);
 }
 
@@ -395,7 +400,7 @@
     return;
   if (NULL != sr->download)
     return;
-  if (0 == (sr->sc->h->flags & GNUNET_FS_FLAGS_DO_PROBES))
+  if (0 == (sr->h->flags & GNUNET_FS_FLAGS_DO_PROBES))
     return;
   if (sr->availability_trials > AVAILABILITY_TRIALS_MAX)
     return;
@@ -420,10 +425,10 @@
              (unsigned long long) off,
              sr);
   sr->remaining_probe_time =
-      GNUNET_TIME_relative_multiply (sr->sc->h->avg_block_latency,
+      GNUNET_TIME_relative_multiply (sr->h->avg_block_latency,
                                      2 * (1 + sr->availability_trials));
   sr->probe_ctx =
-      GNUNET_FS_download_start (sr->sc->h, sr->uri, sr->meta, NULL, NULL, off,
+      GNUNET_FS_download_start (sr->h, sr->uri, sr->meta, NULL, NULL, off,
                                 len, sr->sc->anonymity,
                                 GNUNET_FS_DOWNLOAD_NO_TEMPORARIES |
                                 GNUNET_FS_DOWNLOAD_IS_PROBE, sr, NULL);
@@ -473,6 +478,7 @@
   if (NULL == sr)
   {
     sr = GNUNET_malloc (sizeof (struct GNUNET_FS_SearchResult));
+    sr->h = sc->h;
     sr->sc = sc;
     sr->uri = GNUNET_FS_uri_dup (uri);
     sr->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
@@ -552,6 +558,7 @@
                                                   (void *) uri))
     return;                     /* duplicate result */
   sr = GNUNET_malloc (sizeof (struct GNUNET_FS_SearchResult));
+  sr->h = sc->h;
   sr->sc = sc;
   sr->uri = GNUNET_FS_uri_dup (uri);
   sr->meta = GNUNET_CONTAINER_meta_data_duplicate (meta);
@@ -1191,7 +1198,7 @@
   }
   GNUNET_FS_search_sync_ (sc);
   pi.status = GNUNET_FS_STATUS_SEARCH_START;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   return sc;
 }
 
@@ -1342,7 +1349,7 @@
   pi.value.search.specifics.result_suspend.cctx = sr->client_info;
   pi.value.search.specifics.result_suspend.meta = sr->meta;
   pi.value.search.specifics.result_suspend.uri = sr->uri;
-  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   GNUNET_break (NULL == sr->client_info);
   GNUNET_free_non_null (sr->serialization);
   GNUNET_FS_uri_destroy (sr->uri);
@@ -1375,7 +1382,7 @@
   GNUNET_CONTAINER_multihashmap_iterate (sc->master_result_map,
                                          &search_result_suspend, sc);
   pi.status = GNUNET_FS_STATUS_SEARCH_SUSPEND;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   GNUNET_break (NULL == sc->client_info);
   if (sc->task != GNUNET_SCHEDULER_NO_TASK)
     GNUNET_SCHEDULER_cancel (sc->task);
@@ -1442,7 +1449,7 @@
   GNUNET_CONTAINER_multihashmap_iterate (sc->master_result_map,
                                          &search_result_freeze_probes, sc);
   pi.status = GNUNET_FS_STATUS_SEARCH_PAUSED;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
 }
 
 
@@ -1461,7 +1468,7 @@
   do_reconnect (sc, NULL);
   GNUNET_FS_search_sync_ (sc);
   pi.status = GNUNET_FS_STATUS_SEARCH_CONTINUED;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   GNUNET_CONTAINER_multihashmap_iterate (sc->master_result_map,
                                          &search_result_resume_probes, sc);
 }
@@ -1520,7 +1527,7 @@
   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);
+  sr->client_info = GNUNET_FS_search_make_status_ (&pi, sr->h, sc);
   return GNUNET_OK;
 }
 
@@ -1588,7 +1595,7 @@
     GNUNET_free (sc->serialization);
   }
   pi.status = GNUNET_FS_STATUS_SEARCH_STOPPED;
-  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
+  sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc->h, sc);
   GNUNET_break (NULL == sc->client_info);
   if (GNUNET_SCHEDULER_NO_TASK != sc->task)
     GNUNET_SCHEDULER_cancel (sc->task);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]