From 72a52807d1ab42ced45bdf893376cdadee9611c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Fri, 25 Apr 2025 21:03:09 +0200 Subject: [PATCH 1/4] Fix gravity waiting forever for DNS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- gravity.sh | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/gravity.sh b/gravity.sh index 514289d0..06396d11 100755 --- a/gravity.sh +++ b/gravity.sh @@ -348,17 +348,24 @@ gravity_CheckDNSResolutionAvailable() { echo -e " ${CROSS} DNS resolution is currently unavailable" fi - str="Waiting until DNS resolution is available..." + str="Waiting 120 seconds if DNS resolution becomes available..." echo -ne " ${INFO} ${str}" - until getent hosts github.com &> /dev/null; do - # Append one dot for each second waiting - str="${str}." - echo -ne " ${OVER} ${INFO} ${str}" - sleep 1 + + for ((i = 0; i < 120; i++)); do + if getent hosts github.com &> /dev/null; then + # If we reach this point, DNS resolution is available + echo -e "${OVER} ${TICK} DNS resolution is available" + break + fi + # Append one dot for each second waiting + str="${str}." + echo -ne " ${OVER} ${INFO} ${str}" + sleep 1 done - # If we reach this point, DNS resolution is available - echo -e "${OVER} ${TICK} DNS resolution is available" + # DNS resolution is still unavailable after 120 seconds + return 1 + } # Function: try_restore_backup @@ -1081,6 +1088,12 @@ for var in "$@"; do esac done +# Check if DNS is available, no need to do any database manipulation if we're not able to download adlists +if ! timeit gravity_CheckDNSResolutionAvailable; then + echo -e " ${CROSS} No DNS resolution available. Please contact support." + exit 1 +fi + # Remove OLD (backup) gravity file, if it exists if [[ -f "${gravityOLDfile}" ]]; then rm "${gravityOLDfile}" @@ -1121,11 +1134,6 @@ if [[ "${forceDelete:-}" == true ]]; then fi # Gravity downloads blocklists next -if ! timeit gravity_CheckDNSResolutionAvailable; then - echo -e " ${CROSS} Can not complete gravity update, no DNS is available. Please contact support." - exit 1 -fi - if ! gravity_DownloadBlocklists; then echo -e " ${CROSS} Unable to create gravity database. Please try again later. If the problem persists, please contact support." exit 1 From 215003899d78dd5aac0b3ac3f5e442fb7f0cd457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Sat, 26 Apr 2025 15:03:01 +0200 Subject: [PATCH 2/4] (2+1)*40 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- gravity.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 06396d11..8d881105 100755 --- a/gravity.sh +++ b/gravity.sh @@ -351,7 +351,8 @@ gravity_CheckDNSResolutionAvailable() { str="Waiting 120 seconds if DNS resolution becomes available..." echo -ne " ${INFO} ${str}" - for ((i = 0; i < 120; i++)); do + # Default DNS timeout is two seconds, plus 1 second for each dot > 120 seconds + for ((i = 0; i < 40; i++)); do if getent hosts github.com &> /dev/null; then # If we reach this point, DNS resolution is available echo -e "${OVER} ${TICK} DNS resolution is available" From 4303a5868ffc47f9d8dd1c1298f7aff24e4ebc85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Sat, 26 Apr 2025 15:03:42 +0200 Subject: [PATCH 3/4] Only append dot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- gravity.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gravity.sh b/gravity.sh index 8d881105..887f9750 100755 --- a/gravity.sh +++ b/gravity.sh @@ -359,8 +359,7 @@ gravity_CheckDNSResolutionAvailable() { break fi # Append one dot for each second waiting - str="${str}." - echo -ne " ${OVER} ${INFO} ${str}" + echo -ne "." sleep 1 done From 3bd6a41795430f63c2c08262960c6d6f50fe73e9 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 26 Apr 2025 15:36:22 +0200 Subject: [PATCH 4/4] Improve wording Co-authored-by: Adam Warner Signed-off-by: yubiuser --- gravity.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gravity.sh b/gravity.sh index 887f9750..5276d180 100755 --- a/gravity.sh +++ b/gravity.sh @@ -348,7 +348,7 @@ gravity_CheckDNSResolutionAvailable() { echo -e " ${CROSS} DNS resolution is currently unavailable" fi - str="Waiting 120 seconds if DNS resolution becomes available..." + str="Waiting up to 120 seconds for DNS resolution..." echo -ne " ${INFO} ${str}" # Default DNS timeout is two seconds, plus 1 second for each dot > 120 seconds