[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-4786-gbd1f723

Jeremy Allison jra at samba.org
Tue Jan 6 04:35:58 GMT 2009


The branch, v3-3-test has been updated
       via  bd1f723a14578792f4b8fda214096d66d57da208 (commit)
      from  edac3f78c27a59a6c493f718b6b65ed7ef2a675d (commit)

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


- Log -----------------------------------------------------------------
commit bd1f723a14578792f4b8fda214096d66d57da208
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Jan 5 20:35:03 2009 -0800

    s3:winbindd: recreate the per domain check_online_event without relying on global state
    
    set_event_dispatch_time() is stupid by design and just picks the first
    event with the given name.
    
    metze

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

Summary of changes:
 source/winbindd/winbindd_cm.c |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/winbindd/winbindd_cm.c b/source/winbindd/winbindd_cm.c
index f762498..1e7ae2f 100644
--- a/source/winbindd/winbindd_cm.c
+++ b/source/winbindd/winbindd_cm.c
@@ -500,6 +500,15 @@ void set_domain_online_request(struct winbindd_domain *domain)
 	   because network manager seems to lie.
 	   Wait at least 5 seconds. Heuristics suck... */
 
+
+	GetTimeOfDay(&tev);
+
+	/* Go into "startup" mode again. */
+	domain->startup_time = tev.tv_sec;
+	domain->startup = True;
+
+	tev.tv_sec += 5;
+
 	if (!domain->check_online_event) {
 		/* If we've come from being globally offline we
 		   don't have a check online event handler set.
@@ -508,29 +517,21 @@ void set_domain_online_request(struct winbindd_domain *domain)
 
 		DEBUG(10,("set_domain_online_request: domain %s was globally offline.\n",
 			domain->name ));
-
-		domain->check_online_event = event_add_timed(winbind_event_context(),
-								NULL,
-								timeval_current_ofs(5, 0),
-								"check_domain_online_handler",
-								check_domain_online_handler,
-								domain);
-
-		/* The above *has* to succeed for winbindd to work. */
-		if (!domain->check_online_event) {
-			smb_panic("set_domain_online_request: failed to add online handler");
-		}
 	}
 
-	GetTimeOfDay(&tev);
-
-	/* Go into "startup" mode again. */
-	domain->startup_time = tev.tv_sec;
-	domain->startup = True;
+	TALLOC_FREE(domain->check_online_event);
 
-	tev.tv_sec += 5;
+	domain->check_online_event = event_add_timed(winbind_event_context(),
+						     NULL,
+						     tev,
+						     "check_domain_online_handler",
+						     check_domain_online_handler,
+						     domain);
 
-	set_event_dispatch_time(winbind_event_context(), "check_domain_online_handler", tev);
+	/* The above *has* to succeed for winbindd to work. */
+	if (!domain->check_online_event) {
+		smb_panic("set_domain_online_request: failed to add online handler");
+	}
 }
 
 /****************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list