[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha3-268-gb7c96e0

Simo Sorce idra at samba.org
Mon Apr 21 23:59:18 GMT 2008


The branch, v4-0-test has been updated
       via  b7c96e0cc270bd3b1c9bd117a22df3f657b6acd5 (commit)
       via  c16d1d430a0f1e3643c1e769b10e9d88b4719d17 (commit)
       via  3045d391626fba169aa26be52174883e18d323e9 (commit)
      from  ca7e4d9166a7cb10495cf3ecd9c4e72103fbec30 (commit)

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


- Log -----------------------------------------------------------------
commit b7c96e0cc270bd3b1c9bd117a22df3f657b6acd5
Author: Simo Sorce <idra at samba.org>
Date:   Mon Apr 21 19:53:29 2008 -0400

    Make sure we have an event context available

commit c16d1d430a0f1e3643c1e769b10e9d88b4719d17
Author: Simo Sorce <idra at samba.org>
Date:   Mon Apr 21 19:53:15 2008 -0400

    Fix build

commit 3045d391626fba169aa26be52174883e18d323e9
Author: Simo Sorce <idra at samba.org>
Date:   Mon Apr 21 17:58:23 2008 -0400

    Remove more event_context_init() uses from function calls within deep down the code.
    Make sure we pass around the event_context where we need it instead.
    All test but a few python ones fail. Jelmer promised to fix them.

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

Summary of changes:
 source/auth/gensec/gensec.c                |   22 +++----------
 source/client/cifsdd.c                     |   17 +++++++----
 source/client/cifsdd.h                     |    2 +
 source/client/cifsddio.c                   |   12 +++++--
 source/client/client.c                     |   46 +++++++++++++++++++++-------
 source/dsdb/samdb/samdb.c                  |    7 ++++
 source/lib/events/events.c                 |    2 +
 source/lib/ldb/ldb_ildap/ldb_ildap.c       |   16 ++++++++-
 source/lib/ldb_wrap.c                      |    2 +-
 source/lib/messaging/messaging.c           |    8 ++--
 source/lib/socket/testsuite.c              |    2 +-
 source/libcli/cldap/cldap.c                |    6 +---
 source/libcli/cliconnect.c                 |    5 ++-
 source/libcli/composite/composite.c        |    6 +++-
 source/libcli/dgram/dgramsocket.c          |    6 +---
 source/libcli/ldap/ldap_bind.c             |    5 ++-
 source/libcli/ldap/ldap_client.c           |   12 ++-----
 source/libcli/nbt/nbtsocket.c              |    6 +---
 source/libcli/raw/clisocket.c              |   22 ++++----------
 source/libcli/resolve/host.c               |    1 -
 source/libcli/resolve/nbtlist.c            |    3 +-
 source/libcli/resolve/resolve.c            |   13 ++-----
 source/libcli/smb_composite/connect.c      |    8 ++---
 source/libcli/smb_composite/fetchfile.c    |    2 -
 source/libcli/smb_composite/fsinfo.c       |    2 -
 source/libcli/wrepl/winsrepl.c             |    6 +---
 source/libnet/libnet_site.c                |    8 ++--
 source/librpc/rpc/dcerpc.c                 |   15 ++-------
 source/librpc/rpc/dcerpc_connect.c         |   15 ---------
 source/rpc_server/spoolss/dcesrv_spoolss.c |    3 +-
 source/torture/auth/ntlmssp.c              |    6 ++-
 source/torture/basic/base.c                |    3 +-
 source/torture/gentest.c                   |   33 ++++++++++++--------
 source/torture/ldap/cldap.c                |    8 ++++-
 source/torture/ldap/cldapbench.c           |    4 ++-
 source/torture/ldap/common.c               |    2 +-
 source/torture/libnet/libnet_domain.c      |    4 +-
 source/torture/locktest.c                  |   26 ++++++++++-----
 source/torture/locktest2.c                 |   26 +++++++++++-----
 source/torture/masktest.c                  |    9 ++++-
 source/torture/nbt/browse.c                |    2 +-
 source/torture/nbt/dgram.c                 |    6 ++--
 source/torture/nbt/nbt.c                   |    2 +-
 source/torture/nbt/query.c                 |    2 +-
 source/torture/nbt/register.c              |    4 +-
 source/torture/nbt/wins.c                  |    2 +-
 source/torture/nbt/winsbench.c             |    2 +-
 source/torture/nbt/winsreplication.c       |   18 +++++-----
 source/torture/raw/composite.c             |    4 +-
 source/torture/raw/lookuprate.c            |    1 +
 source/torture/rpc/dssync.c                |   10 +++---
 source/torture/rpc/join.c                  |    4 +-
 source/torture/rpc/rpc.c                   |    8 ++--
 source/torture/rpc/samba3rpc.c             |   12 ++++----
 source/torture/rpc/samlogon.c              |    2 +-
 source/torture/rpc/samsync.c               |    4 +-
 source/torture/rpc/schannel.c              |   10 +++---
 source/torture/rpc/session_key.c           |    6 +++-
 source/torture/unix/unix_info2.c           |    4 +-
 source/torture/unix/whoami.c               |    2 +-
 source/utils/nmblookup.c                   |   14 ++++++--
 source/utils/ntlm_auth.c                   |   10 +++---
 62 files changed, 283 insertions(+), 247 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/auth/gensec/gensec.c b/source/auth/gensec/gensec.c
index 59ad157..c82b719 100644
--- a/source/auth/gensec/gensec.c
+++ b/source/auth/gensec/gensec.c
@@ -482,6 +482,11 @@ static NTSTATUS gensec_start(TALLOC_CTX *mem_ctx,
 			     struct messaging_context *msg,
 			     struct gensec_security **gensec_security)
 {
+	if (ev == NULL) {
+		DEBUG(0, ("No event context available!\n"));
+		return NT_STATUS_INTERNAL_ERROR;
+	}
+
 	(*gensec_security) = talloc(mem_ctx, struct gensec_security);
 	NT_STATUS_HAVE_NO_MEMORY(*gensec_security);
 
@@ -493,14 +498,6 @@ static NTSTATUS gensec_start(TALLOC_CTX *mem_ctx,
 
 	(*gensec_security)->subcontext = false;
 	(*gensec_security)->want_features = 0;
-	
-	if (ev == NULL) {
-		ev = event_context_init(*gensec_security);
-		if (ev == NULL) {
-			talloc_free(*gensec_security);
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
 
 	(*gensec_security)->event_ctx = ev;
 	(*gensec_security)->msg_ctx = msg;
@@ -548,20 +545,11 @@ _PUBLIC_ NTSTATUS gensec_client_start(TALLOC_CTX *mem_ctx,
 			     struct loadparm_context *lp_ctx)
 {
 	NTSTATUS status;
-	struct event_context *new_ev = NULL;
-
-	if (ev == NULL) {
-		new_ev = event_context_init(mem_ctx);
-		NT_STATUS_HAVE_NO_MEMORY(new_ev);
-		ev = new_ev;
-	}
 
 	status = gensec_start(mem_ctx, ev, lp_ctx, NULL, gensec_security);
 	if (!NT_STATUS_IS_OK(status)) {
-		talloc_free(new_ev);
 		return status;
 	}
-	talloc_steal((*gensec_security), new_ev);
 	(*gensec_security)->gensec_role = GENSEC_CLIENT;
 
 	return status;
diff --git a/source/client/cifsdd.c b/source/client/cifsdd.c
index 8e25dab..ce48c7b 100644
--- a/source/client/cifsdd.c
+++ b/source/client/cifsdd.c
@@ -24,6 +24,7 @@
 #include "lib/cmdline/popt_common.h"
 #include "libcli/resolve/resolve.h"
 #include "libcli/raw/libcliraw.h"
+#include "lib/events/events.h"
 
 #include "cifsdd.h"
 #include "param/param.h"
@@ -354,6 +355,7 @@ static void print_transfer_stats(void)
 }
 
 static struct dd_iohandle * open_file(struct resolve_context *resolve_ctx, 
+				      struct event_context *ev,
 				      const char * which, const char **ports,
 				      struct smbcli_options *smb_options)
 {
@@ -375,13 +377,13 @@ static struct dd_iohandle * open_file(struct resolve_context *resolve_ctx,
 
 	if (strcmp(which, "if") == 0) {
 		path = check_arg_pathname("if");
-		handle = dd_open_path(resolve_ctx, path, ports, 
+		handle = dd_open_path(resolve_ctx, ev, path, ports,
 				      check_arg_numeric("ibs"), options,
 				      smb_options);
 	} else if (strcmp(which, "of") == 0) {
 		options |= DD_WRITE;
 		path = check_arg_pathname("of");
-		handle = dd_open_path(resolve_ctx, path, ports, 
+		handle = dd_open_path(resolve_ctx, ev, path, ports,
 				      check_arg_numeric("obs"), options,
 				      smb_options);
 	} else {
@@ -396,7 +398,7 @@ static struct dd_iohandle * open_file(struct resolve_context *resolve_ctx,
 	return(handle);
 }
 
-static int copy_files(struct loadparm_context *lp_ctx)
+static int copy_files(struct event_context *ev, struct loadparm_context *lp_ctx)
 {
 	uint8_t *	iobuf;	/* IO buffer. */
 	uint64_t	iomax;	/* Size of the IO buffer. */
@@ -433,12 +435,12 @@ static int copy_files(struct loadparm_context *lp_ctx)
 	DEBUG(4, ("IO buffer size is %llu, max xmit is %d\n",
 			(unsigned long long)iomax, options.max_xmit));
 
-	if (!(ifile = open_file(lp_resolve_context(lp_ctx), "if", 
+	if (!(ifile = open_file(lp_resolve_context(lp_ctx), ev, "if",
 				lp_smb_ports(lp_ctx), &options))) {
 		return(FILESYS_EXIT_CODE);
 	}
 
-	if (!(ofile = open_file(lp_resolve_context(lp_ctx), "of", 
+	if (!(ofile = open_file(lp_resolve_context(lp_ctx), ev, "of",
 				lp_smb_ports(lp_ctx), &options))) {
 		return(FILESYS_EXIT_CODE);
 	}
@@ -528,6 +530,7 @@ int main(int argc, const char ** argv)
 {
 	int i;
 	const char ** dd_args;
+	struct event_context *ev;
 
 	poptContext pctx;
 	struct poptOption poptions[] = {
@@ -578,6 +581,8 @@ int main(int argc, const char ** argv)
 		}
 	}
 
+	ev = event_context_init(talloc_autofree_context());
+
 	gensec_init(cmdline_lp_ctx);
 	dump_args();
 
@@ -599,7 +604,7 @@ int main(int argc, const char ** argv)
 
 	CatchSignal(SIGINT, dd_handle_signal);
 	CatchSignal(SIGUSR1, dd_handle_signal);
-	return(copy_files(cmdline_lp_ctx));
+	return(copy_files(ev, cmdline_lp_ctx));
 }
 
 /* vim: set sw=8 sts=8 ts=8 tw=79 : */
diff --git a/source/client/cifsdd.h b/source/client/cifsdd.h
index 810c882..21a4ad4 100644
--- a/source/client/cifsdd.h
+++ b/source/client/cifsdd.h
@@ -89,8 +89,10 @@ struct dd_iohandle
 #define DD_OPLOCK		0x00000008
 
 struct smbcli_options;
+struct event_context;
 
 struct dd_iohandle * dd_open_path(struct resolve_context *resolve_ctx, 
+				  struct event_context *ev,
 				  const char * path,
 				  const char **ports,
 				uint64_t io_size, int options, 
diff --git a/source/client/cifsddio.c b/source/client/cifsddio.c
index 7028e85..4297c30 100644
--- a/source/client/cifsddio.c
+++ b/source/client/cifsddio.c
@@ -221,6 +221,7 @@ static bool smb_write_func(void * handle, uint8_t * buf, uint64_t wanted,
 }
 
 static struct smbcli_state * init_smb_session(struct resolve_context *resolve_ctx,
+					      struct event_context *ev,
 					      const char * host,
 					      const char **ports,
 					      const char * share,
@@ -233,8 +234,9 @@ static struct smbcli_state * init_smb_session(struct resolve_context *resolve_ct
 	 * each connection, but for now, we just use the same one for both.
 	 */
 	ret = smbcli_full_connection(NULL, &cli, host, ports, share,
-			 NULL /* devtype */, cmdline_credentials, resolve_ctx, 
-			 NULL /* events */, options);
+				     NULL /* devtype */,
+				     cmdline_credentials, resolve_ctx,
+				     ev, options);
 
 	if (!NT_STATUS_IS_OK(ret)) {
 		fprintf(stderr, "%s: connecting to //%s/%s: %s\n",
@@ -293,6 +295,7 @@ static int open_smb_file(struct smbcli_state * cli,
 }
 
 static struct dd_iohandle * open_cifs_handle(struct resolve_context *resolve_ctx,
+					     struct event_context *ev,
 					     const char * host,
 					const char **ports,
 					const char * share,
@@ -319,7 +322,7 @@ static struct dd_iohandle * open_cifs_handle(struct resolve_context *resolve_ctx
 	smbh->h.io_write = smb_write_func;
 	smbh->h.io_seek = smb_seek_func;
 
-	if ((smbh->cli = init_smb_session(resolve_ctx, host, ports, share,
+	if ((smbh->cli = init_smb_session(resolve_ctx, ev, host, ports, share,
 					  smb_options)) == NULL) {
 		return(NULL);
 	}
@@ -336,6 +339,7 @@ static struct dd_iohandle * open_cifs_handle(struct resolve_context *resolve_ctx
 /* ------------------------------------------------------------------------- */
 
 struct dd_iohandle * dd_open_path(struct resolve_context *resolve_ctx, 
+				  struct event_context *ev,
 				  const char * path,
 				  const char **ports,
 				uint64_t io_size,
@@ -355,7 +359,7 @@ struct dd_iohandle * dd_open_path(struct resolve_context *resolve_ctx,
 			/* Skip over leading directory separators. */
 			while (*remain == '/' || *remain == '\\') { remain++; }
 
-			return(open_cifs_handle(resolve_ctx, host, ports, 
+			return(open_cifs_handle(resolve_ctx, ev, host, ports,
 						share, remain,
 						io_size, options, smb_options));
 		}
diff --git a/source/client/client.c b/source/client/client.c
index ef88913..79cc1b5 100644
--- a/source/client/client.c
+++ b/source/client/client.c
@@ -2546,7 +2546,9 @@ static void display_share_result(struct srvsvc_NetShareCtr1 *ctr1)
 /****************************************************************************
 try and browse available shares on a host
 ****************************************************************************/
-static bool browse_host(struct loadparm_context *lp_ctx, const char *query_host)
+static bool browse_host(struct loadparm_context *lp_ctx,
+			struct event_context *ev_ctx,
+			const char *query_host)
 {
 	struct dcerpc_pipe *p;
 	char *binding;
@@ -2560,7 +2562,7 @@ static bool browse_host(struct loadparm_context *lp_ctx, const char *query_host)
 
 	status = dcerpc_pipe_connect(mem_ctx, &p, binding, 
 					 &ndr_table_srvsvc,
-				     cmdline_credentials, NULL,
+				     cmdline_credentials, ev_ctx,
 				     lp_ctx);
 	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("Failed to connect to %s - %s\n", 
@@ -3022,6 +3024,7 @@ static int process_stdin(struct smbclient_context *ctx)
 return a connection to a server
 *******************************************************/
 static bool do_connect(struct smbclient_context *ctx, 
+		       struct event_context *ev_ctx,
 		       struct resolve_context *resolve_ctx,
 		       const char *specified_server, const char **ports, 
 		       const char *specified_share, 
@@ -3045,8 +3048,7 @@ static bool do_connect(struct smbclient_context *ctx,
 	
 	status = smbcli_full_connection(ctx, &ctx->cli, server, ports,
 					share, NULL, cred, resolve_ctx, 
-					event_context_init(NULL),
-					options);
+					ev_ctx, options);
 	if (!NT_STATUS_IS_OK(status)) {
 		d_printf("Connection to \\\\%s\\%s failed - %s\n", 
 			 server, share, nt_errstr(status));
@@ -3060,9 +3062,12 @@ static bool do_connect(struct smbclient_context *ctx,
 /****************************************************************************
 handle a -L query
 ****************************************************************************/
-static int do_host_query(struct loadparm_context *lp_ctx, const char *query_host, const char *workgroup)
+static int do_host_query(struct loadparm_context *lp_ctx,
+			 struct event_context *ev_ctx,
+			 const char *query_host,
+			 const char *workgroup)
 {
-	browse_host(lp_ctx, query_host);
+	browse_host(lp_ctx, ev_ctx, query_host);
 	list_servers(workgroup);
 	return(0);
 }
@@ -3071,7 +3076,12 @@ static int do_host_query(struct loadparm_context *lp_ctx, const char *query_host
 /****************************************************************************
 handle a message operation
 ****************************************************************************/
-static int do_message_op(const char *netbios_name, const char *desthost, const char **destports, const char *destip, int name_type, struct resolve_context *resolve_ctx, struct smbcli_options *options)
+static int do_message_op(const char *netbios_name, const char *desthost,
+			 const char **destports, const char *destip,
+			 int name_type,
+			 struct event_context *ev_ctx,
+			 struct resolve_context *resolve_ctx,
+			 struct smbcli_options *options)
 {
 	struct nbt_name called, calling;
 	const char *server_name;
@@ -3083,7 +3093,9 @@ static int do_message_op(const char *netbios_name, const char *desthost, const c
 
 	server_name = destip ? destip : desthost;
 
-	if (!(cli=smbcli_state_init(NULL)) || !smbcli_socket_connect(cli, server_name, destports, resolve_ctx, options)) {
+	if (!(cli = smbcli_state_init(NULL)) ||
+	    !smbcli_socket_connect(cli, server_name, destports,
+				   ev_ctx, resolve_ctx, options)) {
 		d_printf("Connection to %s failed\n", server_name);
 		return 1;
 	}
@@ -3124,6 +3136,7 @@ static int do_message_op(const char *netbios_name, const char *desthost, const c
 	int rc = 0;
 	int name_type = 0x20;
 	TALLOC_CTX *mem_ctx;
+	struct event_context *ev_ctx;
 	struct smbclient_context *ctx;
 	const char *cmdstr = NULL;
 	struct smbcli_options smb_options;
@@ -3221,6 +3234,8 @@ static int do_message_op(const char *netbios_name, const char *desthost, const c
 
 	lp_smbcli_options(cmdline_lp_ctx, &smb_options);
 
+	ev_ctx = event_context_init(talloc_autofree_context());
+
 	DEBUG( 3, ( "Client started (version %s).\n", SAMBA_VERSION_STRING ) );
 
 	if (query_host && (p=strchr_m(query_host,'#'))) {
@@ -3230,14 +3245,23 @@ static int do_message_op(const char *netbios_name, const char *desthost, const c
 	}
   
 	if (query_host) {
-		return do_host_query(cmdline_lp_ctx, query_host, lp_workgroup(cmdline_lp_ctx));
+		rc = do_host_query(cmdline_lp_ctx, ev_ctx, query_host,
+				   lp_workgroup(cmdline_lp_ctx));
+		return rc;
 	}
 
 	if (message) {
-		return do_message_op(lp_netbios_name(cmdline_lp_ctx), desthost, lp_smb_ports(cmdline_lp_ctx), dest_ip, name_type, lp_resolve_context(cmdline_lp_ctx), &smb_options);
+		rc = do_message_op(lp_netbios_name(cmdline_lp_ctx), desthost,
+				   lp_smb_ports(cmdline_lp_ctx), dest_ip,
+				   name_type, ev_ctx,
+				   lp_resolve_context(cmdline_lp_ctx),
+				   &smb_options);
+		return rc;
 	}
 	
-	if (!do_connect(ctx, lp_resolve_context(cmdline_lp_ctx), desthost, lp_smb_ports(cmdline_lp_ctx), service, cmdline_credentials, &smb_options))
+	if (!do_connect(ctx, ev_ctx, lp_resolve_context(cmdline_lp_ctx),
+			desthost, lp_smb_ports(cmdline_lp_ctx), service,
+			cmdline_credentials, &smb_options))
 		return 1;
 
 	if (base_directory) 
diff --git a/source/dsdb/samdb/samdb.c b/source/dsdb/samdb/samdb.c
index 4af7fb7..9154f53 100644
--- a/source/dsdb/samdb/samdb.c
+++ b/source/dsdb/samdb/samdb.c
@@ -37,6 +37,7 @@
 #include "dsdb/samdb/samdb.h"
 #include "dsdb/common/flags.h"
 #include "param/param.h"
+#include "lib/events/events.h"
 
 char *samdb_relative_path(struct ldb_context *ldb,
 				 TALLOC_CTX *mem_ctx, 
@@ -116,6 +117,12 @@ int samdb_copy_template(struct ldb_context *ldb,
 		event_ctx = (struct event_context *)ldb_get_opaque(ldb, "EventContext");
 		lp_ctx = (struct loadparm_context *)ldb_get_opaque(ldb, "loadparm");
 
+		/* FIXME: need to remove this wehn we finally pass the event
+		 * context around in ldb */
+		if (event_ctx == NULL) {
+			event_ctx = event_context_init(templates_ldb);
+		}
+
 		templates_ldb = ldb_wrap_connect(ldb, event_ctx, lp_ctx, 
 						templates_ldb_path, NULL,
 						NULL, 0, NULL);
diff --git a/source/lib/events/events.c b/source/lib/events/events.c
index 568aadc..252af44 100644
--- a/source/lib/events/events.c
+++ b/source/lib/events/events.c
@@ -207,6 +207,8 @@ struct event_context *event_context_init_byname(TALLOC_CTX *mem_ctx, const char
 */
 struct event_context *event_context_init(TALLOC_CTX *mem_ctx)
 {
+	DEBUG(0, ("New event context requested. Parent: [%s:%p]\n",
+		  mem_ctx?talloc_get_name(mem_ctx):"NULL", mem_ctx));
 	return event_context_init_byname(mem_ctx, NULL);
 }
 
diff --git a/source/lib/ldb/ldb_ildap/ldb_ildap.c b/source/lib/ldb/ldb_ildap/ldb_ildap.c
index 79958a8..6b50b2f 100644
--- a/source/lib/ldb/ldb_ildap/ldb_ildap.c
+++ b/source/lib/ldb/ldb_ildap/ldb_ildap.c
@@ -737,6 +737,7 @@ static int ildb_connect(struct ldb_context *ldb, const char *url,
 	struct ildb_private *ildb;
 	NTSTATUS status;
 	struct cli_credentials *creds;
+	struct event_context *event_ctx;
 
 	module = talloc(ldb, struct ldb_module);
 	if (!module) {
@@ -756,8 +757,19 @@ static int ildb_connect(struct ldb_context *ldb, const char *url,
 	}
 	module->private_data	= ildb;
 	ildb->module		= module;
-	ildb->ldap = ldap4_new_connection(ildb, ldb_get_opaque(ldb, "loadparm"), 
-					  ldb_get_opaque(ldb, "EventContext"));
+
+	event_ctx = ldb_get_opaque(ldb, "EventContext");
+
+	/* FIXME: We must make the event context an explicit parameter, but we
+	 * need to build the events library separately first. Hack a new event
+	 * context so that CMD line utilities work until we have libevents for
+	 * standalone builds ready */
+	if (event_ctx == NULL) {
+		event_ctx = event_context_init(NULL);
+	}
+
+	ildb->ldap = ldap4_new_connection(ildb, ldb_get_opaque(ldb, "loadparm"),
+					  event_ctx);
 	if (!ildb->ldap) {
 		ldb_oom(ldb);
 		goto failed;
diff --git a/source/lib/ldb_wrap.c b/source/lib/ldb_wrap.c
index b71adcb..b564976 100644
--- a/source/lib/ldb_wrap.c
+++ b/source/lib/ldb_wrap.c
@@ -116,7 +116,7 @@ struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
 			    talloc_asprintf(ldb, "%s/ldb", lp_modulesdir(lp_ctx)));
 
 	if (ev == NULL) {
-		ev = event_context_find(mem_ctx);
+		return NULL;
 	}
 
 	if (ldb_set_opaque(ldb, "EventContext", ev)) {
diff --git a/source/lib/messaging/messaging.c b/source/lib/messaging/messaging.c
index 29d6e00..1928446 100644
--- a/source/lib/messaging/messaging.c
+++ b/source/lib/messaging/messaging.c
@@ -544,6 +544,10 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
 	NTSTATUS status;
 	struct socket_address *path;
 
+	if (ev == NULL) {
+		return NULL;
+	}
+
 	msg = talloc_zero(mem_ctx, struct messaging_context);
 	if (msg == NULL) {
 		return NULL;
@@ -556,10 +560,6 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx,
 		return NULL;
 	}
 
-	if (ev == NULL) {
-		ev = event_context_init(msg);
-	}
-
 	/* create the messaging directory if needed */
 	mkdir(dir, 0700);
 
diff --git a/source/lib/socket/testsuite.c b/source/lib/socket/testsuite.c
index 813412c..2c25d8f 100644
--- a/source/lib/socket/testsuite.c
+++ b/source/lib/socket/testsuite.c
@@ -124,7 +124,7 @@ static bool test_tcp(struct torture_context *tctx)
 	DATA_BLOB blob, blob2;
 	size_t sent, nread;
 	TALLOC_CTX *mem_ctx = tctx;
-	struct event_context *ev = event_context_init(mem_ctx);
+	struct event_context *ev = tctx->ev;
 	struct interface *ifaces;
 
 	status = socket_create("ip", SOCKET_TYPE_STREAM, &sock1, 0);
diff --git a/source/libcli/cldap/cldap.c b/source/libcli/cldap/cldap.c
index d991028..614bd51 100644
--- a/source/libcli/cldap/cldap.c
+++ b/source/libcli/cldap/cldap.c
@@ -250,11 +250,7 @@ struct cldap_socket *cldap_socket_init(TALLOC_CTX *mem_ctx,
 	cldap = talloc(mem_ctx, struct cldap_socket);
 	if (cldap == NULL) goto failed;
 
-	if (event_ctx == NULL) {
-		cldap->event_ctx = event_context_init(cldap);
-	} else {
-		cldap->event_ctx = talloc_reference(cldap, event_ctx);
-	}
+	cldap->event_ctx = talloc_reference(cldap, event_ctx);
 	if (cldap->event_ctx == NULL) goto failed;
 
 	cldap->idr = idr_init(cldap);
diff --git a/source/libcli/cliconnect.c b/source/libcli/cliconnect.c
index 4858a96..c20a7fd 100644
--- a/source/libcli/cliconnect.c
+++ b/source/libcli/cliconnect.c
@@ -33,13 +33,14 @@
 */
 bool smbcli_socket_connect(struct smbcli_state *cli, const char *server, 
 			   const char **ports, 
+			   struct event_context *ev_ctx,
 			   struct resolve_context *resolve_ctx,
 			   struct smbcli_options *options)
 {
 	struct smbcli_socket *sock;
 
-	sock = smbcli_sock_connect_byname(server, ports, NULL, resolve_ctx, 
-					  NULL);
+	sock = smbcli_sock_connect_byname(server, ports, NULL,
+					  resolve_ctx, ev_ctx);
 
 	if (sock == NULL) return false;
 	
diff --git a/source/libcli/composite/composite.c b/source/libcli/composite/composite.c


-- 
Samba Shared Repository


More information about the samba-cvs mailing list