From aef81df5ebec9b17d038983603685afc1f21bde1 Mon Sep 17 00:00:00 2001 From: neil Date: Wed, 21 Oct 2026 18:49:59 +0800 Subject: [PATCH] dns_gandi_livedns: delete the TXT record when rm removes its last value rm PUT the remaining values back even when none were left, leaving an empty TXT rrset behind. Use DELETE (204 on success) in that case; keep PUT when other values remain, since the rrset can hold values from other pending validations. Refs #7347 --- dnsapi/dns_gandi_livedns.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dnsapi/dns_gandi_livedns.sh b/dnsapi/dns_gandi_livedns.sh index 615667b0..57c3cf3c 100644 --- a/dnsapi/dns_gandi_livedns.sh +++ b/dnsapi/dns_gandi_livedns.sh @@ -87,6 +87,20 @@ dns_gandi_livedns_rm() { _new_rrset_values=$(echo "$_new_rrset_values" | sed "s/\[ *,/\[/g") _debug "New rrset_values" "$_new_rrset_values" + # Last value removed: delete the record instead of leaving an empty TXT rrset. + if [ "$(echo "$_new_rrset_values" | tr -d ' ')" = "[]" ]; then + if ! _gandi_livedns_rest DELETE "domains/$_domain/records/$_sub_domain/TXT"; then + return 1 + fi + _gandi_livedns_code="$(grep "^HTTP" "$HTTP_HEADER" | _tail_n 1 | cut -d " " -f 2 | tr -d "\\r\\n")" + if [ "$_gandi_livedns_code" != "204" ]; then + _err "Error deleting record: $response" + return 1 + fi + _info "Removing record $(__green "success")" + return 0 + fi + _gandi_livedns_rest PUT \ "domains/$_domain/records/$_sub_domain/TXT" \ "{\"rrset_ttl\": 300, \"rrset_values\": $_new_rrset_values}" &&