diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-12-05 20:58:48 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-12-05 20:58:48 +0000 |
commit | b66f2c50a63b8d1242eb5583fd49b33abee4183c (patch) | |
tree | 374ed9478540fec75dd03c3e712d14174d98c541 /src/fs/fs_search.c | |
parent | fbdce8d7a2ec33531a6c1f27bfccf81865bc9a7d (diff) | |
download | gnunet-b66f2c50a63b8d1242eb5583fd49b33abee4183c.tar.gz gnunet-b66f2c50a63b8d1242eb5583fd49b33abee4183c.zip |
-fix availability rank calculation in probe signal, immediately signal failed probes
Diffstat (limited to 'src/fs/fs_search.c')
-rw-r--r-- | src/fs/fs_search.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/fs/fs_search.c b/src/fs/fs_search.c index 5e2ce3604..89a99ec03 100644 --- a/src/fs/fs_search.c +++ b/src/fs/fs_search.c | |||
@@ -186,9 +186,10 @@ signal_probe_result (struct GNUNET_FS_SearchResult *sr) | |||
186 | pi.value.search.specifics.update.cctx = sr->client_info; | 186 | pi.value.search.specifics.update.cctx = sr->client_info; |
187 | pi.value.search.specifics.update.meta = sr->meta; | 187 | pi.value.search.specifics.update.meta = sr->meta; |
188 | pi.value.search.specifics.update.uri = sr->uri; | 188 | pi.value.search.specifics.update.uri = sr->uri; |
189 | pi.value.search.specifics.update.availability_rank = sr->availability_success; | 189 | pi.value.search.specifics.update.availability_rank |
190 | pi.value.search.specifics.update.availability_certainty = | 190 | = 2 * sr->availability_success - sr->availability_trials; |
191 | sr->availability_trials; | 191 | pi.value.search.specifics.update.availability_certainty |
192 | = sr->availability_trials; | ||
192 | pi.value.search.specifics.update.applicability_rank = sr->optional_support; | 193 | pi.value.search.specifics.update.applicability_rank = sr->optional_support; |
193 | sr->client_info = GNUNET_FS_search_make_status_ (&pi, sr->sc); | 194 | sr->client_info = GNUNET_FS_search_make_status_ (&pi, sr->sc); |
194 | GNUNET_FS_search_start_probe_ (sr); | 195 | GNUNET_FS_search_start_probe_ (sr); |
@@ -310,11 +311,19 @@ GNUNET_FS_search_probe_progress_ (void *cls, | |||
310 | sr = NULL; | 311 | sr = NULL; |
311 | break; | 312 | break; |
312 | case GNUNET_FS_STATUS_DOWNLOAD_ACTIVE: | 313 | case GNUNET_FS_STATUS_DOWNLOAD_ACTIVE: |
313 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == sr->probe_cancel_task); | 314 | if (GNUNET_SCHEDULER_NO_TASK == sr->probe_cancel_task) |
314 | sr->probe_active_time = GNUNET_TIME_absolute_get (); | 315 | { |
315 | sr->probe_cancel_task = | 316 | sr->probe_active_time = GNUNET_TIME_absolute_get (); |
317 | sr->probe_cancel_task = | ||
316 | GNUNET_SCHEDULER_add_delayed (sr->remaining_probe_time, | 318 | GNUNET_SCHEDULER_add_delayed (sr->remaining_probe_time, |
317 | &probe_failure_handler, sr); | 319 | &probe_failure_handler, sr); |
320 | } | ||
321 | else | ||
322 | { | ||
323 | /* should only happen if the cancel task was already | ||
324 | created on 'DOWNLOAD_INACTIVE' as we were out of time */ | ||
325 | GNUNET_break (0 == sr->remaining_probe_time.rel_value); | ||
326 | } | ||
318 | break; | 327 | break; |
319 | case GNUNET_FS_STATUS_DOWNLOAD_INACTIVE: | 328 | case GNUNET_FS_STATUS_DOWNLOAD_INACTIVE: |
320 | if (GNUNET_SCHEDULER_NO_TASK != sr->probe_cancel_task) | 329 | if (GNUNET_SCHEDULER_NO_TASK != sr->probe_cancel_task) |
@@ -325,6 +334,9 @@ GNUNET_FS_search_probe_progress_ (void *cls, | |||
325 | dur = GNUNET_TIME_absolute_get_duration (sr->probe_active_time); | 334 | dur = GNUNET_TIME_absolute_get_duration (sr->probe_active_time); |
326 | sr->remaining_probe_time = | 335 | sr->remaining_probe_time = |
327 | GNUNET_TIME_relative_subtract (sr->remaining_probe_time, dur); | 336 | GNUNET_TIME_relative_subtract (sr->remaining_probe_time, dur); |
337 | if (0 == sr->remaining_probe_time.rel_value) | ||
338 | sr->probe_cancel_task = | ||
339 | GNUNET_SCHEDULER_add_now (&probe_failure_handler, sr); | ||
328 | GNUNET_FS_search_result_sync_ (sr); | 340 | GNUNET_FS_search_result_sync_ (sr); |
329 | break; | 341 | break; |
330 | default: | 342 | default: |