[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha2-1114-g80ce9a3

Jelmer Vernooij jelmer at samba.org
Thu Feb 28 23:47:58 GMT 2008


The branch, v4-0-test has been updated
       via  80ce9a3bbc43535d7c4bdd0ec402272175732ebc (commit)
       via  40dffc177babec01c63fb717506fa86ff70a5b28 (commit)
       via  3cf3922c806d0e33439073d204b44bf0af3102d5 (commit)
       via  4472d7e1e47d4fe6b1c60e28d168cce99b237979 (commit)
      from  ee170c85e0e76411bd752de5fe51db6940dab929 (commit)

http://gitweb.samba.org/?samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 80ce9a3bbc43535d7c4bdd0ec402272175732ebc
Merge: 40dffc177babec01c63fb717506fa86ff70a5b28 ee170c85e0e76411bd752de5fe51db6940dab929
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Feb 29 00:47:14 2008 +0100

    Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into v4-0-test

commit 40dffc177babec01c63fb717506fa86ff70a5b28
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Fri Feb 29 00:46:44 2008 +0100

    Convert to new torture API.

commit 3cf3922c806d0e33439073d204b44bf0af3102d5
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Thu Feb 28 21:02:49 2008 +0100

    Remove use of global_loadparm.

commit 4472d7e1e47d4fe6b1c60e28d168cce99b237979
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Thu Feb 28 20:30:03 2008 +0100

    Remove use of global_loadparm.

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

Summary of changes:
 source/libcli/finddcs.c                     |   11 ++++-
 source/libcli/smb_composite/fetchfile.c     |    2 +-
 source/libcli/smb_composite/smb_composite.h |    1 +
 source/libnet/libnet_lookup.c               |    3 +-
 source/torture/libnet/groupinfo.c           |    2 +-
 source/torture/libnet/groupman.c            |    6 +--
 source/torture/libnet/userinfo.c            |   12 ++--
 source/torture/libnet/userman.c             |   54 +++++++++------------
 source/torture/libnet/utils.c               |   68 +++++++++-----------------
 source/torture/libnet/utils.h               |    9 ++-
 source/torture/raw/composite.c              |    2 +
 source/winbind/wb_dom_info.c                |    1 +
 12 files changed, 78 insertions(+), 93 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libcli/finddcs.c b/source/libcli/finddcs.c
index 67ba47d..56f931c 100644
--- a/source/libcli/finddcs.c
+++ b/source/libcli/finddcs.c
@@ -41,6 +41,8 @@ struct finddcs_state {
 	struct nbtd_getdcname r;
 	struct nbt_name_status node_status;
 
+	struct smb_iconv_convenience *iconv_convenience;
+
 	int num_dcs;
 	struct nbt_dc_name *dcs;
 	uint16_t nbt_port;
@@ -67,6 +69,7 @@ struct composite_context *finddcs_send(TALLOC_CTX *mem_ctx,
 				       const char *domain_name,
 				       int name_type,
 				       struct dom_sid *domain_sid,
+				       struct smb_iconv_convenience *iconv_convenience,
 				       struct resolve_context *resolve_ctx,
 				       struct event_context *event_ctx,
 				       struct messaging_context *msg_ctx)
@@ -87,6 +90,7 @@ struct composite_context *finddcs_send(TALLOC_CTX *mem_ctx,
 	state->nbt_port = nbt_port;
 	state->my_netbios_name = talloc_strdup(state, my_netbios_name);
 	state->domain_name = talloc_strdup(state, domain_name);
+	state->iconv_convenience = iconv_convenience;
 	if (composite_nomem(state->domain_name, c)) return c;
 
 	if (domain_sid) {
@@ -197,7 +201,7 @@ static void fallback_node_status(struct finddcs_state *state)
 	state->node_status.in.retries = 2;
 
 	nbtsock = nbt_name_socket_init(state, state->ctx->event_ctx, 
-				       lp_iconv_convenience(global_loadparm));
+				       state->iconv_convenience);
 	if (composite_nomem(nbtsock, state->ctx)) return;
 	
 	name_req = nbt_name_status_send(nbtsock, &state->node_status);
@@ -255,6 +259,7 @@ NTSTATUS finddcs(TALLOC_CTX *mem_ctx,
 		 uint16_t nbt_port,
 		 const char *domain_name, int name_type, 
 		 struct dom_sid *domain_sid,
+		 struct smb_iconv_convenience *iconv_convenience,
 		 struct resolve_context *resolve_ctx,
 		 struct event_context *event_ctx,
 		 struct messaging_context *msg_ctx,
@@ -264,7 +269,9 @@ NTSTATUS finddcs(TALLOC_CTX *mem_ctx,
 						   my_netbios_name,
 						   nbt_port,
 						   domain_name, name_type,
-						   domain_sid, resolve_ctx,
+						   domain_sid, 
+						   iconv_convenience,
+						   resolve_ctx,
 						   event_ctx, msg_ctx);
 	return finddcs_recv(c, mem_ctx, num_dcs, dcs);
 }
diff --git a/source/libcli/smb_composite/fetchfile.c b/source/libcli/smb_composite/fetchfile.c
index e431279..d8d7481 100644
--- a/source/libcli/smb_composite/fetchfile.c
+++ b/source/libcli/smb_composite/fetchfile.c
@@ -150,7 +150,7 @@ struct composite_context *smb_composite_fetchfile_send(struct smb_composite_fetc
 	state->connect->in.options	= io->in.options;
 
 	state->creq = smb_composite_connect_send(state->connect, state, 
-						 lp_resolve_context(global_loadparm), event_ctx);
+						 io->in.resolve_ctx, event_ctx);
 	if (state->creq == NULL) goto failed;
 
 	state->creq->async.private_data = c;
diff --git a/source/libcli/smb_composite/smb_composite.h b/source/libcli/smb_composite/smb_composite.h
index 964ffb0..e7e1318 100644
--- a/source/libcli/smb_composite/smb_composite.h
+++ b/source/libcli/smb_composite/smb_composite.h
@@ -56,6 +56,7 @@ struct smb_composite_fetchfile {
 		const char *workgroup;
 		const char *filename;
 		struct smbcli_options options;
+		struct resolve_context *resolve_ctx;
 	} in;
 	struct {
 		uint8_t *data;
diff --git a/source/libnet/libnet_lookup.c b/source/libnet/libnet_lookup.c
index 409cc75..cab4d9e 100644
--- a/source/libnet/libnet_lookup.c
+++ b/source/libnet/libnet_lookup.c
@@ -197,7 +197,8 @@ struct composite_context* libnet_LookupDCs_send(struct libnet_context *ctx,
 
 	c = finddcs_send(mem_ctx, lp_netbios_name(ctx->lp_ctx), lp_nbt_port(ctx->lp_ctx),
 			 io->in.domain_name, io->in.name_type,
-			 NULL, ctx->resolve_ctx, ctx->event_ctx, msg_ctx);
+			 NULL, lp_iconv_convenience(ctx->lp_ctx), 
+			 ctx->resolve_ctx, ctx->event_ctx, msg_ctx);
 	return c;
 }
 
diff --git a/source/torture/libnet/groupinfo.c b/source/torture/libnet/groupinfo.c
index 55edb9d..4ddb1ce 100644
--- a/source/torture/libnet/groupinfo.c
+++ b/source/torture/libnet/groupinfo.c
@@ -96,7 +96,7 @@ bool torture_groupinfo(struct torture_context *torture)
 	/*
 	 * Testing synchronous version
 	 */
-	if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
 		ret = false;
 		goto done;
 	}
diff --git a/source/torture/libnet/groupman.c b/source/torture/libnet/groupman.c
index adb055c..51b1c65 100644
--- a/source/torture/libnet/groupman.c
+++ b/source/torture/libnet/groupman.c
@@ -67,12 +67,10 @@ bool torture_groupadd(struct torture_context *torture)
 					&p,
 					&ndr_table_samr);
 	
-	if (!NT_STATUS_IS_OK(status)) {
-		return false;
-	}
+	torture_assert_ntstatus_ok(torture, status, "RPC connection");
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
-	if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
 		ret = false;
 		goto done;
 	}
diff --git a/source/torture/libnet/userinfo.c b/source/torture/libnet/userinfo.c
index e862435..11e57f8 100644
--- a/source/torture/libnet/userinfo.c
+++ b/source/torture/libnet/userinfo.c
@@ -152,12 +152,12 @@ bool torture_userinfo(struct torture_context *torture)
 	/*
 	 * Testing synchronous version
 	 */
-	if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
 		ret = false;
 		goto done;
 	}
 
-	if (!test_user_create(p, mem_ctx, &h, TEST_USERNAME, &rid)) {
+	if (!test_user_create(torture, p, mem_ctx, &h, TEST_USERNAME, &rid)) {
 		ret = false;
 		goto done;
 	}
@@ -167,7 +167,7 @@ bool torture_userinfo(struct torture_context *torture)
 		goto done;
 	}
 
-	if (!test_user_cleanup(p, mem_ctx, &h, TEST_USERNAME)) {
+	if (!test_user_cleanup(torture, p, mem_ctx, &h, TEST_USERNAME)) {
 		ret = false;
 		goto done;
 	}
@@ -175,12 +175,12 @@ bool torture_userinfo(struct torture_context *torture)
 	/*
 	 * Testing asynchronous version and monitor messages
 	 */
-	if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
 		ret = false;
 		goto done;
 	}
 
-	if (!test_user_create(p, mem_ctx, &h, TEST_USERNAME, &rid)) {
+	if (!test_user_create(torture, p, mem_ctx, &h, TEST_USERNAME, &rid)) {
 		ret = false;
 		goto done;
 	}
@@ -190,7 +190,7 @@ bool torture_userinfo(struct torture_context *torture)
 		goto done;
 	}
 
-	if (!test_user_cleanup(p, mem_ctx, &h, TEST_USERNAME)) {
+	if (!test_user_cleanup(torture, p, mem_ctx, &h, TEST_USERNAME)) {
 		ret = false;
 		goto done;
 	}
diff --git a/source/torture/libnet/userman.c b/source/torture/libnet/userman.c
index 1d630e5..5ce0a64 100644
--- a/source/torture/libnet/userman.c
+++ b/source/torture/libnet/userman.c
@@ -79,7 +79,8 @@ static bool test_useradd_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 
 }
 
-static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+static bool test_usermod(struct torture_context *tctx, struct dcerpc_pipe *p, 
+			 TALLOC_CTX *mem_ctx,
 			 struct policy_handle *handle, int num_changes,
 			 struct libnet_rpc_usermod *mod, char **username)
 {
@@ -102,9 +103,10 @@ static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	mod->in.username = talloc_strdup(mem_ctx, *username);
 	mod->in.domain_handle = *handle;
 
-	printf("modifying user (%d simultaneous change(s))\n", num_changes);
+	torture_comment(tctx, "modifying user (%d simultaneous change(s))\n", 
+			num_changes);
 
-	printf("fields to change: [");
+	torture_comment(tctx, "fields to change: [");
 
 	for (i = 0; i < num_changes && i < FIELDS_NUM - 1; i++) {
 		const char *fldname;
@@ -201,13 +203,10 @@ static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 
 		printf(((i < num_changes - 1) ? "%s," : "%s"), fldname);
 	}
-	printf("]\n");
+	torture_comment(tctx, "]\n");
 
 	status = libnet_rpc_usermod(p, mem_ctx, mod);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("Failed to call sync libnet_rpc_usermod - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "Failed to call sync libnet_rpc_usermod");
 
 	return true;
 }
@@ -266,7 +265,8 @@ static bool test_userdel(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	}
 
 
-static bool test_compare(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+static bool test_compare(struct torture_context *tctx, 
+			 struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 			 struct policy_handle *handle, struct libnet_rpc_usermod *mod,
 			 const char *username)
 {
@@ -282,10 +282,7 @@ static bool test_compare(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	info.in.level = 21;             /* the most rich infolevel available */
 
 	status = libnet_rpc_userinfo(p, mem_ctx, &info);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("Failed to call sync libnet_rpc_userinfo - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "Failed to call sync libnet_rpc_userinfo");
 
 	i = &info.out.info.info21;
 
@@ -321,12 +318,10 @@ bool torture_useradd(struct torture_context *torture)
 					&p,
 					&ndr_table_samr);
 	
-	if (!NT_STATUS_IS_OK(status)) {
-		return false;
-	}
+	torture_assert_ntstatus_ok(torture, status, "RPC connect failed");
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
-	if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
 		ret = false;
 		goto done;
 	}
@@ -336,12 +331,12 @@ bool torture_useradd(struct torture_context *torture)
 		goto done;
 	}
 
-	if (!test_user_cleanup(p, mem_ctx, &h, name)) {
+	if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
 		ret = false;
 		goto done;
 	}
 
-	if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
 		ret = false;
 		goto done;
 	}
@@ -351,7 +346,7 @@ bool torture_useradd(struct torture_context *torture)
 		goto done;
 	}
 
-	if (!test_user_cleanup(p, mem_ctx, &h, name)) {
+	if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
 		ret = false;
 		goto done;
 	}
@@ -385,12 +380,12 @@ bool torture_userdel(struct torture_context *torture)
 	}
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
-	if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
 		ret = false;
 		goto done;
 	}
 
-	if (!test_user_create(p, mem_ctx, &h, name, &rid)) {
+	if (!test_user_create(torture, p, mem_ctx, &h, name, &rid)) {
 		ret = false;
 		goto done;
 	}
@@ -425,20 +420,17 @@ bool torture_usermod(struct torture_context *torture)
 					&p,
 					&ndr_table_samr);
 	
-	if (!NT_STATUS_IS_OK(status)) {
-		ret = false;
-		goto done;
-	}
+	torture_assert_ntstatus_ok(torture, status, "RPC connect");
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
 	name = talloc_strdup(mem_ctx, TEST_USERNAME);
 
-	if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
+	if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
 		ret = false;
 		goto done;
 	}
 
-	if (!test_user_create(p, mem_ctx, &h, name, &rid)) {
+	if (!test_user_create(torture, p, mem_ctx, &h, name, &rid)) {
 		ret = false;
 		goto done;
 	}
@@ -446,19 +438,19 @@ bool torture_usermod(struct torture_context *torture)
 	for (i = 1; i < FIELDS_NUM; i++) {
 		struct libnet_rpc_usermod m;
 
-		if (!test_usermod(p, mem_ctx, &h, i, &m, &name)) {
+		if (!test_usermod(torture, p, mem_ctx, &h, i, &m, &name)) {
 			ret = false;
 			goto cleanup;
 		}
 
-		if (!test_compare(p, mem_ctx, &h, &m, name)) {
+		if (!test_compare(torture, p, mem_ctx, &h, &m, name)) {
 			ret = false;
 			goto cleanup;
 		}
 	}
 	
 cleanup:	
-	if (!test_user_cleanup(p, mem_ctx, &h, name)) {
+	if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
 		ret = false;
 		goto done;
 	}
diff --git a/source/torture/libnet/utils.c b/source/torture/libnet/utils.c
index 47bb931..d4124cc 100644
--- a/source/torture/libnet/utils.c
+++ b/source/torture/libnet/utils.c
@@ -29,7 +29,8 @@
 #include "param/param.h"
 
 
-bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+bool test_opendomain(struct torture_context *tctx, 
+		     struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 		     struct policy_handle *handle, struct lsa_String *domname,
 		     struct dom_sid2 *sid)
 {
@@ -39,51 +40,41 @@ bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	struct samr_LookupDomain r2;
 	struct samr_OpenDomain r3;
 	
-	printf("connecting\n");
+	torture_comment(tctx, "connecting\n");
 	
 	r1.in.system_name = 0;
 	r1.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
 	r1.out.connect_handle = &h;
 	
 	status = dcerpc_samr_Connect(p, mem_ctx, &r1);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("Connect failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "Connect failed");
 	
 	r2.in.connect_handle = &h;
 	r2.in.domain_name = domname;
 
-	printf("domain lookup on %s\n", domname->string);
+	torture_comment(tctx, "domain lookup on %s\n", domname->string);
 
 	status = dcerpc_samr_LookupDomain(p, mem_ctx, &r2);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("LookupDomain failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "LookupDomain failed");
 
 	r3.in.connect_handle = &h;
 	r3.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
 	r3.in.sid = r2.out.sid;
 	r3.out.domain_handle = &domain_handle;
 
-	printf("opening domain\n");
+	torture_comment(tctx, "opening domain\n");
 
 	status = dcerpc_samr_OpenDomain(p, mem_ctx, &r3);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("OpenDomain failed - %s\n", nt_errstr(status));
-		return false;
-	} else {
-		*handle = domain_handle;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "OpenDomain failed");
+	*handle = domain_handle;
 
 	*sid = *r2.out.sid;
 	return true;
 }
 
 
-bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
-		       struct policy_handle *domain_handle,
+bool test_user_cleanup(struct torture_context *tctx, struct dcerpc_pipe *p, 
+		       TALLOC_CTX *mem_ctx, struct policy_handle *domain_handle,
 		       const char *name)
 {
 	NTSTATUS status;
@@ -100,13 +91,10 @@ bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	r1.in.num_names      = 1;
 	r1.in.names          = names;
 	
-	printf("user account lookup '%s'\n", name);
+	torture_comment(tctx, "user account lookup '%s'\n", name);
 
 	status = dcerpc_samr_LookupNames(p, mem_ctx, &r1);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("LookupNames failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "LookupNames failed");
 
 	rid = r1.out.rids.ids[0];
 	
@@ -115,30 +103,25 @@ bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	r2.in.rid            = rid;
 	r2.out.user_handle   = &user_handle;
 
-	printf("opening user account\n");
+	torture_comment(tctx, "opening user account\n");
 
 	status = dcerpc_samr_OpenUser(p, mem_ctx, &r2);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("OpenUser failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "OpenUser failed");
 
 	r3.in.user_handle  = &user_handle;
 	r3.out.user_handle = &user_handle;
 
-	printf("deleting user account\n");
+	torture_comment(tctx, "deleting user account\n");
 	
 	status = dcerpc_samr_DeleteUser(p, mem_ctx, &r3);
-	if (!NT_STATUS_IS_OK(status)) {
-		printf("DeleteUser failed - %s\n", nt_errstr(status));
-		return false;
-	}
+	torture_assert_ntstatus_ok(tctx, status, "DeleteUser failed");
 	
 	return true;
 }
 
 
-bool test_user_create(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
+bool test_user_create(struct torture_context *tctx, 
+		      struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 		      struct policy_handle *handle, const char *name,
 		      uint32_t *rid)
 {
@@ -155,25 +138,22 @@ bool test_user_create(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
 	r.out.user_handle  = &user_handle;
 	r.out.rid          = rid;
 
-	printf("creating user account %s\n", name);
+	torture_comment(tctx, "creating user account %s\n", name);
 
 	status = dcerpc_samr_CreateUser(p, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("CreateUser failed - %s\n", nt_errstr(status));
 
 		if (NT_STATUS_EQUAL(status, NT_STATUS_USER_EXISTS)) {
-			printf("User (%s) already exists - attempting to delete and recreate account again\n", name);
-			if (!test_user_cleanup(p, mem_ctx, handle, name)) {
+			torture_comment(tctx, "User (%s) already exists - attempting to delete and recreate account again\n", name);
+			if (!test_user_cleanup(tctx, p, mem_ctx, handle, name)) {
 				return false;
 			}
 
-			printf("creating user account\n");
+			torture_comment(tctx, "creating user account\n");
 			
 			status = dcerpc_samr_CreateUser(p, mem_ctx, &r);
-			if (!NT_STATUS_IS_OK(status)) {
-				printf("CreateUser failed - %s\n", nt_errstr(status));
-				return false;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list