From: W.C.A. Wijngaards Date: Thu, 2 Jul 2026 13:04:51 +0000 (+0200) Subject: Add changelog note for #1087, remove copyright line as discussed, and X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ba4f8478e6f3fde903f33cc637cc4e0a07393e8b;p=thirdparty%2Funbound.git Add changelog note for #1087, remove copyright line as discussed, and compile fixes for newer local_zones_lookup, unused variable warnings fixed, and also manual page description of the feature. - Merge #1087: Overload `local_data_remove` to support removing specific records. --- diff --git a/daemon/remote.c b/daemon/remote.c index ccb6016bf..c89ca94be 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1,7 +1,6 @@ /* * daemon/remote.c - remote control for the unbound daemon. * - * Copyright (c) 2024, Rubicon Communications, LLC ("Netgate"). All rights reserved. * Copyright (c) 2008, NLnet Labs. All rights reserved. * * This software is open source. @@ -1539,12 +1538,13 @@ perform_data_remove_rr(RES* ssl, struct local_zones* local_zones, uint8_t* rr, size_t len, size_t dname_len, char *arg) { uint16_t rr_class, rr_type; - int labs, s; + int labs; struct local_zone* z; struct local_data* ld; uint8_t *rdata; size_t rdata_len, index; struct packed_rrset_data* d; + struct local_rrset* p; rdata = sldns_wirerr_get_rdatawl(rr, len, dname_len); rdata_len = ((size_t)sldns_wirerr_get_rdatalen(rr, len, dname_len))+2; @@ -1555,7 +1555,7 @@ perform_data_remove_rr(RES* ssl, struct local_zones* local_zones, rr_type = sldns_wirerr_get_type(rr, len, dname_len); z = local_zones_lookup(local_zones, rr, dname_len, - labs, rr_class, rr_type); + labs, rr_class, rr_type, 1); if (!z) { ssl_printf(ssl, "error no zone for rr %s\n", arg); return 0; @@ -1567,16 +1567,15 @@ perform_data_remove_rr(RES* ssl, struct local_zones* local_zones, return 0; } - struct local_rrset* prev=NULL, *p=ld->rrsets; + p = ld->rrsets; while (p && ntohs(p->rrset->rk.type) != rr_type) { - prev = p; p = p->next; } if (!p) { ssl_printf(ssl, "error no rrset for rr %s\n", arg); return 0; - } + } d = (struct packed_rrset_data*)p->rrset->entry.data; if (!packed_rrset_find_rr(d, rdata, rdata_len, &index)) { diff --git a/doc/Changelog b/doc/Changelog index 2dc431ef0..348c4e01c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +2 July 2026: Wouter + - Merge #1087: Overload `local_data_remove` to support removing + specific records. + 30 June 2026: Wouter - Fix #1469: dohclient: DoH POST missing content-length → :status 400 from strict resolvers (Cloudflare, Mullvad). diff --git a/doc/unbound-control.rst b/doc/unbound-control.rst index d95d6dd0b..9253e53cc 100644 --- a/doc/unbound-control.rst +++ b/doc/unbound-control.rst @@ -347,6 +347,8 @@ There are several commands that the server understands. Often results in NXDOMAIN for the name (in a static zone), but if the name has become an empty nonterminal (there is still data in domain names below the removed name), NOERROR nodata answers are the result for that name. + With a specific RR instead of a domain name, that specific record is + removed from the local data, and not all the RR data. @@UAHL@unbound-control.commands@local_zones@@