]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolve: reuse timer event source for DnsQuery 22430/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 5 Feb 2022 13:31:06 +0000 (22:31 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 8 Feb 2022 08:39:03 +0000 (17:39 +0900)
If the query get CNAME or DNAME, then the query will be restarted.
Even in that case, previously, the event source was freed and allocated
again. Let's slightly optimize it.

src/resolve/resolved-dns-query.c

index 192bfd3bf5682bf90719a6a144a98efd83079c0a..9b296e7aa67a95e01bce50273187d0fc3687679c 100644 (file)
@@ -3,6 +3,7 @@
 #include "alloc-util.h"
 #include "dns-domain.h"
 #include "dns-type.h"
+#include "event-util.h"
 #include "hostname-util.h"
 #include "local-addresses.h"
 #include "resolved-dns-query.h"
@@ -348,7 +349,7 @@ static void dns_query_stop(DnsQuery *q) {
 
         assert(q);
 
-        q->timeout_event_source = sd_event_source_disable_unref(q->timeout_event_source);
+        event_source_disable(q->timeout_event_source);
 
         LIST_FOREACH(candidates_by_query, c, q->candidates)
                 dns_query_candidate_stop(c);
@@ -794,17 +795,16 @@ int dns_query_go(DnsQuery *q) {
 
         dns_query_reset_answer(q);
 
-        r = sd_event_add_time_relative(
+        r = event_reset_time_relative(
                         q->manager->event,
                         &q->timeout_event_source,
                         clock_boottime_or_monotonic(),
                         SD_RESOLVED_QUERY_TIMEOUT_USEC,
-                        0, on_query_timeout, q);
+                        0, on_query_timeout, q,
+                        0, "query-timeout", true);
         if (r < 0)
                 goto fail;
 
-        (void) sd_event_source_set_description(q->timeout_event_source, "query-timeout");
-
         q->state = DNS_TRANSACTION_PENDING;
         q->block_ready++;