svn commit: samba r3498 - branches/SAMBA_3_0/source/sam
trunk/source/sam
gd at samba.org
gd at samba.org
Wed Nov 3 00:39:36 GMT 2004
Author: gd
Date: 2004-11-03 00:39:34 +0000 (Wed, 03 Nov 2004)
New Revision: 3498
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3498
Log:
Optimisation of idmap_rid init: Avoid calling a DC for the domain-sid
when trusted domains are disabled anyway.
Guenther
Modified:
branches/SAMBA_3_0/source/sam/idmap_rid.c
trunk/source/sam/idmap_rid.c
Changeset:
Modified: branches/SAMBA_3_0/source/sam/idmap_rid.c
===================================================================
--- branches/SAMBA_3_0/source/sam/idmap_rid.c 2004-11-03 00:38:05 UTC (rev 3497)
+++ branches/SAMBA_3_0/source/sam/idmap_rid.c 2004-11-03 00:39:34 UTC (rev 3498)
@@ -152,13 +152,32 @@
char *domain = NULL;
uint32 info_class = 5;
char *domain_name = NULL;
- DOM_SID *domain_sid;
+ DOM_SID *domain_sid, sid;
fstring sid_str;
int i;
uint32 trusted_num_domains = 0;
char **trusted_domain_names;
DOM_SID *trusted_domain_sids;
-
+ uint32 enum_ctx = 0;
+
+ /* put the results together */
+ *num_domains = 1;
+ *domain_names = (fstring *) malloc(sizeof(fstring) * *num_domains);
+ *domain_sids = (DOM_SID *) malloc(sizeof(DOM_SID) * *num_domains);
+
+ /* avoid calling a DC when trusted domains are not allowed anyway */
+ if (!lp_allow_trusted_domains()) {
+
+ fstrcpy((*domain_names)[0], lp_workgroup());
+ if (!secrets_fetch_domain_sid(lp_workgroup(), &sid)) {
+ DEBUG(0,("rid_idmap_get_domains: failed to retrieve domain sid\n"));
+ return status;
+ }
+ sid_copy(&(*domain_sids)[0], &sid);
+
+ return NT_STATUS_OK;
+ }
+
/* create mem_ctx */
if (!(mem_ctx = talloc_init("rid_idmap_get_trusted_domains"))) {
DEBUG(0, ("rid_idmap_get_domains: talloc_init() failed\n"));
@@ -229,37 +248,32 @@
sid_to_string(sid_str, domain_sid);
DEBUG(10,("rid_idmap_get_domains: my domain: [%s], sid: [%s]\n", domain_name, sid_str));
- if (lp_allow_trusted_domains()) {
+ /* scan trusted domains */
+ DEBUG(10, ("rid_idmap_get_domains: enumerating trusted domains\n"));
+ status = cli_lsa_enum_trust_dom(cli, mem_ctx, &pol, &enum_ctx,
+ &trusted_num_domains,
+ &trusted_domain_names,
+ &trusted_domain_sids);
- uint32 enum_ctx = 0;
+ if (!NT_STATUS_IS_OK(status) &&
+ !NT_STATUS_EQUAL(status, NT_STATUS_NO_MORE_ENTRIES) &&
+ !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
+ DEBUG(1, ("rid_idmap_get_domains: could not enumerate trusted domains\n"));
+ goto out;
+ }
- /* scan trusted domains */
- DEBUG(10, ("rid_idmap_get_domains: enumerating trusted domains\n"));
- status = cli_lsa_enum_trust_dom(cli, mem_ctx, &pol, &enum_ctx,
- &trusted_num_domains,
- &trusted_domain_names,
- &trusted_domain_sids);
-
- if (!NT_STATUS_IS_OK(status) &&
- !NT_STATUS_EQUAL(status, NT_STATUS_NO_MORE_ENTRIES) &&
- !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
- DEBUG(1, ("rid_idmap_get_domains: could not enumerate trusted domains\n"));
- goto out;
- }
-
- /* show trusted domains */
- DEBUG(10,("rid_idmap_get_domains: scan for trusted domains gave %d results:\n", trusted_num_domains));
- for (i=0; i<trusted_num_domains; i++) {
- sid_to_string(sid_str, &trusted_domain_sids[i]);
- DEBUGADD(10,("rid_idmap_get_domains:\t#%d\tDOMAIN: [%s], SID: [%s]\n",
- i, trusted_domain_names[i], sid_str));
- }
+ /* show trusted domains */
+ DEBUG(10,("rid_idmap_get_domains: scan for trusted domains gave %d results:\n", trusted_num_domains));
+ for (i=0; i<trusted_num_domains; i++) {
+ sid_to_string(sid_str, &trusted_domain_sids[i]);
+ DEBUGADD(10,("rid_idmap_get_domains:\t#%d\tDOMAIN: [%s], SID: [%s]\n",
+ i, trusted_domain_names[i], sid_str));
}
/* put the results together */
*num_domains = trusted_num_domains + 1;
- *domain_names = (fstring *) malloc(sizeof(fstring) * *num_domains);
- *domain_sids = (DOM_SID *) malloc(sizeof(DOM_SID) * *num_domains);
+ *domain_names = (fstring *) realloc(domain_names, sizeof(fstring) * *num_domains);
+ *domain_sids = (DOM_SID *) realloc(domain_sids, sizeof(DOM_SID) * *num_domains);
/* first add myself at the end*/
fstrcpy((*domain_names)[0], domain_name);
Modified: trunk/source/sam/idmap_rid.c
===================================================================
--- trunk/source/sam/idmap_rid.c 2004-11-03 00:38:05 UTC (rev 3497)
+++ trunk/source/sam/idmap_rid.c 2004-11-03 00:39:34 UTC (rev 3498)
@@ -152,13 +152,32 @@
char *domain = NULL;
uint32 info_class = 5;
char *domain_name = NULL;
- DOM_SID *domain_sid;
+ DOM_SID *domain_sid, sid;
fstring sid_str;
int i;
uint32 trusted_num_domains = 0;
char **trusted_domain_names;
DOM_SID *trusted_domain_sids;
-
+ uint32 enum_ctx = 0;
+
+ /* put the results together */
+ *num_domains = 1;
+ *domain_names = (fstring *) malloc(sizeof(fstring) * *num_domains);
+ *domain_sids = (DOM_SID *) malloc(sizeof(DOM_SID) * *num_domains);
+
+ /* avoid calling a DC when trusted domains are not allowed anyway */
+ if (!lp_allow_trusted_domains()) {
+
+ fstrcpy((*domain_names)[0], lp_workgroup());
+ if (!secrets_fetch_domain_sid(lp_workgroup(), &sid)) {
+ DEBUG(0,("rid_idmap_get_domains: failed to retrieve domain sid\n"));
+ return status;
+ }
+ sid_copy(&(*domain_sids)[0], &sid);
+
+ return NT_STATUS_OK;
+ }
+
/* create mem_ctx */
if (!(mem_ctx = talloc_init("rid_idmap_get_trusted_domains"))) {
DEBUG(0, ("rid_idmap_get_domains: talloc_init() failed\n"));
@@ -229,37 +248,32 @@
sid_to_string(sid_str, domain_sid);
DEBUG(10,("rid_idmap_get_domains: my domain: [%s], sid: [%s]\n", domain_name, sid_str));
- if (lp_allow_trusted_domains()) {
+ /* scan trusted domains */
+ DEBUG(10, ("rid_idmap_get_domains: enumerating trusted domains\n"));
+ status = cli_lsa_enum_trust_dom(cli, mem_ctx, &pol, &enum_ctx,
+ &trusted_num_domains,
+ &trusted_domain_names,
+ &trusted_domain_sids);
- uint32 enum_ctx = 0;
+ if (!NT_STATUS_IS_OK(status) &&
+ !NT_STATUS_EQUAL(status, NT_STATUS_NO_MORE_ENTRIES) &&
+ !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
+ DEBUG(1, ("rid_idmap_get_domains: could not enumerate trusted domains\n"));
+ goto out;
+ }
- /* scan trusted domains */
- DEBUG(10, ("rid_idmap_get_domains: enumerating trusted domains\n"));
- status = cli_lsa_enum_trust_dom(cli, mem_ctx, &pol, &enum_ctx,
- &trusted_num_domains,
- &trusted_domain_names,
- &trusted_domain_sids);
-
- if (!NT_STATUS_IS_OK(status) &&
- !NT_STATUS_EQUAL(status, NT_STATUS_NO_MORE_ENTRIES) &&
- !NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
- DEBUG(1, ("rid_idmap_get_domains: could not enumerate trusted domains\n"));
- goto out;
- }
-
- /* show trusted domains */
- DEBUG(10,("rid_idmap_get_domains: scan for trusted domains gave %d results:\n", trusted_num_domains));
- for (i=0; i<trusted_num_domains; i++) {
- sid_to_string(sid_str, &trusted_domain_sids[i]);
- DEBUGADD(10,("rid_idmap_get_domains:\t#%d\tDOMAIN: [%s], SID: [%s]\n",
- i, trusted_domain_names[i], sid_str));
- }
+ /* show trusted domains */
+ DEBUG(10,("rid_idmap_get_domains: scan for trusted domains gave %d results:\n", trusted_num_domains));
+ for (i=0; i<trusted_num_domains; i++) {
+ sid_to_string(sid_str, &trusted_domain_sids[i]);
+ DEBUGADD(10,("rid_idmap_get_domains:\t#%d\tDOMAIN: [%s], SID: [%s]\n",
+ i, trusted_domain_names[i], sid_str));
}
/* put the results together */
*num_domains = trusted_num_domains + 1;
- *domain_names = (fstring *) malloc(sizeof(fstring) * *num_domains);
- *domain_sids = (DOM_SID *) malloc(sizeof(DOM_SID) * *num_domains);
+ *domain_names = (fstring *) realloc(domain_names, sizeof(fstring) * *num_domains);
+ *domain_sids = (DOM_SID *) realloc(domain_sids, sizeof(DOM_SID) * *num_domains);
/* first add myself at the end*/
fstrcpy((*domain_names)[0], domain_name);
More information about the samba-cvs
mailing list