[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-605-gaabe9b3

Michael Adam obnox at samba.org
Wed Dec 12 12:54:29 GMT 2007


The branch, v3-2-test has been updated
       via  aabe9b33fcaed8af98b1ed6b736253e196d87d48 (commit)
      from  ce7fe8acf41e90553431c7cda6823700701835c7 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit aabe9b33fcaed8af98b1ed6b736253e196d87d48
Author: Andreas Schneider <anschneider at suse.de>
Date:   Fri Nov 23 10:54:48 2007 +0100

    Don't restart winbind if a corrupted tdb is found during initialization.
    
    The tdb is validated before it gets initialized. Since then sighandlers changed
    a restart isn't needed anymore.

-----------------------------------------------------------------------

Summary of changes:
 source/winbindd/winbindd.c       |   24 +++++++++---------------
 source/winbindd/winbindd_cache.c |    3 +--
 2 files changed, 10 insertions(+), 17 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/winbindd/winbindd.c b/source/winbindd/winbindd.c
index b695c2e..07cf226 100644
--- a/source/winbindd/winbindd.c
+++ b/source/winbindd/winbindd.c
@@ -1157,20 +1157,6 @@ int main(int argc, char **argv, char **envp)
 
 	pidfile_create("winbindd");
 
-	/* Ensure all cache and idmap caches are consistent
-	   before we startup. */
-
-	if (winbindd_validate_cache()) {
-		/* We have a bad cache, but luckily we
-		   just deleted it. Restart ourselves */
-		int i;
-		/* Ensure we have no open low fd's. */
-		for (i = 3; i < 100; i++) {
-			close(i);
-		}
-		return execve(argv[0], argv, envp);
-	}
-
 #if HAVE_SETPGID
 	/*
 	 * If we're interactive we want to set our own process group for
@@ -1188,7 +1174,15 @@ int main(int argc, char **argv, char **envp)
 		DEBUG(0, ("unable to initialize messaging system\n"));
 		exit(1);
 	}
-	
+
+	/*
+	 * Ensure all cache and idmap caches are consistent
+	 * before we startup.
+	 */
+	if (winbindd_validate_cache() < 0) {
+		DEBUG(0, ("corrupted tdb found, trying to restore backup\n"));
+	}
+
 	/* Initialize cache (ensure version is correct). */
 	if (!initialize_winbindd_cache()) {
 		exit(1);
diff --git a/source/winbindd/winbindd_cache.c b/source/winbindd/winbindd_cache.c
index f3aa0fc..7ec8208 100644
--- a/source/winbindd/winbindd_cache.c
+++ b/source/winbindd/winbindd_cache.c
@@ -3338,8 +3338,7 @@ static void validate_panic(const char *const why)
 
 /***********************************************************************
  Try and validate every entry in the winbindd cache. If we fail here,
- delete the cache tdb and return non-zero - the caller (main winbindd
- function) will restart us as we don't know if we crashed or not.
+ delete the cache tdb and return non-zero.
 ***********************************************************************/
 
 int winbindd_validate_cache(void)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list