dsgetdcname: In case we didn't get a mailslot reply, don't cache the nodestatus.
authorGünther Deschner <gd@samba.org>
Wed, 14 May 2008 07:42:23 +0000 (09:42 +0200)
committerKarolin Seeger <kseeger@samba.org>
Thu, 22 May 2008 18:01:10 +0000 (20:01 +0200)
Guenther
(cherry picked from commit 12e47be02f93e2f41af5772f6a83568b3574d032)

source/libsmb/dsgetdcname.c

index 30d7c948223201c762fd515c9e785f75588b63cd..1538502e9ad0132e4f2383796400b2e7b2ffcfc7 100644 (file)
@@ -1223,6 +1223,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
        const char *dc_name = NULL;
        fstring tmp_dc_name;
        union nbt_cldap_netlogon *r = NULL;
+       bool store_cache = false;
        uint32_t nt_version = NETLOGON_VERSION_1 |
                              NETLOGON_VERSION_5 |
                              NETLOGON_VERSION_5EX_WITH_IP;
@@ -1261,6 +1262,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
                                                           &nt_version,
                                                           &dc_name,
                                                           &r)) {
+                                       store_cache = true;
                                        namecache_store(dc_name, NBT_NAME_SERVER, 1, &ip_list);
                                        goto make_reply;
                                }
@@ -1302,7 +1304,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
 
        status = make_dc_info_from_cldap_reply(mem_ctx, flags, &dclist[i].ss,
                                               nt_version, r, info);
-       if (NT_STATUS_IS_OK(status)) {
+       if (NT_STATUS_IS_OK(status) && store_cache) {
                return store_cldap_reply(mem_ctx, flags, &dclist[i].ss,
                                         nt_version, r);
        }