From: Timo Sirainen Date: Tue, 25 Jan 2022 21:48:20 +0000 (+0100) Subject: indexer: Split off a more generic indexer_queue_request_cancel() X-Git-Tag: 2.4.0~4447 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=021d4ac44b3edb4319ba32ca82f5f3bf75b2a52c;p=thirdparty%2Fdovecot%2Fcore.git indexer: Split off a more generic indexer_queue_request_cancel() This function can be used to cancel any request, not just the head of the queue. --- diff --git a/src/indexer/indexer-queue.c b/src/indexer/indexer-queue.c index 5870ae2a45..d698eb1b1b 100644 --- a/src/indexer/indexer-queue.c +++ b/src/indexer/indexer-queue.c @@ -280,6 +280,18 @@ void indexer_queue_request_finish(struct indexer_queue *queue, indexer_refresh_proctitle(); } +static void +indexer_queue_request_cancel(struct indexer_queue *queue, + struct indexer_request **_request) +{ + struct indexer_request *request = *_request; + + *_request = NULL; + request->reindex_head = request->reindex_tail = FALSE; + DLLIST2_REMOVE(&queue->head, &queue->tail, request); + indexer_queue_request_finish(queue, &request, FALSE); +} + void indexer_queue_cancel_all(struct indexer_queue *queue) { struct indexer_request *request; @@ -293,10 +305,8 @@ void indexer_queue_cancel_all(struct indexer_queue *queue) request->reindex_head = request->reindex_tail = FALSE; hash_table_iterate_deinit(&iter); - while ((request = indexer_queue_request_peek(queue)) != NULL) { - indexer_queue_request_remove(queue); - indexer_queue_request_finish(queue, &request, FALSE); - } + while ((request = indexer_queue_request_peek(queue)) != NULL) + indexer_queue_request_cancel(queue, &request); } bool indexer_queue_is_empty(struct indexer_queue *queue)