Blame SOURCES/autofs-5.1.2-make-lookup_nss_read_master-return-nss-status.patch

4d476f
autofs-5.1.2 - make lookup_nss_read_master() return nss status
4d476f
4d476f
From: Ian Kent <raven@themaw.net>
4d476f
4d476f
Currently lookup_nss_read_master() uses a boolean return but in order
4d476f
for the master map retry read to function properly when trying to read
4d476f
plus included maps it needs to return an NSS status instead.
4d476f
4d476f
Signed-off-by: Ian Kent <raven@themaw.net>
4d476f
---
4d476f
 CHANGELOG             |    1 +
4d476f
 daemon/lookup.c       |   14 ++++++++++----
4d476f
 modules/lookup_dir.c  |    2 +-
4d476f
 modules/lookup_file.c |    2 +-
4d476f
 4 files changed, 13 insertions(+), 6 deletions(-)
4d476f
4d476f
--- autofs-5.0.7.orig/CHANGELOG
4d476f
+++ autofs-5.0.7/CHANGELOG
4d476f
@@ -212,6 +212,7 @@
4d476f
 - dont exit on master map read fail timeout.
4d476f
 - set sane default master read wait timeout.
4d476f
 - don't return until after master map retry read.
4d476f
+- make lookup_nss_read_master() return nss status.
4d476f
 
4d476f
 25/07/2012 autofs-5.0.7
4d476f
 =======================
4d476f
--- autofs-5.0.7.orig/daemon/lookup.c
4d476f
+++ autofs-5.0.7/daemon/lookup.c
4d476f
@@ -175,7 +175,7 @@ int lookup_nss_read_master(struct master
4d476f
 		if (result == NSS_STATUS_UNAVAIL)
4d476f
 			master->read_fail = 1;
4d476f
 
4d476f
-		return !result;
4d476f
+		return result;
4d476f
 	} else {
4d476f
 		char *name = master->name;
4d476f
 		char *tmp;
4d476f
@@ -225,7 +225,7 @@ int lookup_nss_read_master(struct master
4d476f
 				if (result == NSS_STATUS_UNAVAIL)
4d476f
 					master->read_fail = 1;
4d476f
 
4d476f
-				return !result;
4d476f
+				return result;
4d476f
 			}
4d476f
 		}
4d476f
 	}
4d476f
@@ -237,7 +237,7 @@ int lookup_nss_read_master(struct master
4d476f
 		if (!list_empty(&nsslist))
4d476f
 			free_sources(&nsslist);
4d476f
 		error(logopt, "can't to read name service switch config.");
4d476f
-		return 0;
4d476f
+		return NSS_STATUS_UNAVAIL;
4d476f
 	}
4d476f
 
4d476f
 	/* First one gets it */
4d476f
@@ -282,6 +282,12 @@ int lookup_nss_read_master(struct master
4d476f
 			}
4d476f
 		}
4d476f
 
4d476f
+		/* We've been instructed to move onto the next source */
4d476f
+		if (result == NSS_STATUS_TRYAGAIN) {
4d476f
+			result = NSS_STATUS_SUCCESS;
4d476f
+			continue;
4d476f
+		}
4d476f
+
4d476f
 		if (result == NSS_STATUS_UNKNOWN ||
4d476f
 		    result == NSS_STATUS_NOTFOUND) {
4d476f
 			debug(logopt, "no map - continuing to next source");
4d476f
@@ -302,7 +308,7 @@ int lookup_nss_read_master(struct master
4d476f
 	if (!list_empty(&nsslist))
4d476f
 		free_sources(&nsslist);
4d476f
 
4d476f
-	return !result;
4d476f
+	return result;
4d476f
 }
4d476f
 
4d476f
 static int do_read_map(struct autofs_point *ap, struct map_source *map, time_t age)
4d476f
--- autofs-5.0.7.orig/modules/lookup_dir.c
4d476f
+++ autofs-5.0.7/modules/lookup_dir.c
4d476f
@@ -154,7 +154,7 @@ static int include_file(struct master *m
4d476f
 	master->depth++;
4d476f
 	debug(logopt, MODPREFIX "include: %s", master->name);
4d476f
 	status = lookup_nss_read_master(master, age);
4d476f
-	if (!status) {
4d476f
+	if (status != NSS_STATUS_SUCCESS) {
4d476f
 		warn(logopt,
4d476f
 		     MODPREFIX
4d476f
 		     "failed to read included master map %s",
4d476f
--- autofs-5.0.7.orig/modules/lookup_file.c
4d476f
+++ autofs-5.0.7/modules/lookup_file.c
4d476f
@@ -503,7 +503,7 @@ int lookup_read_master(struct master *ma
4d476f
 				master->recurse = 1;
4d476f
 			master->depth++;
4d476f
 			status = lookup_nss_read_master(master, age);
4d476f
-			if (!status) {
4d476f
+			if (status != NSS_STATUS_SUCCESS) {
4d476f
 				warn(logopt,
4d476f
 				     MODPREFIX
4d476f
 				     "failed to read included master map %s",