diff options
author | Günther Deschner <gd@samba.org> | 2008-04-24 21:37:42 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-04-24 22:01:52 +0200 |
commit | b77601a4b7c9d0f472eb51dad1d491d54a6dcbdc (patch) | |
tree | c02f6072120d1d661bb333ec5a9e2b7b4d2cec3d | |
parent | 012d6782111a2700ee80c79be1a1c07a41dab952 (diff) | |
download | samba-b77601a4b7c9d0f472eb51dad1d491d54a6dcbdc.tar.gz samba-b77601a4b7c9d0f472eb51dad1d491d54a6dcbdc.tar.bz2 samba-b77601a4b7c9d0f472eb51dad1d491d54a6dcbdc.zip |
mailslot: allow to give back struct nbt_ntlogon_packet.
Guenther
(This used to be commit 2b178dcae608ecc05f62593a7a0c2a127b8b7ca2)
-rw-r--r-- | source3/libsmb/clidgram.c | 11 | ||||
-rw-r--r-- | source3/libsmb/dsgetdcname.c | 4 | ||||
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 3 |
3 files changed, 15 insertions, 3 deletions
diff --git a/source3/libsmb/clidgram.c b/source3/libsmb/clidgram.c index ba958fa6f9..fba009d427 100644 --- a/source3/libsmb/clidgram.c +++ b/source3/libsmb/clidgram.c @@ -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)); diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c index f357e92b9b..af1dc04059 100644 --- a/source3/libsmb/dsgetdcname.c +++ b/source3/libsmb/dsgetdcname.c @@ -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); diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 863df6ec11..d27f3e47f5 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -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; |