From e6e05d2aa636dee3a069c9500a083b7d76fecdcc 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 --- 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 296602de12..d90b1fcc50 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"