From 4125370fed8fdfcfc26e4793e55fa88ede01b2c6 Mon Sep 17 00:00:00 2001 From: Tim Flubshi Date: Sun, 26 Apr 2026 18:00:44 +0200 Subject: [PATCH] ddns-scripts: netcup.com adjust update error path Adjust the update error handling path to avoid hard failures on recoverable errors. This allows ddns to retry updates after the configured retry interval and improves reliability. Signed-off-by: Tim Flubshi (cherry picked from commit e6e05d2aa636dee3a069c9500a083b7d76fecdcc) --- net/ddns-scripts/Makefile | 2 +- .../files/usr/lib/ddns/update_netcup_com.sh | 38 +++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/net/ddns-scripts/Makefile b/net/ddns-scripts/Makefile index aa7e3781b8..6b6f9cbc02 100644 --- a/net/ddns-scripts/Makefile +++ b/net/ddns-scripts/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-scripts PKG_VERSION:=2.8.3 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_LICENSE:=GPL-2.0 diff --git a/net/ddns-scripts/files/usr/lib/ddns/update_netcup_com.sh b/net/ddns-scripts/files/usr/lib/ddns/update_netcup_com.sh index 5ad204f096..dfb3670b1d 100755 --- a/net/ddns-scripts/files/usr/lib/ddns/update_netcup_com.sh +++ b/net/ddns-scripts/files/usr/lib/ddns/update_netcup_com.sh @@ -134,8 +134,10 @@ netcup_check_response() { if [ "$__status" != "success" ]; then json_cleanup - write_log 14 "netcup DDNS: $__context failed (status='$__status' code=$__statuscode): $__shortmsg" + write_log 3 "netcup DDNS: $__context failed (status='$__status' code=$__statuscode): $__shortmsg" + return 1 fi + return 0 } # --------------------------------------------------------------------------- @@ -154,16 +156,21 @@ json_add_object "param" json_add_string "apipassword" "$password" json_close_object -netcup_post || write_log 14 "netcup DDNS: HTTP request failed during login" -netcup_check_response "login" +if ! netcup_post; then + write_log 3 "netcup DDNS: HTTP request failed during login" + return 1 +fi +netcup_check_response "login" || return 1 json_select "responsedata" json_get_var __SESSION_ID "apisessionid" json_select ".." json_cleanup -[ -z "$__SESSION_ID" ] && \ - write_log 14 "netcup DDNS: login succeeded but no session ID was returned" +if [ -z "$__SESSION_ID" ]; then + write_log 3 "netcup DDNS: login succeeded but no session ID was returned" + return 1 +fi write_log 6 "netcup DDNS: login successful" @@ -178,8 +185,11 @@ json_add_object "param" json_add_string "apisessionid" "$__SESSION_ID" json_close_object -netcup_post || write_log 14 "netcup DDNS: HTTP request failed during infoDnsRecords" -netcup_check_response "infoDnsRecords" +if ! netcup_post; then + write_log 3 "netcup DDNS: HTTP request failed during infoDnsRecords" + return 1 +fi +netcup_check_response "infoDnsRecords" || return 1 # --- Step 3: Find the record matching our hostname and type ---------------- # @@ -216,8 +226,10 @@ done json_cleanup -[ -z "$__MATCH_ID" ] && \ - write_log 14 "netcup DDNS: no [$__RRTYPE] record found for hostname '$__REC_HOSTNAME' in zone '$__ZONE'" +if [ -z "$__MATCH_ID" ]; then + write_log 3 "netcup DDNS: no [$__RRTYPE] record found for hostname '$__REC_HOSTNAME' in zone '$__ZONE'" + return 1 +fi # --- Step 4: Update the matched record with the new IP --------------------- @@ -242,8 +254,12 @@ json_add_object "param" json_close_object json_close_object -netcup_post || write_log 14 "netcup DDNS: HTTP request failed during updateDnsRecords" -netcup_check_response "updateDnsRecords" +if ! netcup_post; then + write_log 3 "netcup DDNS: HTTP request failed during updateDnsRecords" + return 1 +fi + +netcup_check_response "updateDnsRecords" || return 1 json_cleanup write_log 6 "netcup DDNS: '$__REC_HOSTNAME.$__ZONE' [$__RRTYPE] updated to $__IP"