diff options
author | Gerald Carter <jerry@samba.org> | 2003-07-03 04:54:49 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2003-07-03 04:54:49 +0000 |
commit | fa354f3ceefe53bdfd4f543559041d337b75613f (patch) | |
tree | d0cb9c1f1a2b3dbae6f14152a39f63e58fb33081 /source/libsmb/namequery.c | |
parent | ae6c05ea726da13fc1a18398d1ffe56f34e1edb9 (diff) | |
download | samba-fa354f3ceefe53bdfd4f543559041d337b75613f.tar.gz samba-fa354f3ceefe53bdfd4f543559041d337b75613f.tar.xz samba-fa354f3ceefe53bdfd4f543559041d337b75613f.zip |
fix bug #190; WINS server was getting marked as dead when it was not.
Diffstat (limited to 'source/libsmb/namequery.c')
-rw-r--r-- | source/libsmb/namequery.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source/libsmb/namequery.c b/source/libsmb/namequery.c index 81c0c144373..9875f77c72e 100644 --- a/source/libsmb/namequery.c +++ b/source/libsmb/namequery.c @@ -516,7 +516,9 @@ struct in_addr *name_query(int fd,const char *name,int name_type, } } - if (timed_out) { + /* only set timed_out if we didn't fund what we where looking for*/ + + if ( !found && timed_out ) { *timed_out = True; } @@ -792,7 +794,10 @@ BOOL resolve_wins(const char *name, int name_type, ip_list = name_query(sock,name,name_type, False, True, wins_ip, return_count, &flags, &timed_out); - if ( !ip_list ) + + /* exit loop if we got a list of addresses */ + + if ( ip_list ) goto success; close(sock); @@ -1278,6 +1283,13 @@ BOOL get_dc_list(const char *domain, struct ip_service **ip_list, if ( (num_addresses == 0) && !done_auto_lookup ) return internal_resolve_name(domain, 0x1C, ip_list, count, resolve_oder); + /* maybe we just failed? */ + + if ( num_addresses == 0 ) { + DEBUG(4,("get_dc_list: no servers found\n")); + return False; + } + if ( (return_iplist = (struct ip_service *) malloc(num_addresses * sizeof(struct ip_service))) == NULL ) { |