Author: gd Date: 2007-08-29 12:43:23 +0000 (Wed, 29 Aug 2007) New Revision: 24778
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24778 Log: Make sure krb5 locator requests go to a separate locator winbind child. Guenther Modified: branches/SAMBA_3_2/source/nsswitch/winbindd.c branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c branches/SAMBA_3_2/source/nsswitch/winbindd_util.c branches/SAMBA_3_2_0/source/nsswitch/winbindd.c branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c Changeset: Modified: branches/SAMBA_3_2/source/nsswitch/winbindd.c =================================================================== --- branches/SAMBA_3_2/source/nsswitch/winbindd.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2/source/nsswitch/winbindd.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -1184,6 +1184,7 @@ } init_idmap_child(); + init_locator_child(); smb_nscd_flush_user_cache(); smb_nscd_flush_group_cache(); Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c =================================================================== --- branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2/source/nsswitch/winbindd_dual.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -579,9 +579,9 @@ } for (child = children; child != NULL; child = child->next) { - /* Don't send message to idmap child. We've already + /* Don't send message to internal childs. We've already done so above. */ - if (!child->domain || (child == idmap_child())) { + if (!child->domain || winbindd_internal_child(child)) { continue; } @@ -655,8 +655,8 @@ } for (child = children; child != NULL; child = child->next) { - /* Don't send message to idmap child. */ - if (!child->domain || (child == idmap_child())) { + /* Don't send message to internal childs. */ + if (!child->domain || winbindd_internal_child(child)) { continue; } Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c =================================================================== --- branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2/source/nsswitch/winbindd_misc.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -270,6 +270,18 @@ return WINBINDD_OK; } +static struct winbindd_child static_locator_child; + +void init_locator_child(void) +{ + setup_domain_child(NULL, &static_locator_child, "locator"); +} + +struct winbindd_child *locator_child(void) +{ + return &static_locator_child; +} + void winbindd_dsgetdcname(struct winbindd_cli_state *state) { state->request.domain_name @@ -278,7 +290,7 @@ DEBUG(3, ("[%5lu]: DsGetDcName for %s\n", (unsigned long)state->pid, state->request.domain_name)); - sendto_domain(state, find_our_domain()); + sendto_child(state, locator_child()); } enum winbindd_result winbindd_dual_dsgetdcname(struct winbindd_domain *domain, @@ -603,3 +615,4 @@ request_ok(state); } + Modified: branches/SAMBA_3_2/source/nsswitch/winbindd_util.c =================================================================== --- branches/SAMBA_3_2/source/nsswitch/winbindd_util.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2/source/nsswitch/winbindd_util.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -1353,3 +1353,15 @@ return True; } + +/********************************************************************* + ********************************************************************/ + +BOOL winbindd_internal_child(struct winbindd_child *child) +{ + if (child == idmap_child() || child == locator_child()) { + return True; + } + + return False; +} Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd.c =================================================================== --- branches/SAMBA_3_2_0/source/nsswitch/winbindd.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2_0/source/nsswitch/winbindd.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -1153,6 +1153,7 @@ } init_idmap_child(); + init_locator_child(); smb_nscd_flush_user_cache(); smb_nscd_flush_group_cache(); Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c =================================================================== --- branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_dual.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -579,9 +579,9 @@ } for (child = children; child != NULL; child = child->next) { - /* Don't send message to idmap child. We've already + /* Don't send message to internal childs. We've already done so above. */ - if (!child->domain || (child == idmap_child())) { + if (!child->domain || winbindd_internal_child(child)) { continue; } @@ -655,8 +655,8 @@ } for (child = children; child != NULL; child = child->next) { - /* Don't send message to idmap child. */ - if (!child->domain || (child == idmap_child())) { + /* Don't send message to internal childs. */ + if (!child->domain || winbindd_internal_child(child)) { continue; } Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c =================================================================== --- branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_misc.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -270,6 +270,18 @@ return WINBINDD_OK; } +static struct winbindd_child static_locator_child; + +void init_locator_child(void) +{ + setup_domain_child(NULL, &static_locator_child, "locator"); +} + +struct winbindd_child *locator_child(void) +{ + return &static_locator_child; +} + void winbindd_dsgetdcname(struct winbindd_cli_state *state) { state->request.domain_name @@ -278,7 +290,7 @@ DEBUG(3, ("[%5lu]: DsGetDcName for %s\n", (unsigned long)state->pid, state->request.domain_name)); - sendto_domain(state, find_our_domain()); + sendto_child(state, locator_child()); } enum winbindd_result winbindd_dual_dsgetdcname(struct winbindd_domain *domain, @@ -603,3 +615,4 @@ request_ok(state); } + Modified: branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c =================================================================== --- branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c 2007-08-29 12:39:58 UTC (rev 24777) +++ branches/SAMBA_3_2_0/source/nsswitch/winbindd_util.c 2007-08-29 12:43:23 UTC (rev 24778) @@ -1401,3 +1401,15 @@ return True; } + +/********************************************************************* + ********************************************************************/ + +BOOL winbindd_internal_child(struct winbindd_child *child) +{ + if (child == idmap_child() || child == locator_child()) { + return True; + } + + return False; +}