static void shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { if (NULL != dc) { GNUNET_FS_download_stop (dc, delete_incomplete); dc = NULL; } }
/** * Stop probing activity associated with a search result. * * @param sr search result */ static void GNUNET_FS_search_stop_probe_ (struct GNUNET_FS_SearchResult *sr) { 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_ping_task) { GNUNET_SCHEDULER_cancel (sr->probe_ping_task); sr->probe_ping_task = GNUNET_SCHEDULER_NO_TASK; } if (GNUNET_SCHEDULER_NO_TASK != sr->probe_cancel_task) { GNUNET_SCHEDULER_cancel (sr->probe_cancel_task); sr->probe_cancel_task = GNUNET_SCHEDULER_NO_TASK; } }
/** * Handle the case where we have failed to receive a response for our probe. * * @param cls our `struct GNUNET_FS_SearchResult *` * @param tc scheduler context */ static void probe_failure_handler (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct GNUNET_FS_SearchResult *sr = cls; sr->probe_cancel_task = GNUNET_SCHEDULER_NO_TASK; sr->availability_trials++; GNUNET_FS_download_stop (sr->probe_ctx, GNUNET_YES); sr->probe_ctx = NULL; if (GNUNET_SCHEDULER_NO_TASK != sr->probe_ping_task) { GNUNET_SCHEDULER_cancel (sr->probe_ping_task); sr->probe_ping_task = GNUNET_SCHEDULER_NO_TASK; } GNUNET_FS_search_result_sync_ (sr); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Probe #%u for search result %p failed\n", sr->availability_trials, sr); signal_probe_result (sr); }