summaryrefslogtreecommitdiff
path: root/source/namedbname.c
diff options
context:
space:
mode:
authorSamba Release Account <samba-bugs@samba.org>1996-10-25 19:31:48 +0000
committerSamba Release Account <samba-bugs@samba.org>1996-10-25 19:31:48 +0000
commit3f63dd6771ee1c4cd30049478ea053caefdc262f (patch)
tree9c09c437cb6e8f5f237d4ab5d4a562c5b47f076e /source/namedbname.c
parent7c2f1da3773bac59ba0aeea7c0cac1134a74381c (diff)
downloadsamba-3f63dd6771ee1c4cd30049478ea053caefdc262f.tar.gz
debugging the dns lookup changes
lkcl
Diffstat (limited to 'source/namedbname.c')
-rw-r--r--source/namedbname.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/source/namedbname.c b/source/namedbname.c
index 3a32088593a..8f5514be531 100644
--- a/source/namedbname.c
+++ b/source/namedbname.c
@@ -140,8 +140,7 @@ void remove_name(struct subnet_record *d, struct name_record *n)
find a name in a namelist.
**************************************************************************/
struct name_record *find_name(struct name_record *n,
- struct nmb_name *name,
- int search)
+ struct nmb_name *name, int search)
{
struct name_record *ret;
@@ -510,16 +509,17 @@ void expire_names(time_t t)
/***************************************************************************
- reply to a name query
+ assume a WINS name is a dns name, and do a gethostbyname() on it.
****************************************************************************/
-struct name_record *dns_name_search(struct nmb_name *question,
- int Time, int search)
+struct name_record *dns_name_search(struct nmb_name *question, int Time)
{
int name_type = question->name_type;
char *qname = question->name;
+ char *r;
BOOL dns_type = (name_type == 0x20 || name_type == 0);
struct in_addr dns_ip;
struct subnet_record *d = find_subnet(ipgrp);
+ pstring dns_name;
if (d == NULL) return NULL;
@@ -532,8 +532,27 @@ struct name_record *dns_name_search(struct nmb_name *question,
return NULL;
}
+ StrnCpy(dns_name, qname, sizeof(dns_name));
+ if ((r = strchr(dns_name,'.')) == NULL)
+ {
+ /* append a dot to the name, hopefully to stop DNS recursing */
+ strcat(dns_name, ".");
+
+#ifdef NETGROUP
+ {
+ char domainname[255];
+
+ if (getdomainname(domainname, sizeof(domainname)) == 0)
+ {
+ /* we have a domain name - append it to the dns name */
+ strcat(dns_name, domainname);
+ }
+ }
+#endif
+ }
+
/* look it up with DNS */
- dns_ip.s_addr = interpret_addr(qname);
+ dns_ip.s_addr = interpret_addr(dns_name);
if (!dns_ip.s_addr)
{