From c3dbb13288ba97a2ba461fd0996862a9819d73d1 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 4 Jul 2022 05:24:52 +0900 Subject: [PATCH] Revert "resolve: mDNS transaction max attempts fix" This reverts commit 127b26f3d8b589907ed75a34d34ab330995778f9. The commit made mDNS queries quite unstable. Note that, RFC 6762 does not explicitly prohibit to send a request multiple times. --- src/resolve/resolved-dns-transaction.c | 2 +- src/resolve/resolved-dns-transaction.h | 36 ++++++-------------------- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 6acf251d60c..30429cd9b69 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -1622,7 +1622,7 @@ static int dns_transaction_prepare(DnsTransaction *t, usec_t ts) { return 0; } - if (t->n_attempts >= dns_transaction_attempts_max(t->scope->protocol, t->probing)) { + if (t->n_attempts >= TRANSACTION_ATTEMPTS_MAX(t->scope->protocol)) { DnsTransactionState result; if (t->scope->protocol == DNS_PROTOCOL_LLMNR) diff --git a/src/resolve/resolved-dns-transaction.h b/src/resolve/resolved-dns-transaction.h index f4cb5d3d8df..498cabb7e50 100644 --- a/src/resolve/resolved-dns-transaction.h +++ b/src/resolve/resolved-dns-transaction.h @@ -214,31 +214,11 @@ DnsTransactionSource dns_transaction_source_from_string(const char *s) _pure_; /* Maximum attempts to send LLMNR requests, see RFC 4795 Section 2.7 */ #define LLMNR_TRANSACTION_ATTEMPTS_MAX 3 -/* Maximum attempts to send MDNS requests is one except for probe requests, see RFC 6762 Section 8.1 - * RFC 6762 differentiates between normal (single-shot/continuous) and probe requests. - * It therefore makes sense to attempt each normal query only once with no retries. - * Otherwise we'd be sending out three attempts for even a normal query. */ -#define MDNS_TRANSACTION_ATTEMPTS_MAX 1 - -#define MDNS_PROBE_TRANSACTION_ATTEMPTS_MAX 3 - -static inline unsigned dns_transaction_attempts_max(DnsProtocol p, bool probing) { - - switch (p) { - - case DNS_PROTOCOL_LLMNR: - return LLMNR_TRANSACTION_ATTEMPTS_MAX; - - case DNS_PROTOCOL_MDNS: - if (probing) - return MDNS_PROBE_TRANSACTION_ATTEMPTS_MAX; - else - return MDNS_TRANSACTION_ATTEMPTS_MAX; - - case DNS_PROTOCOL_DNS: - return DNS_TRANSACTION_ATTEMPTS_MAX; - - default: - return 0; - } -} +/* Maximum attempts to send MDNS requests, see RFC 6762 Section 8.1 */ +#define MDNS_TRANSACTION_ATTEMPTS_MAX 3 + +#define TRANSACTION_ATTEMPTS_MAX(p) (((p) == DNS_PROTOCOL_LLMNR) ? \ + LLMNR_TRANSACTION_ATTEMPTS_MAX : \ + (((p) == DNS_PROTOCOL_MDNS) ? \ + MDNS_TRANSACTION_ATTEMPTS_MAX : \ + DNS_TRANSACTION_ATTEMPTS_MAX)) -- 2.47.3