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

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