summaryrefslogtreecommitdiff
path: root/nis/nis_lookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'nis/nis_lookup.c')
-rw-r--r--nis/nis_lookup.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/nis/nis_lookup.c b/nis/nis_lookup.c
index 839ee4ee42..9677b4d3d1 100644
--- a/nis/nis_lookup.c
+++ b/nis/nis_lookup.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997-1999, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997-1999, 2004, 2005, 2006, 2007
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1997.
@@ -74,7 +75,6 @@ nis_lookup (const_nis_name name, const unsigned int flags)
{
static const struct timeval RPCTIMEOUT = {10, 0};
enum clnt_stat result;
- char ndomain[strlen (req.ns_name) + 1];
again:
result = clnt_call (bptr.clnt, NIS_LOOKUP,
@@ -127,27 +127,18 @@ nis_lookup (const_nis_name name, const unsigned int flags)
/* Otherwise __nisfind_server will not do anything. */
dir = NULL;
- if (__nisfind_server (req.ns_name, 1, &dir)
+ if (__nisfind_server (req.ns_name, 1, &dir, &bptr,
+ flags & ~MASTER_ONLY)
!= NIS_SUCCESS)
goto out;
-
- if (__nisbind_create (&bptr,
- dir->do_servers.do_servers_val,
- dir->do_servers.do_servers_len,
- flags) != NIS_SUCCESS)
- {
- nis_free_directory (dir);
- goto out;
- }
}
else
if (__nisbind_next (&bptr) != NIS_SUCCESS)
{
/* No more servers to search. Try parent. */
- nis_domain_of_r (req.ns_name, ndomain,
- sizeof (ndomain));
+ const char *ndomain = __nis_domain_of (req.ns_name);
req.ns_name = strdupa (ndomain);
- if (strcmp (ndomain, ".") == 0)
+ if (strcmp (req.ns_name, ".") == 0)
{
NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
goto out;