Blame SOURCES/autofs-5.1.3-make-open_lookup-error-handling-more-consistent.patch

304803
autofs-5.1.3 - make open_lookup() error handling more consistent
304803
304803
From: Ian Kent <raven@themaw.net>
304803
304803
If the open of a lookup module fails then open_lookup() should return
304803
an NSS status that causes the source to be skipped as it is most likely
304803
due to the map source not being configured.
304803
304803
Currently open_lookup() returns NSS_STATUS_UNAVAIL for failures whereas
304803
much of the other lookup code returns NSS_STATUS_UNKNOWN for similar
304803
errors encountered by open_lookup().
304803
304803
But NSS_STATUS_UNAVAIL will result in waiting for the lookup module to
304803
become avaiable when trying to read the master map at startup even
304803
though it isn't likely to become available. So NSS_STATUS_UNKNOWN is
304803
more appropriate becuase that will cause the source to be skipped and
304803
is used for the same purpose elsewhere.
304803
304803
Signed-off-by: Ian Kent <raven@themaw.net>
304803
---
304803
 CHANGELOG       |    1 +
304803
 daemon/module.c |   14 +++++++-------
304803
 2 files changed, 8 insertions(+), 7 deletions(-)
304803
304803
--- autofs-5.0.7.orig/CHANGELOG
304803
+++ autofs-5.0.7/CHANGELOG
304803
@@ -259,6 +259,7 @@
304803
 - revert fix argc off by one in mount_autofs.c.
304803
 - only take master map mutex for master map update.
304803
 - fix nisplus lookup init not configured check.
304803
+- make open_lookup() error handling more consistent.
304803
 
304803
 25/07/2012 autofs-5.0.7
304803
 =======================
304803
--- autofs-5.0.7.orig/daemon/module.c
304803
+++ autofs-5.0.7/daemon/module.c
304803
@@ -73,7 +73,7 @@ int open_lookup(const char *name, const
304803
 			char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
304803
 			logerr("%s%s", err_prefix, estr);
304803
 		}
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	type = strdup(name);
304803
@@ -83,7 +83,7 @@ int open_lookup(const char *name, const
304803
 			char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
304803
 			logerr("%s%s", err_prefix, estr);
304803
 		}
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	size = snprintf(fnbuf, sizeof(fnbuf),
304803
@@ -95,7 +95,7 @@ int open_lookup(const char *name, const
304803
 			char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
304803
 			logerr("%s%s", err_prefix, estr);
304803
 		}
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	if (!(dh = dlopen(fnbuf, RTLD_NOW))) {
304803
@@ -104,7 +104,7 @@ int open_lookup(const char *name, const
304803
 			       err_prefix, name, dlerror());
304803
 		free(mod);
304803
 		free(type);
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	if (!(ver = (int *) dlsym(dh, "lookup_version"))
304803
@@ -115,7 +115,7 @@ int open_lookup(const char *name, const
304803
 		dlclose(dh);
304803
 		free(mod);
304803
 		free(type);
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	if (!(mod->lookup_init = (lookup_init_t) dlsym(dh, "lookup_init")) ||
304803
@@ -129,14 +129,14 @@ int open_lookup(const char *name, const
304803
 		dlclose(dh);
304803
 		free(mod);
304803
 		free(type);
304803
-		return NSS_STATUS_UNAVAIL;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	if (mod->lookup_init(mapfmt, argc, argv, &mod->context)) {
304803
 		dlclose(dh);
304803
 		free(mod);
304803
 		free(type);
304803
-		return NSS_STATUS_NOTFOUND;
304803
+		return NSS_STATUS_UNKNOWN;
304803
 	}
304803
 
304803
 	mod->type = type;