From 1f38830153b493b1acc7d1422f5aefd88228d373 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 16 Feb 2021 14:10:28 +0100 Subject: [PATCH] resolved: make dns_transaction_gc return a pointer _gc() does cleanup if it is possible. So far it returned a bool to signal if it succeeded (false on success). When working on the resolved code I had to look at the definition every time, because the (arguably reversed) calling convention is unobvious. So let's return a pointer (non-NULL: gc has not been done, NULL: gc has been done). This fits nicely with the standard to return a pointer from all free functions obviously. --- src/resolve/resolved-dns-transaction.c | 14 +++++++------- src/resolve/resolved-dns-transaction.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index bd73aa5451..e1ff503929 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -141,23 +141,23 @@ DnsTransaction* dns_transaction_free(DnsTransaction *t) { DEFINE_TRIVIAL_CLEANUP_FUNC(DnsTransaction*, dns_transaction_free); -bool dns_transaction_gc(DnsTransaction *t) { +DnsTransaction* dns_transaction_gc(DnsTransaction *t) { assert(t); + /* Returns !NULL if we can't gc yet. */ + if (t->block_gc > 0) - return true; + return t; if (set_isempty(t->notify_query_candidates) && set_isempty(t->notify_query_candidates_done) && set_isempty(t->notify_zone_items) && set_isempty(t->notify_zone_items_done) && set_isempty(t->notify_transactions) && - set_isempty(t->notify_transactions_done)) { - dns_transaction_free(t); - return false; - } + set_isempty(t->notify_transactions_done)) + return dns_transaction_free(t); - return true; + return t; } static uint16_t pick_new_id(Manager *m) { diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h index 9376d504bf..3632daeb15 100644 --- a/src/resolve/resolved-dns-transaction.h +++ b/src/resolve/resolved-dns-transaction.h @@ -143,7 +143,7 @@ struct DnsTransaction { int dns_transaction_new(DnsTransaction **ret, DnsScope *s, DnsResourceKey *key, DnsPacket *bypass, uint64_t flags); DnsTransaction* dns_transaction_free(DnsTransaction *t); -bool dns_transaction_gc(DnsTransaction *t); +DnsTransaction* dns_transaction_gc(DnsTransaction *t); DEFINE_TRIVIAL_CLEANUP_FUNC(DnsTransaction*, dns_transaction_gc); int dns_transaction_go(DnsTransaction *t); -- 2.25.1