diff options
Diffstat (limited to 'nis/nis_table.c')
-rw-r--r-- | nis/nis_table.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/nis/nis_table.c b/nis/nis_table.c index 70b4701419..cb25be61e2 100644 --- a/nis/nis_table.c +++ b/nis/nis_table.c @@ -1,5 +1,4 @@ -/* Copyright (c) 1997-1999, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. +/* Copyright (c) 1997-1999,2003,2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997. @@ -275,14 +274,21 @@ nis_list (const_nis_name name, unsigned int flags, memset (res, '\0', sizeof (nis_result)); status = __nisfind_server (ibreq->ibr_name, - ibreq->ibr_srch.ibr_srch_val != NULL, - &dir, &bptr, flags & ~MASTER_ONLY); + ibreq->ibr_srch.ibr_srch_val != NULL, &dir); if (status != NIS_SUCCESS) { NIS_RES_STATUS (res) = status; goto fail3; } + status = __nisbind_create (&bptr, dir->do_servers.do_servers_val, + dir->do_servers.do_servers_len, flags); + if (__builtin_expect (status != NIS_SUCCESS, 0)) + { + NIS_RES_STATUS (res) = status; + goto fail2; + } + while (__nisbind_connect (&bptr) != NIS_SUCCESS) if (__builtin_expect (__nisbind_next (&bptr) != NIS_SUCCESS, 0)) { @@ -332,6 +338,7 @@ nis_list (const_nis_name name, unsigned int flags, NIS_RES_STATUS (res) = NIS_NOMEMORY; fail: __nisbind_destroy (&bptr); + fail2: nis_free_directory (dir); fail3: free (tablepath); |