53 lines
1.3 KiB
Diff
53 lines
1.3 KiB
Diff
diff --git a/daemon/lookup.c b/daemon/lookup.c
|
|
index aded82b..4429edb 100644
|
|
--- a/daemon/lookup.c
|
|
+++ b/daemon/lookup.c
|
|
@@ -423,6 +423,7 @@ int lookup_nss_read_map(struct autofs_point *ap, time_t age)
|
|
struct nss_source *this;
|
|
struct map_source *map;
|
|
enum nsswitch_status status;
|
|
+ unsigned int at_least_one = 0;
|
|
int result = 0;
|
|
|
|
/*
|
|
@@ -493,9 +494,13 @@ int lookup_nss_read_map(struct autofs_point *ap, time_t age)
|
|
if (result == NSS_STATUS_UNKNOWN)
|
|
continue;
|
|
|
|
+ if (result == NSS_STATUS_SUCCESS) {
|
|
+ at_least_one = 1;
|
|
+ result = NSS_STATUS_TRYAGAIN;
|
|
+ }
|
|
+
|
|
status = check_nss_result(this, result);
|
|
if (status >= 0) {
|
|
- result = !status;
|
|
map = NULL;
|
|
break;
|
|
}
|
|
@@ -509,7 +514,10 @@ int lookup_nss_read_map(struct autofs_point *ap, time_t age)
|
|
}
|
|
pthread_cleanup_pop(1);
|
|
|
|
- return !result;
|
|
+ if (!result || at_least_one)
|
|
+ return 1;
|
|
+
|
|
+ return 0;
|
|
}
|
|
|
|
int lookup_ghost(struct autofs_point *ap)
|
|
diff --git a/modules/lookup_yp.c b/modules/lookup_yp.c
|
|
index bc75be0..5f03b2f 100644
|
|
--- a/modules/lookup_yp.c
|
|
+++ b/modules/lookup_yp.c
|
|
@@ -305,7 +305,7 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context)
|
|
|
|
mapname = alloca(strlen(ctxt->mapname) + 1);
|
|
if (!mapname)
|
|
- return 0;
|
|
+ return NSS_STATUS_UNKNOWN;
|
|
|
|
strcpy(mapname, ctxt->mapname);
|
|
|