[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r27333 - gnunet/src/fs,
gnunet <=