svn commit: samba r20082 - in branches: SAMBA_3_0/source/nsswitch
SAMBA_3_0_24/source/nsswitch
jra at samba.org
jra at samba.org
Fri Dec 8 18:07:45 GMT 2006
Author: jra
Date: 2006-12-08 18:07:44 +0000 (Fri, 08 Dec 2006)
New Revision: 20082
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20082
Log:
When fork_domain_child is forked when we're offline
the child inherits *all* active check_online timout handlers.
This is bad when it's not our domain (ie. BUILTIN).
Jeremy.
Modified:
branches/SAMBA_3_0/source/nsswitch/winbindd_dual.c
branches/SAMBA_3_0_24/source/nsswitch/winbindd_dual.c
Changeset:
Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_dual.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_dual.c 2006-12-08 18:06:38 UTC (rev 20081)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_dual.c 2006-12-08 18:07:44 UTC (rev 20082)
@@ -755,6 +755,7 @@
{
int fdpair[2];
struct winbindd_cli_state state;
+ struct winbindd_domain *domain;
extern BOOL override_logfile;
if (socketpair(AF_UNIX, SOCK_STREAM, 0, fdpair) != 0) {
@@ -844,6 +845,16 @@
child->domain->startup_time = time(NULL);
}
+ for (domain = domain_list(); domain; domain = domain->next) {
+ if (domain != child->domain) {
+ /* Ensure we have no "check_online" events pending
+ that are not on this domain. */
+ if (domain->check_online_event) {
+ TALLOC_FREE(domain->check_online_event);
+ }
+ }
+ }
+
while (1) {
int ret;
Modified: branches/SAMBA_3_0_24/source/nsswitch/winbindd_dual.c
===================================================================
--- branches/SAMBA_3_0_24/source/nsswitch/winbindd_dual.c 2006-12-08 18:06:38 UTC (rev 20081)
+++ branches/SAMBA_3_0_24/source/nsswitch/winbindd_dual.c 2006-12-08 18:07:44 UTC (rev 20082)
@@ -755,6 +755,7 @@
{
int fdpair[2];
struct winbindd_cli_state state;
+ struct winbindd_domain *domain;
extern BOOL override_logfile;
if (socketpair(AF_UNIX, SOCK_STREAM, 0, fdpair) != 0) {
@@ -844,6 +845,16 @@
child->domain->startup_time = time(NULL);
}
+ for (domain = domain_list(); domain; domain = domain->next) {
+ if (domain != child->domain) {
+ /* Ensure we have no "check_online" events pending
+ that are not on this domain. */
+ if (domain->check_online_event) {
+ TALLOC_FREE(domain->check_online_event);
+ }
+ }
+ }
+
while (1) {
int ret;
More information about the samba-cvs
mailing list