diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-02-16 14:10:28 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-02-16 14:27:59 +0100 |
commit | 1f38830153b493b1acc7d1422f5aefd88228d373 (patch) | |
tree | af651aa5468ddad631065d1cb4a44fd45608ba62 /src/resolve | |
parent | d3b56a0cad6c397e020b5dc2105cf49ca3d92c42 (diff) | |
download | systemd-1f38830153b493b1acc7d1422f5aefd88228d373.tar.gz |
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.
Diffstat (limited to 'src/resolve')
-rw-r--r-- | src/resolve/resolved-dns-transaction.c | 14 | ||||
-rw-r--r-- | 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); |