about summary refs log tree commit diff
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;