summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
Diffstat (limited to 'source4')
-rw-r--r--source4/torture/rpc/schannel.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/source4/torture/rpc/schannel.c b/source4/torture/rpc/schannel.c
index c9c8c81b3c..f0279f0d04 100644
--- a/source4/torture/rpc/schannel.c
+++ b/source4/torture/rpc/schannel.c
@@ -507,8 +507,10 @@ struct torture_schannel_bench {
int nprocs;
int nconns;
struct torture_schannel_bench_conn *conns;
- struct test_join *join_ctx;
- struct cli_credentials *wks_creds;
+ struct test_join *join_ctx1;
+ struct cli_credentials *wks_creds1;
+ struct test_join *join_ctx2;
+ struct cli_credentials *wks_creds2;
struct cli_credentials *user1_creds;
struct cli_credentials *user2_creds;
struct dcerpc_binding *b;
@@ -673,19 +675,27 @@ bool torture_rpc_schannel_bench1(struct torture_context *torture)
cli_credentials_parse_string(s->user1_creds, tmp, CRED_SPECIFIED);
}
- s->join_ctx = torture_join_domain(s->tctx, talloc_asprintf(s, "%sb", TEST_MACHINE_NAME),
- ACB_WSTRUST, &s->wks_creds);
- torture_assert(torture, s->join_ctx != NULL,
+ s->join_ctx1 = torture_join_domain(s->tctx, talloc_asprintf(s, "%sb", TEST_MACHINE_NAME),
+ ACB_WSTRUST, &s->wks_creds1);
+ torture_assert(torture, s->join_ctx1 != NULL,
+ "Failed to join domain with acct_flags=ACB_WSTRUST");
+ s->join_ctx2 = torture_join_domain(s->tctx, talloc_asprintf(s, "%sc", TEST_MACHINE_NAME),
+ ACB_WSTRUST, &s->wks_creds2);
+ torture_assert(torture, s->join_ctx2 != NULL,
"Failed to join domain with acct_flags=ACB_WSTRUST");
- cli_credentials_set_kerberos_state(s->wks_creds, CRED_DONT_USE_KERBEROS);
+ cli_credentials_set_kerberos_state(s->wks_creds1, CRED_DONT_USE_KERBEROS);
+ cli_credentials_set_kerberos_state(s->wks_creds2, CRED_DONT_USE_KERBEROS);
for (i=0; i < s->nprocs; i++) {
s->conns[i].s = s;
s->conns[i].index = i;
- s->conns[i].wks_creds = (struct cli_credentials *)talloc_memdup(s->conns,
- s->wks_creds,
- sizeof(*s->wks_creds));
+ s->conns[i].wks_creds = (struct cli_credentials *)talloc_memdup(
+ s->conns, s->wks_creds1,sizeof(*s->wks_creds1));
+ if ((i % 2) && (torture_setting_bool(torture, "multijoin", false))) {
+ memcpy(s->conns[i].wks_creds, s->wks_creds2,
+ talloc_get_size(s->conns[i].wks_creds));
+ }
s->conns[i].wks_creds->netlogon_creds = NULL;
}
@@ -755,6 +765,7 @@ bool torture_rpc_schannel_bench1(struct torture_context *torture)
(unsigned long long)s->total,
(unsigned)s->total/s->timelimit);
- torture_leave_domain(s->join_ctx);
+ torture_leave_domain(s->join_ctx1);
+ torture_leave_domain(s->join_ctx2);
return true;
}