X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffs%2Ffs_api.c;h=f539c7910f1f5f7c220ef82fd0e223c766b132bc;hb=ed51bc86aad5044b88ce4fc3641cc920c8186863;hp=302020d7d3a61623d5056779f975b34a79ca4ce0;hpb=1224b6d62b7214a4afca27695ff7d789fb6f93d3;p=oweals%2Fgnunet.git diff --git a/src/fs/fs_api.c b/src/fs/fs_api.c index 302020d7d..f539c7910 100644 --- a/src/fs/fs_api.c +++ b/src/fs/fs_api.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2001--2012 Christian Grothoff (and other contributing authors) + Copyright (C) 2001--2012 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -131,7 +131,7 @@ process_job_queue (void *cls, int num_downloads_change; int block_limit_hit; - h->queue_job = GNUNET_SCHEDULER_NO_TASK; + h->queue_job = NULL; /* restart_at will be set to the time when it makes sense to re-evaluate the job queue (unless, of course, jobs complete or are added, then we'll be triggered immediately */ @@ -202,6 +202,8 @@ process_job_queue (void *cls, break; } } + GNUNET_break (h->active_downloads == + num_downloads_active + num_probes_active); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "PA: %u, PE: %u, PW: %u; DA: %u, DE: %u, DW: %u\n", num_probes_active, @@ -210,6 +212,8 @@ process_job_queue (void *cls, num_downloads_active, num_downloads_expired, num_downloads_waiting); + GNUNET_break (h->active_downloads + num_probes_active <= + h->max_parallel_downloads); /* calculate start/stop decisions */ if (h->active_downloads + num_downloads_waiting > h->max_parallel_downloads) { @@ -225,17 +229,19 @@ process_job_queue (void *cls, /* start all downloads (we can) */ num_downloads_change = num_downloads_waiting; /* also start probes if there is room, but use a lower cap of (mpd/4) + 1 */ - if (h->max_parallel_downloads / 2 >= (h->active_downloads + num_downloads_change)) + if (1 + h->max_parallel_downloads / 4 >= (h->active_downloads + num_downloads_change)) num_probes_change = GNUNET_MIN (num_probes_waiting, (1 + h->max_parallel_downloads / 4) - (h->active_downloads + num_downloads_change)); else num_probes_change = 0; } - + GNUNET_break (num_downloads_change <= num_downloads_waiting); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Changing %d probes and %d downloads\n", + "Changing %d probes and %d/%u/%u downloads\n", num_probes_change, - num_downloads_change); + num_downloads_change, + (unsigned int) h->active_downloads, + (unsigned int) h->max_parallel_downloads); /* actually stop probes */ next = h->running_head; while (NULL != (qe = next)) @@ -289,7 +295,8 @@ process_job_queue (void *cls, break; } } - GNUNET_break ( (0 == num_downloads_change) || (GNUNET_YES == block_limit_hit) ); + GNUNET_break ( (0 == num_downloads_change) || + (GNUNET_YES == block_limit_hit) ); GNUNET_break (0 == num_probes_change); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, @@ -336,7 +343,7 @@ GNUNET_FS_queue_ (struct GNUNET_FS_Handle *h, qe->priority = priority; GNUNET_CONTAINER_DLL_insert_after (h->pending_head, h->pending_tail, h->pending_tail, qe); - if (h->queue_job != GNUNET_SCHEDULER_NO_TASK) + if (h->queue_job != NULL) GNUNET_SCHEDULER_cancel (h->queue_job); h->queue_job = GNUNET_SCHEDULER_add_now (&process_job_queue, h); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, @@ -364,7 +371,7 @@ GNUNET_FS_dequeue_ (struct GNUNET_FS_QueueEntry *qe) stop_job (qe); GNUNET_CONTAINER_DLL_remove (h->pending_head, h->pending_tail, qe); GNUNET_free (qe); - if (h->queue_job != GNUNET_SCHEDULER_NO_TASK) + if (h->queue_job != NULL) GNUNET_SCHEDULER_cancel (h->queue_job); h->queue_job = GNUNET_SCHEDULER_add_now (&process_job_queue, h); } @@ -1619,7 +1626,7 @@ deserialize_publish_file (void *cls, /* re-start publishing (if needed)... */ if (GNUNET_YES != pc->all_done) { - GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == pc->upload_task); + GNUNET_assert (NULL == pc->upload_task); pc->upload_task = GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_BACKGROUND, @@ -2140,7 +2147,7 @@ GNUNET_FS_search_sync_ (struct GNUNET_FS_SearchContext *sc) GNUNET_assert ((GNUNET_YES == GNUNET_FS_uri_test_ksk (sc->uri)) || (GNUNET_YES == GNUNET_FS_uri_test_sks (sc->uri))); uris = GNUNET_FS_uri_to_string (sc->uri); - in_pause = (sc->task != GNUNET_SCHEDULER_NO_TASK) ? 'r' : '\0'; + in_pause = (sc->task != NULL) ? 'r' : '\0'; if ((GNUNET_OK != GNUNET_BIO_write_string (wh, uris)) || (GNUNET_OK != write_start_time (wh, sc->start_time)) || (GNUNET_OK != GNUNET_BIO_write_string (wh, sc->emsg)) || @@ -3130,7 +3137,7 @@ GNUNET_FS_stop (struct GNUNET_FS_Handle *h) { while (h->top_head != NULL) h->top_head->ssf (h->top_head->ssf_cls); - if (h->queue_job != GNUNET_SCHEDULER_NO_TASK) + if (h->queue_job != NULL) GNUNET_SCHEDULER_cancel (h->queue_job); GNUNET_free (h->client_name); GNUNET_free (h);