summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-10-04 16:10:31 +1000
committerAmitay Isaacs <amitay@samba.org>2013-11-30 06:15:51 +0100
commitbdb818d9b49f1a99e81f940acbe35d82571ae30c (patch)
tree1115eabb6424da62fd889af23c0c6c0af763848f
parent97dd67315784b5c7126372a1fea6f9ceb2e102d8 (diff)
downloadsamba-bdb818d9b49f1a99e81f940acbe35d82571ae30c.tar.gz
samba-bdb818d9b49f1a99e81f940acbe35d82571ae30c.tar.xz
samba-bdb818d9b49f1a99e81f940acbe35d82571ae30c.zip
s4-rpc: dnsserver: Ignore duplicate dns zones from multiple locations
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Kai Blin <kai@samba.org> Autobuild-User(master): Amitay Isaacs <amitay@samba.org> Autobuild-Date(master): Sat Nov 30 06:15:52 CET 2013 on sn-devel-104
-rw-r--r--source4/rpc_server/dnsserver/dcerpc_dnsserver.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
index 5733a51177..f3dd1957af 100644
--- a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
+++ b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
@@ -142,13 +142,19 @@ static struct dnsserver_state *dnsserver_connect(struct dcesrv_call_state *dce_c
}
for (z = zones; z; ) {
znext = z->next;
- z->zoneinfo = dnsserver_init_zoneinfo(z, dsstate->serverinfo);
- if (z->zoneinfo == NULL) {
- goto failed;
+ if (dnsserver_find_zone(dsstate->zones, z->name) == NULL) {
+ z->zoneinfo = dnsserver_init_zoneinfo(z, dsstate->serverinfo);
+ if (z->zoneinfo == NULL) {
+ goto failed;
+ }
+ DLIST_ADD_END(dsstate->zones, z, NULL);
+ p->zones_count++;
+ dsstate->zones_count++;
+ } else {
+ /* Ignore duplicate zone */
+ DEBUG(3,("dnsserver: Ignoring duplicate zone '%s' from '%s'",
+ z->name, ldb_dn_get_linearized(z->zone_dn)));
}
- DLIST_ADD_END(dsstate->zones, z, NULL);
- p->zones_count++;
- dsstate->zones_count++;
z = znext;
}
}