]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
mailslot: allow to give back struct nbt_ntlogon_packet.
authorGünther Deschner <gd@samba.org>
Thu, 24 Apr 2008 19:37:42 +0000 (21:37 +0200)
committerGünther Deschner <gd@samba.org>
Thu, 24 Apr 2008 20:01:52 +0000 (22:01 +0200)
Guenther

source/libsmb/clidgram.c
source/libsmb/dsgetdcname.c
source/winbindd/winbindd_cm.c

index ba958fa6f95f612e2afccab8e1f4c1311586e892..fba009d4278283c547b1801096602f8e91a00967 100644 (file)
@@ -197,7 +197,8 @@ bool send_getdc_request(TALLOC_CTX *mem_ctx,
 bool receive_getdc_response(TALLOC_CTX *mem_ctx,
                            struct sockaddr_storage *dc_ss,
                            const char *domain_name,
-                           const char **dc_name)
+                           const char **dc_name,
+                           struct nbt_ntlogon_packet **reply)
 {
        struct packet_struct *packet;
        const char *my_mailslot = NULL;
@@ -299,6 +300,14 @@ bool receive_getdc_response(TALLOC_CTX *mem_ctx,
        if (**dc_name == '\\')  *dc_name += 1;
        if (**dc_name == '\\')  *dc_name += 1;
 
+       if (reply) {
+               *reply = talloc_memdup(mem_ctx, &r,
+                       sizeof(struct nbt_ntlogon_packet));
+               if (!*reply) {
+                       return false;
+               }
+       }
+
        DEBUG(10, ("GetDC gave name %s for domain %s\n",
                   *dc_name, returned_domain));
 
index f357e92b9bc70e53f8c7a9a536c549bf534c51b6..af1dc04059a5880091243f0c2503b06492c9ac28 100644 (file)
@@ -779,6 +779,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
        const char *dc_name = NULL;
        fstring tmp_dc_name;
        struct messaging_context *msg_ctx = msg_context(mem_ctx);
+       struct nbt_ntlogon_packet *reply = NULL;
 
        if (flags & DS_PDC_REQUIRED) {
                name_type = NBT_NAME_PDC;
@@ -805,7 +806,8 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
                                if (receive_getdc_response(mem_ctx,
                                                           &dclist[i].ss,
                                                           domain_name,
-                                                          &dc_name)) {
+                                                          &dc_name,
+                                                          &reply)) {
                                        namecache_store(dc_name, NBT_NAME_SERVER, 1, &ip_list);
                                        dc_hostname = dc_name;
                                        dc_domain_name = talloc_strdup_upper(mem_ctx, domain_name);
index 863df6ec1125234a0adc7d35939e8991af6dfe68..d27f3e47f58d6f59917a995b7b12686f4a6d7120 100644 (file)
@@ -1098,7 +1098,8 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx,
                int i;
                smb_msleep(100);
                for (i=0; i<5; i++) {
-                       if (receive_getdc_response(mem_ctx, pss, domain->name, &dc_name)) {
+                       if (receive_getdc_response(mem_ctx, pss, domain->name,
+                                                  &dc_name, NULL)) {
                                fstrcpy(name, dc_name);
                                namecache_store(name, 0x20, 1, &ip_list);
                                return True;