From c877b55ca8dc9ab33058d753698edc907dc1dbcc Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 9 Jun 2012 19:30:21 +0000 Subject: [PATCH] -dequeue download on error, another attempt to fix #2403 --- src/fs/fs_api.c | 8 ++++---- src/fs/fs_download.c | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/fs/fs_api.c b/src/fs/fs_api.c index ec959433a..4265d8d51 100644 --- a/src/fs/fs_api.c +++ b/src/fs/fs_api.c @@ -51,7 +51,7 @@ start_job (struct GNUNET_FS_QueueEntry *qe) { GNUNET_assert (NULL == qe->client); qe->client = GNUNET_CLIENT_connect ("fs", qe->h->cfg); - if (qe->client == NULL) + if (NULL == qe->client) { GNUNET_break (0); return; @@ -114,7 +114,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) while (NULL != (qe = next)) { next = qe->next; - if (h->running_head == NULL) + if (NULL == h->running_head) { start_job (qe); continue; @@ -126,7 +126,7 @@ process_job_queue (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) continue; } } - if (h->pending_head == NULL) + if (NULL == h->pending_head) return; /* no need to stop anything */ /* then, check if we should stop some jobs */ next = h->running_head; @@ -221,7 +221,7 @@ GNUNET_FS_dequeue_ (struct GNUNET_FS_QueueEntry *qh) struct GNUNET_FS_Handle *h; h = qh->h; - if (qh->client != NULL) + if (NULL != qh->client) stop_job (qh); GNUNET_CONTAINER_DLL_remove (h->pending_head, h->pending_tail, qh); GNUNET_free (qh); diff --git a/src/fs/fs_download.c b/src/fs/fs_download.c index c7e3a6023..61178766b 100644 --- a/src/fs/fs_download.c +++ b/src/fs/fs_download.c @@ -1178,6 +1178,11 @@ signal_error: dc->top_request = NULL; GNUNET_CONTAINER_multihashmap_destroy (dc->active); dc->active = NULL; + if (NULL != dc->job_queue) + { + GNUNET_FS_dequeue_ (dc->job_queue); + dc->job_queue = NULL; + } dc->pending_head = NULL; dc->pending_tail = NULL; GNUNET_FS_download_sync_ (dc); -- 2.25.1