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

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