]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Revert "resolve: mDNS transaction max attempts fix"
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 3 Jul 2022 20:24:52 +0000 (05:24 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 8 Jul 2022 20:20:09 +0000 (05:20 +0900)
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
src/resolve/resolved-dns-transaction.h

index 6acf251d60c9a9e9e5bde960cf2ddb66d77bbdb9..30429cd9b69658ae8b4b9b67131461587ebb6bff 100644 (file)
@@ -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)
index f4cb5d3d8dfc0b07b52106fe0cda9221baf05559..498cabb7e501b56e4b09bb0281e52c1e9374c860 100644 (file)
@@ -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))