Ian Kent 92f44e
autofs-5.0.7 - dont fail on master map self include
Ian Kent 92f44e
Ian Kent 92f44e
From: Ian Kent <raven@themaw.net>
Ian Kent 92f44e
Ian Kent 92f44e
When reading the master map a self included file map should skip the source
Ian Kent 92f44e
and proceed to the next so, in this case, return an nss status that will
Ian Kent 92f44e
allow the map read to continue. In particular not NSS_STATUS_UNAVAIL which
Ian Kent 92f44e
causes the lookup to record a failure or NSS_STATUS_SUCCESS which indicates
Ian Kent 92f44e
a successful lookup and termintes the reading of sources.
Ian Kent 92f44e
---
Ian Kent 92f44e
 CHANGELOG             |    1 +
Ian Kent 92f44e
 modules/lookup_file.c |    7 ++++---
Ian Kent 92f44e
 2 files changed, 5 insertions(+), 3 deletions(-)
Ian Kent 92f44e
Ian Kent 92f44e
diff --git a/CHANGELOG b/CHANGELOG
Ian Kent 92f44e
index 39388a5..97d6f48 100644
Ian Kent 92f44e
--- a/CHANGELOG
Ian Kent 92f44e
+++ b/CHANGELOG
Ian Kent 92f44e
@@ -28,6 +28,7 @@
Ian Kent 92f44e
 - make yellow pages support optional.
Ian Kent 92f44e
 - modules/replicated.c: use sin6_addr.s6_addr32.
Ian Kent 92f44e
 - workaround missing GNU versionsort extension.
Ian Kent 92f44e
+- dont fail on master map self include.
Ian Kent 92f44e
 
Ian Kent 92f44e
 25/07/2012 autofs-5.0.7
Ian Kent 92f44e
 =======================
Ian Kent 92f44e
diff --git a/modules/lookup_file.c b/modules/lookup_file.c
Ian Kent 92f44e
index facb305..f37bed9 100644
Ian Kent 92f44e
--- a/modules/lookup_file.c
Ian Kent 92f44e
+++ b/modules/lookup_file.c
Ian Kent 92f44e
@@ -397,8 +397,9 @@ int lookup_read_master(struct master *master, time_t age, void *context)
Ian Kent 92f44e
 	unsigned int path_len, ent_len;
Ian Kent 92f44e
 	int entry, cur_state;
Ian Kent 92f44e
 
Ian Kent 92f44e
+	/* Don't return fail on self include, skip source */
Ian Kent 92f44e
 	if (master->recurse)
Ian Kent 92f44e
-		return NSS_STATUS_UNAVAIL;
Ian Kent 92f44e
+		return NSS_STATUS_TRYAGAIN;
Ian Kent 92f44e
 
Ian Kent 92f44e
 	if (master->depth > MAX_INCLUDE_DEPTH) {
Ian Kent 92f44e
 		error(logopt, MODPREFIX
Ian Kent 92f44e
@@ -443,7 +444,7 @@ int lookup_read_master(struct master *master, time_t age, void *context)
Ian Kent 92f44e
 
Ian Kent 92f44e
 			inc = check_master_self_include(master, ctxt);
Ian Kent 92f44e
 			if (inc) 
Ian Kent 92f44e
-				master->recurse = 1;;
Ian Kent 92f44e
+				master->recurse = 1;
Ian Kent 92f44e
 			master->depth++;
Ian Kent 92f44e
 			status = lookup_nss_read_master(master, age);
Ian Kent 92f44e
 			if (!status) {
Ian Kent 92f44e
@@ -645,7 +646,7 @@ int lookup_read_map(struct autofs_point *ap, time_t age, void *context)
Ian Kent 92f44e
 	mc = source->mc;
Ian Kent 92f44e
 
Ian Kent 92f44e
 	if (source->recurse)
Ian Kent 92f44e
-		return NSS_STATUS_UNAVAIL;
Ian Kent 92f44e
+		return NSS_STATUS_TRYAGAIN;
Ian Kent 92f44e
 
Ian Kent 92f44e
 	if (source->depth > MAX_INCLUDE_DEPTH) {
Ian Kent 92f44e
 		error(ap->logopt,