From 888d8e53a33ab87a00bc261a1bec5d95a308b322 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sat, 2 Jul 2022 21:36:41 +0300 Subject: [PATCH] LookupServer: Try other available DNS nameservers on network errors We were accidentally short-circuting DNS lookup on network errors when contacting the first DNS server, instead of trying the other available options. --- Userland/Services/LookupServer/LookupServer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Services/LookupServer/LookupServer.cpp b/Userland/Services/LookupServer/LookupServer.cpp index 5cea3bf57b..8421faad8b 100644 --- a/Userland/Services/LookupServer/LookupServer.cpp +++ b/Userland/Services/LookupServer/LookupServer.cpp @@ -196,7 +196,10 @@ ErrorOr> LookupServer::lookup(Name const& name, RecordType record int retries = 3; Vector upstream_answers; do { - upstream_answers = TRY(lookup(name, nameserver, did_get_response, record_type)); + auto upstream_answers_or_error = lookup(name, nameserver, did_get_response, record_type); + if (upstream_answers_or_error.is_error()) + continue; + upstream_answers = upstream_answers_or_error.release_value(); if (did_get_response) break; } while (--retries);