[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha3-130-g957c4d8

Simo Sorce idra at samba.org
Mon Apr 14 16:52:50 GMT 2008


The branch, v4-0-test has been updated
       via  957c4d893acf9e6db06a3fc3a4687ab6bb238635 (commit)
      from  8dca5b9bbb8706a98ad9a15f1b479be497dd44e7 (commit)

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


- Log -----------------------------------------------------------------
commit 957c4d893acf9e6db06a3fc3a4687ab6bb238635
Author: Simo Sorce <idra at samba.org>
Date:   Mon Apr 14 12:43:37 2008 -0400

    Fix problems with event context not being the parent.

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

Summary of changes:
 source/libnet/libnet.c                |   13 +++++--------
 source/libnet/py_net.c                |   13 +++++++++----
 source/torture/libnet/libnet_domain.c |   11 +++++------
 source/torture/libnet/libnet_group.c  |    6 +++---
 source/torture/libnet/libnet_lookup.c |    8 ++++----
 source/torture/libnet/libnet_rpc.c    |    2 +-
 source/torture/libnet/libnet_share.c  |    4 ++--
 source/torture/libnet/libnet_user.c   |   10 +++++-----
 source/torture/rpc/dfs.c              |    4 ++--
 source/torture/rpc/testjoin.c         |    4 ++--
 source/torture/smbtorture.c           |    4 +++-
 source/torture/ui.c                   |    6 +++---
 source/torture/ui.h                   |    2 +-
 source/torture/util_smb.c             |    3 +--
 source/utils/net/net.c                |   18 ++++++++++++------
 source/utils/net/net.h                |    1 -
 source/utils/net/net_join.c           |   11 ++++++-----
 source/utils/net/net_password.c       |   19 ++++++++++---------
 source/utils/net/net_time.c           |    5 +++--
 source/utils/net/net_user.c           |   13 +++++++------
 source/utils/net/net_vampire.c        |   11 ++++++-----
 21 files changed, 90 insertions(+), 78 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libnet/libnet.c b/source/libnet/libnet.c
index d1605bc..c966898 100644
--- a/source/libnet/libnet.c
+++ b/source/libnet/libnet.c
@@ -28,20 +28,17 @@ struct libnet_context *libnet_context_init(struct event_context *ev,
 {
 	struct libnet_context *ctx;
 
+	/* We require an event context here */
+	if (!ev) {
+		return NULL;
+	}
+
 	/* create brand new libnet context */ 
 	ctx = talloc(ev, struct libnet_context);
 	if (!ctx) {
 		return NULL;
 	}
 
-	/* events */
-	if (ev == NULL) {
-		ev = event_context_find(ctx);
-		if (ev == NULL) {
-			talloc_free(ctx);
-			return NULL;
-		}
-	}
 	ctx->event_ctx = ev;
 	ctx->lp_ctx = lp_ctx;
 
diff --git a/source/libnet/py_net.c b/source/libnet/py_net.c
index 2fcbc5d..cf81d80 100644
--- a/source/libnet/py_net.c
+++ b/source/libnet/py_net.c
@@ -22,11 +22,12 @@
 #include "libnet.h"
 #include "param/param.h"
 #include "libcli/security/security.h"
+#include "lib/events/events.h"
 
-struct libnet_context *py_net_ctx(PyObject *obj)
+struct libnet_context *py_net_ctx(PyObject *obj, struct event_context *ev)
 {
 	/* FIXME: Use obj */
-	return libnet_context_init(NULL, global_loadparm);
+	return libnet_context_init(ev, global_loadparm);
 }
 
 static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs)
@@ -35,6 +36,7 @@ static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs)
 	NTSTATUS status;
 	PyObject *result;
 	TALLOC_CTX *mem_ctx;
+	struct event_context *ev;
 	struct libnet_context *libnet_ctx;
 	const char *kwnames[] = { "domain_name", "netbios_name", "join_type", "level", NULL };
 
@@ -43,9 +45,12 @@ static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs)
 					 &r.in.join_type, &r.in.level))
 		return NULL;
 
-	mem_ctx = talloc_new(NULL);
+	/* FIXME: we really need to get a context from the caller or we may end
+	 * up with 2 event contexts */
+	ev = event_context_init(NULL);
+	mem_ctx = talloc_new(ev);
 
-	libnet_ctx = py_net_ctx(cls);
+	libnet_ctx = py_net_ctx(cls, ev);
 
 	status = libnet_Join(libnet_ctx, mem_ctx, &r);
 	if (NT_STATUS_IS_ERR(status)) {
diff --git a/source/torture/libnet/libnet_domain.c b/source/torture/libnet/libnet_domain.c
index 3c8d574..eb6abc4 100644
--- a/source/torture/libnet/libnet_domain.c
+++ b/source/torture/libnet/libnet_domain.c
@@ -136,7 +136,7 @@ bool torture_domain_open_lsa(struct torture_context *torture)
 	   of specific server name. */
 	domain_name = lp_workgroup(torture->lp_ctx);
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	if (ctx == NULL) {
 		d_printf("failed to create libnet context\n");
 		return false;
@@ -190,7 +190,7 @@ bool torture_domain_close_lsa(struct torture_context *torture)
 		return false;
 	}
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	if (ctx == NULL) {
 		d_printf("failed to create libnet context\n");
 		ret = false;
@@ -245,7 +245,6 @@ bool torture_domain_open_samr(struct torture_context *torture)
 {
 	NTSTATUS status;
 	struct libnet_context *ctx;
-	struct event_context *evt_ctx=NULL;
 	TALLOC_CTX *mem_ctx;
 	struct policy_handle domain_handle, handle;
 	struct libnet_DomainOpen io;
@@ -255,7 +254,7 @@ bool torture_domain_open_samr(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_domainopen_lsa");
 
-	ctx = libnet_context_init(evt_ctx, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	/* we're accessing domain controller so the domain name should be
@@ -320,7 +319,7 @@ bool torture_domain_close_samr(struct torture_context *torture)
 		return false;
 	}
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	if (ctx == NULL) {
 		d_printf("failed to create libnet context\n");
 		ret = false;
@@ -388,7 +387,7 @@ bool torture_domain_list(struct torture_context *torture)
 		return false;
 	}
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	if (ctx == NULL) {
 		d_printf("failed to create libnet context\n");
 		ret = false;
diff --git a/source/torture/libnet/libnet_group.c b/source/torture/libnet/libnet_group.c
index cabccdb..12b8167 100644
--- a/source/torture/libnet/libnet_group.c
+++ b/source/torture/libnet/libnet_group.c
@@ -235,7 +235,7 @@ bool torture_groupinfo_api(struct torture_context *torture)
 
 	prep_mem_ctx = talloc_init("prepare torture group info");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	status = torture_rpc_connection(torture,
@@ -300,7 +300,7 @@ bool torture_grouplist(struct torture_context *torture)
 	struct libnet_GroupList req;
 	int i;
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
@@ -361,7 +361,7 @@ bool torture_creategroup(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_creategroup");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	req.in.group_name = TEST_GROUPNAME;
diff --git a/source/torture/libnet/libnet_lookup.c b/source/torture/libnet/libnet_lookup.c
index 9167d1d..b25b51b 100644
--- a/source/torture/libnet/libnet_lookup.c
+++ b/source/torture/libnet/libnet_lookup.c
@@ -40,7 +40,7 @@ bool torture_lookup(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_lookup");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	lookup.in.hostname = torture_setting_string(torture, "host", NULL);
@@ -84,7 +84,7 @@ bool torture_lookup_host(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_lookup_host");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	lookup.in.hostname = torture_setting_string(torture, "host", NULL);
@@ -127,7 +127,7 @@ bool torture_lookup_pdc(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_lookup_pdc");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	talloc_steal(ctx, mem_ctx);
@@ -171,7 +171,7 @@ bool torture_lookup_sam_name(struct torture_context *torture)
 	struct libnet_context *ctx;
 	struct libnet_LookupName r;
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	mem_ctx = talloc_init("torture lookup sam name");
diff --git a/source/torture/libnet/libnet_rpc.c b/source/torture/libnet/libnet_rpc.c
index 282837d..f25c1ec 100644
--- a/source/torture/libnet/libnet_rpc.c
+++ b/source/torture/libnet/libnet_rpc.c
@@ -89,7 +89,7 @@ static bool torture_rpc_connect(struct torture_context *torture,
 {
 	struct libnet_context *ctx;
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 	
 	d_printf("Testing connection to LSA interface\n");
diff --git a/source/torture/libnet/libnet_share.c b/source/torture/libnet/libnet_share.c
index eb1edff..6bc5be4 100644
--- a/source/torture/libnet/libnet_share.c
+++ b/source/torture/libnet/libnet_share.c
@@ -131,7 +131,7 @@ bool torture_listshares(struct torture_context *torture)
 		goto done;
 	}
 
-	libnetctx = libnet_context_init(NULL, torture->lp_ctx);
+	libnetctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	if (!libnetctx) {
 		printf("Couldn't allocate libnet context\n");
 		ret = false;
@@ -210,7 +210,7 @@ bool torture_delshare(struct torture_context *torture)
 	status = torture_rpc_binding(torture, &binding);
 	torture_assert_ntstatus_ok(torture, status, "Failed to get binding");
 
-	libnetctx = libnet_context_init(NULL, torture->lp_ctx);
+	libnetctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	libnetctx->cred = cmdline_credentials;
 
 	status = torture_rpc_connection(torture,
diff --git a/source/torture/libnet/libnet_user.c b/source/torture/libnet/libnet_user.c
index 5446087..15e3f03 100644
--- a/source/torture/libnet/libnet_user.c
+++ b/source/torture/libnet/libnet_user.c
@@ -241,7 +241,7 @@ bool torture_createuser(struct torture_context *torture)
 
 	mem_ctx = talloc_init("test_createuser");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	req.in.user_name = TEST_USERNAME;
@@ -287,7 +287,7 @@ bool torture_deleteuser(struct torture_context *torture)
 
 	prep_mem_ctx = talloc_init("prepare test_deleteuser");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	req.in.user_name = TEST_USERNAME;
@@ -482,7 +482,7 @@ bool torture_modifyuser(struct torture_context *torture)
 
 	prep_mem_ctx = talloc_init("prepare test_deleteuser");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	status = torture_rpc_connection(torture,
@@ -616,7 +616,7 @@ bool torture_userinfo_api(struct torture_context *torture)
 
 	prep_mem_ctx = talloc_init("prepare torture user info");
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	status = torture_rpc_connection(torture,
@@ -681,7 +681,7 @@ bool torture_userlist(struct torture_context *torture)
 	struct libnet_UserList req;
 	int i;
 
-	ctx = libnet_context_init(NULL, torture->lp_ctx);
+	ctx = libnet_context_init(torture->ev, torture->lp_ctx);
 	ctx->cred = cmdline_credentials;
 
 	domain_name.string = lp_workgroup(torture->lp_ctx);
diff --git a/source/torture/rpc/dfs.c b/source/torture/rpc/dfs.c
index 9cfdd80..5656476 100644
--- a/source/torture/rpc/dfs.c
+++ b/source/torture/rpc/dfs.c
@@ -56,7 +56,7 @@ static bool test_NetShareAdd(TALLOC_CTX *mem_ctx,
 
 	printf("Creating share %s\n", sharename);
 
-	if (!(libnetctx = libnet_context_init(NULL, tctx->lp_ctx))) {
+	if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) {
 		return false;
 	}
 
@@ -96,7 +96,7 @@ static bool test_NetShareDel(TALLOC_CTX *mem_ctx,
 
 	printf("Deleting share %s\n", sharename);
 
-	if (!(libnetctx = libnet_context_init(NULL, tctx->lp_ctx))) {
+	if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) {
 		return false;
 	}
 
diff --git a/source/torture/rpc/testjoin.c b/source/torture/rpc/testjoin.c
index 892886c..100e7ce 100644
--- a/source/torture/rpc/testjoin.c
+++ b/source/torture/rpc/testjoin.c
@@ -311,7 +311,7 @@ _PUBLIC_ struct test_join *torture_join_domain(struct torture_context *tctx,
 	struct samr_SetUserInfo s;
 	union samr_UserInfo u;
 	
-	tj = talloc(NULL, struct test_join);
+	tj = talloc(tctx, struct test_join);
 	if (!tj) return NULL;
 
 	libnet_r = talloc(tj, struct libnet_JoinDomain);
@@ -320,7 +320,7 @@ _PUBLIC_ struct test_join *torture_join_domain(struct torture_context *tctx,
 		return NULL;
 	}
 	
-	libnet_ctx = libnet_context_init(NULL, tctx->lp_ctx);	
+	libnet_ctx = libnet_context_init(tctx->ev, tctx->lp_ctx);	
 	if (!libnet_ctx) {
 		talloc_free(tj);
 		return NULL;
diff --git a/source/torture/smbtorture.c b/source/torture/smbtorture.c
index 4eeea73..faae784 100644
--- a/source/torture/smbtorture.c
+++ b/source/torture/smbtorture.c
@@ -36,6 +36,8 @@
 #include "librpc/rpc/dcerpc.h"
 #include "param/param.h"
 
+#include "auth/credentials/credentials.h"
+
 static bool run_matching(struct torture_context *torture,
 						 const char *prefix, 
 						 const char *expr,
@@ -673,7 +675,7 @@ int main(int argc,char *argv[])
 		exit(1);
 	}
 
-	torture = torture_context_init(talloc_autofree_context(), ui_ops);
+	torture = torture_context_init(cli_credentials_get_event_context(cmdline_credentials), ui_ops);
 	if (basedir != NULL) {
 		if (basedir[0] != '/') {
 			fprintf(stderr, "Please specify an absolute path to --basedir\n");
diff --git a/source/torture/ui.c b/source/torture/ui.c
index a7025aa..efa584e 100644
--- a/source/torture/ui.c
+++ b/source/torture/ui.c
@@ -27,14 +27,14 @@
 #include "auth/credentials/credentials.h"
 #include "lib/cmdline/popt_common.h"
 
-struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx, 
+struct torture_context *torture_context_init(struct event_context *event_ctx, 
 					     const struct torture_ui_ops *ui_ops)
 {
-	struct torture_context *torture = talloc_zero(mem_ctx, 
+	struct torture_context *torture = talloc_zero(event_ctx, 
 						      struct torture_context);
 	torture->ui_ops = ui_ops;
 	torture->returncode = true;
-	torture->ev = cli_credentials_get_event_context(cmdline_credentials);
+	torture->ev = event_ctx;
 
 	if (ui_ops->init)
 		ui_ops->init(torture);
diff --git a/source/torture/ui.h b/source/torture/ui.h
index ec4a658..15b04c2 100644
--- a/source/torture/ui.h
+++ b/source/torture/ui.h
@@ -390,7 +390,7 @@ bool torture_suite_init_tcase(struct torture_suite *suite,
 			      struct torture_tcase *tcase, 
 			      const char *name);
 
-struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx, 
+struct torture_context *torture_context_init(struct event_context *event_ctx, 
 					     const struct torture_ui_ops *ui_ops);
 
 #endif /* __TORTURE_UI_H__ */
diff --git a/source/torture/util_smb.c b/source/torture/util_smb.c
index 5130705..c1a2009 100644
--- a/source/torture/util_smb.c
+++ b/source/torture/util_smb.c
@@ -553,8 +553,7 @@ _PUBLIC_ bool torture_open_connection_ev(struct smbcli_state **c,
 
 _PUBLIC_ bool torture_open_connection(struct smbcli_state **c, struct torture_context *tctx, int conn_index)
 {
-	return torture_open_connection_ev(c, conn_index, tctx,
-					  cli_credentials_get_event_context(cmdline_credentials));
+	return torture_open_connection_ev(c, conn_index, tctx, tctx->ev);
 }
 
 
diff --git a/source/utils/net/net.c b/source/utils/net/net.c
index c908ea6..6086a4c 100644
--- a/source/utils/net/net.c
+++ b/source/utils/net/net.c
@@ -46,6 +46,8 @@
 #include "lib/ldb/include/ldb.h"
 #include "librpc/rpc/dcerpc.h"
 #include "param/param.h"
+#include "lib/events/events.h"
+#include "auth/credentials/credentials.h"
 
 /*
   run a function from a function table. If not found then
@@ -140,7 +142,7 @@ static int binary_net(int argc, const char **argv)
 	int rc;
 	int argc_new;
 	const char **argv_new;
-	TALLOC_CTX *mem_ctx;
+	struct event_context *ev;
 	struct net_context *ctx = NULL;
 	poptContext pc;
 	struct poptOption long_options[] = {
@@ -183,17 +185,21 @@ static int binary_net(int argc, const char **argv)
 
 	dcerpc_init();
 
-	mem_ctx = talloc_init("net_context");
-	ctx = talloc(mem_ctx, struct net_context);
+	ev = event_context_init(NULL);
+	if (!ev) {
+		d_printf("Failed to create an event context\n");
+		exit(1);
+	}
+	ctx = talloc(ev, struct net_context);
 	if (!ctx) {
-		d_printf("talloc_init(net_context) failed\n");
+		d_printf("Failed to talloc a net_context\n");
 		exit(1);
 	}
 
 	ZERO_STRUCTP(ctx);
-	ctx->mem_ctx = mem_ctx;
 	ctx->lp_ctx = cmdline_lp_ctx;
 	ctx->credentials = cmdline_credentials;
+	cli_credentials_set_event_context(ctx->credentials, ev);
 
 	rc = net_run_function(ctx, argc_new-1, argv_new+1, net_functable, net_usage);
 
@@ -201,7 +207,7 @@ static int binary_net(int argc, const char **argv)
 		DEBUG(0,("return code = %d\n", rc));
 	}
 
-	talloc_free(mem_ctx);
+	talloc_free(ev);
 	return rc;
 }
 
diff --git a/source/utils/net/net.h b/source/utils/net/net.h
index 8c4fbd7..1738807 100644
--- a/source/utils/net/net.h
+++ b/source/utils/net/net.h
@@ -22,7 +22,6 @@
 #define _UTIL_NET_H
 
 struct net_context {
-	TALLOC_CTX *mem_ctx;
 	struct cli_credentials *credentials;
 	struct loadparm_context *lp_ctx;
 };
diff --git a/source/utils/net/net_join.c b/source/utils/net/net_join.c
index abdcbf6..2102257 100644
--- a/source/utils/net/net_join.c
+++ b/source/utils/net/net_join.c
@@ -24,6 +24,7 @@
 #include "libnet/libnet.h"
 #include "libcli/security/security.h"
 #include "param/param.h"
+#include "lib/events/events.h"
 
 int net_join(struct net_context *ctx, int argc, const char **argv) 
 {
@@ -38,10 +39,10 @@ int net_join(struct net_context *ctx, int argc, const char **argv)
 		case 0: /* no args -> fail */
 			return net_join_usage(ctx, argc, argv);
 		case 1: /* only DOMAIN */
-			tmp = talloc_strdup(ctx->mem_ctx, argv[0]);
+			tmp = talloc_strdup(ctx, argv[0]);
 			break;
 		case 2: /* DOMAIN and role */
-			tmp = talloc_strdup(ctx->mem_ctx, argv[0]);
+			tmp = talloc_strdup(ctx, argv[0]);
 			if (strcasecmp(argv[1], "BDC") == 0) {
 				secure_channel_type = SEC_CHAN_BDC;
 			} else if (strcasecmp(argv[1], "MEMBER") == 0) {
@@ -57,12 +58,12 @@ int net_join(struct net_context *ctx, int argc, const char **argv)
 
 	domain_name = tmp;
 
-	libnetctx = libnet_context_init(NULL, ctx->lp_ctx);
+	libnetctx = libnet_context_init(event_context_find(ctx), ctx->lp_ctx);
 	if (!libnetctx) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list