mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 06:55:30 +00:00
Fix RT #2309 differently, allowing rather than rejecting empty
also-notify clauses
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: zone.h,v 1.111 2002/01/22 22:05:56 bwelling Exp $ */
|
||||
/* $Id: zone.h,v 1.112 2002/01/23 02:03:05 gson Exp $ */
|
||||
|
||||
#ifndef DNS_ZONE_H
|
||||
#define DNS_ZONE_H 1
|
||||
@@ -423,15 +423,12 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify,
|
||||
isc_uint32_t count);
|
||||
/*
|
||||
* Set the list of additional servers to be notified when
|
||||
* a zone changes. To clear the list use 'notify = NULL'
|
||||
* and 'count = 0'.
|
||||
* a zone changes. To clear the list use 'count = 0'.
|
||||
*
|
||||
* Require:
|
||||
* 'zone' to be a valid zone.
|
||||
* 'notify' to be non NULL.
|
||||
* 'count' the number of notify.
|
||||
*
|
||||
* If 'notify' is NULL then 'count' must be zero.
|
||||
* 'notify' to be non-NULL if count != 0.
|
||||
* 'count' to be the number of notifyees.
|
||||
*
|
||||
* Returns:
|
||||
* ISC_R_SUCCESS
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: zone.c,v 1.360 2002/01/22 22:05:53 bwelling Exp $ */
|
||||
/* $Id: zone.c,v 1.361 2002/01/23 02:03:04 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -1792,8 +1792,7 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify,
|
||||
isc_sockaddr_t *new;
|
||||
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
REQUIRE((notify == NULL && count == 0) ||
|
||||
(notify != NULL && count != 0));
|
||||
REQUIRE(count == 0 || notify != NULL);
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
if (zone->notify != NULL) {
|
||||
@@ -1802,19 +1801,16 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify,
|
||||
zone->notify = NULL;
|
||||
zone->notifycnt = 0;
|
||||
}
|
||||
if (notify == NULL)
|
||||
goto unlock;
|
||||
|
||||
new = isc_mem_get(zone->mctx, count * sizeof(*new));
|
||||
if (count != 0) {
|
||||
new = isc_mem_get(zone->mctx, count * sizeof *new);
|
||||
if (new == NULL) {
|
||||
UNLOCK_ZONE(zone);
|
||||
return (ISC_R_NOMEMORY);
|
||||
}
|
||||
memcpy(new, notify, count * sizeof(*new));
|
||||
memcpy(new, notify, count * sizeof *new);
|
||||
zone->notify = new;
|
||||
zone->notifycnt = count;
|
||||
|
||||
unlock:
|
||||
}
|
||||
UNLOCK_ZONE(zone);
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
Reference in New Issue
Block a user