[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Sun Nov 14 17:14:02 MST 2010


The branch, master has been updated
       via  2d7dc86 s4-kdc: if "bind interfaces only" is false, then also listen on wildcard
       via  ef7f4a1 s4-server: make server sockets a child of the task context
       via  ec590fc samba-tool: fixed crash in "samba-tool drs showrepl"
      from  f0cdcd9 web_server: Build as module.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2d7dc86b5d339986f3c645917a29810d6b33bebf
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Nov 15 08:41:16 2010 +1100

    s4-kdc: if "bind interfaces only" is false, then also listen on wildcard
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User: Andrew Tridgell <tridge at samba.org>
    Autobuild-Date: Mon Nov 15 00:13:59 UTC 2010 on sn-devel-104

commit ef7f4a142068757dcf0dc11c5b7cf03755be45a8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Nov 15 10:12:22 2010 +1100

    s4-server: make server sockets a child of the task context
    
    We previously allocated sockets as direct children of the event
    context. That led to crashes if a service called
    task_server_terminate(), as it left the socket open and handling
    events for a dead protocol.
    
    Making them a child of the task allows the task to terminate and take
    all its sockets with it.
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit ec590fc9e37c38891bdd10aaae5bac46f5e71f75
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Nov 15 08:27:04 2010 +1100

    samba-tool: fixed crash in "samba-tool drs showrepl"
    
    the source_dsa_obj_dn can be NULL
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 source4/dns_server/dns_server.c            |    3 +-
 source4/kdc/kdc.c                          |   64 +++++++++++++++++++---------
 source4/ldap_server/ldap_server.c          |   18 ++++----
 source4/ntp_signd/ntp_signd.c              |    3 +-
 source4/rpc_server/dcerpc_server.c         |    8 ++--
 source4/samba_tool/drs/drs_showrepl.c      |   16 +++++--
 source4/smb_server/service_smb.c           |    4 +-
 source4/smb_server/smb_samba3.c            |   11 +++--
 source4/smb_server/smb_server.c            |    9 ++--
 source4/smb_server/smb_server.h            |    7 ++-
 source4/smbd/service_named_pipe.c          |    8 ++-
 source4/smbd/service_stream.c              |    5 +-
 source4/torture/rpc/spoolss_notify.c       |    2 +-
 source4/web_server/web_server.c            |    5 +-
 source4/winbind/wb_server.c                |    4 +-
 source4/wrepl_server/wrepl_in_connection.c |    4 +-
 16 files changed, 107 insertions(+), 64 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dns_server/dns_server.c b/source4/dns_server/dns_server.c
index 8e37fc2..fc343ba 100644
--- a/source4/dns_server/dns_server.c
+++ b/source4/dns_server/dns_server.c
@@ -492,7 +492,8 @@ static NTSTATUS dns_add_socket(struct dns_server *dns,
 		return status;
 	}
 
-	status = stream_setup_socket(dns->task->event_ctx,
+	status = stream_setup_socket(dns->task,
+				     dns->task->event_ctx,
 				     dns->task->lp_ctx,
 				     model_ops,
 				     &dns_tcp_stream_ops,
diff --git a/source4/kdc/kdc.c b/source4/kdc/kdc.c
index 2a90ea5..f8e9b02 100644
--- a/source4/kdc/kdc.c
+++ b/source4/kdc/kdc.c
@@ -435,7 +435,8 @@ static NTSTATUS kdc_add_socket(struct kdc_server *kdc,
 			       const char *name,
 			       const char *address,
 			       uint16_t port,
-			       kdc_process_fn_t process)
+			       kdc_process_fn_t process,
+			       bool udp_only)
 {
 	struct kdc_socket *kdc_socket;
 	struct kdc_udp_socket *kdc_udp_socket;
@@ -457,18 +458,21 @@ static NTSTATUS kdc_add_socket(struct kdc_server *kdc,
 		return status;
 	}
 
-	status = stream_setup_socket(kdc->task->event_ctx,
-				     kdc->task->lp_ctx,
-				     model_ops,
-				     &kdc_tcp_stream_ops,
-				     "ip", address, &port,
-				     lpcfg_socket_options(kdc->task->lp_ctx),
-				     kdc_socket);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0,("Failed to bind to %s:%u TCP - %s\n",
-			 address, port, nt_errstr(status)));
-		talloc_free(kdc_socket);
-		return status;
+	if (!udp_only) {
+		status = stream_setup_socket(kdc->task,
+					     kdc->task->event_ctx,
+					     kdc->task->lp_ctx,
+					     model_ops,
+					     &kdc_tcp_stream_ops,
+					     "ip", address, &port,
+					     lpcfg_socket_options(kdc->task->lp_ctx),
+					     kdc_socket);
+		if (!NT_STATUS_IS_OK(status)) {
+			DEBUG(0,("Failed to bind to %s:%u TCP - %s\n",
+				 address, port, nt_errstr(status)));
+			talloc_free(kdc_socket);
+			return status;
+		}
 	}
 
 	kdc_udp_socket = talloc(kdc_socket, struct kdc_udp_socket);
@@ -512,6 +516,9 @@ static NTSTATUS kdc_startup_interfaces(struct kdc_server *kdc, struct loadparm_c
 	TALLOC_CTX *tmp_ctx = talloc_new(kdc);
 	NTSTATUS status;
 	int i;
+	uint16_t kdc_port = lpcfg_krb5_port(lp_ctx);
+	uint16_t kpasswd_port = lpcfg_kpasswd_port(lp_ctx);
+	bool done_wildcard = false;
 
 	/* within the kdc task we want to be a single process, so
 	   ask for the single process model ops and pass these to the
@@ -524,22 +531,39 @@ static NTSTATUS kdc_startup_interfaces(struct kdc_server *kdc, struct loadparm_c
 
 	num_interfaces = iface_count(ifaces);
 
+	/* if we are allowing incoming packets from any address, then
+	   we need to bind to the wildcard address */
+	if (!lpcfg_bind_interfaces_only(lp_ctx)) {
+		if (kdc_port) {
+			status = kdc_add_socket(kdc, model_ops,
+						"kdc", "0.0.0.0", kdc_port,
+						kdc_process, false);
+			NT_STATUS_NOT_OK_RETURN(status);
+		}
+
+		if (kpasswd_port) {
+			status = kdc_add_socket(kdc, model_ops,
+						"kpasswd", "0.0.0.0", kpasswd_port,
+						kpasswdd_process, false);
+			NT_STATUS_NOT_OK_RETURN(status);
+		}
+		done_wildcard = true;
+	}
+
 	for (i=0; i<num_interfaces; i++) {
 		const char *address = talloc_strdup(tmp_ctx, iface_n_ip(ifaces, i));
-		uint16_t kdc_port = lpcfg_krb5_port(lp_ctx);
-		uint16_t kpasswd_port = lpcfg_kpasswd_port(lp_ctx);
 
 		if (kdc_port) {
 			status = kdc_add_socket(kdc, model_ops,
-					"kdc", address, kdc_port,
-					kdc_process);
+						"kdc", address, kdc_port,
+						kdc_process, done_wildcard);
 			NT_STATUS_NOT_OK_RETURN(status);
 		}
 
 		if (kpasswd_port) {
 			status = kdc_add_socket(kdc, model_ops,
-					"kpasswd", address, kpasswd_port,
-					kpasswdd_process);
+						"kpasswd", address, kpasswd_port,
+						kpasswdd_process, done_wildcard);
 			NT_STATUS_NOT_OK_RETURN(status);
 		}
 	}
@@ -788,7 +812,7 @@ static void kdc_task_init(struct task_server *task)
 	status = IRPC_REGISTER(task->msg_ctx, irpc, KDC_CHECK_GENERIC_KERBEROS,
 			       kdc_check_generic_kerberos, kdc);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "nbtd failed to setup monitoring", true);
+		task_server_terminate(task, "kdc failed to setup monitoring", true);
 		return;
 	}
 
diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c
index eec505f..67fe183 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -797,10 +797,12 @@ static const struct stream_server_ops ldap_stream_priv_ops = {
 };
 
 #endif
+
+
 /*
   add a socket address to the list of events, one event per port
 */
-static NTSTATUS add_socket(struct tevent_context *event_context,
+static NTSTATUS add_socket(struct task_server *task,
 			   struct loadparm_context *lp_ctx,
 			   const struct model_ops *model_ops,
 			   const char *address, struct ldapsrv_service *ldap_service)
@@ -809,7 +811,7 @@ static NTSTATUS add_socket(struct tevent_context *event_context,
 	NTSTATUS status;
 	struct ldb_context *ldb;
 
-	status = stream_setup_socket(event_context, lp_ctx,
+	status = stream_setup_socket(task, task->event_ctx, lp_ctx,
 				     model_ops, &ldap_stream_nonpriv_ops,
 				     "ipv4", address, &port, 
 				     lpcfg_socket_options(lp_ctx),
@@ -823,7 +825,7 @@ static NTSTATUS add_socket(struct tevent_context *event_context,
 	if (tstream_tls_params_enabled(ldap_service->tls_params)) {
 		/* add ldaps server */
 		port = 636;
-		status = stream_setup_socket(event_context, lp_ctx,
+		status = stream_setup_socket(task, task->event_ctx, lp_ctx,
 					     model_ops,
 					     &ldap_stream_nonpriv_ops,
 					     "ipv4", address, &port, 
@@ -845,7 +847,7 @@ static NTSTATUS add_socket(struct tevent_context *event_context,
 
 	if (samdb_is_gc(ldb)) {
 		port = 3268;
-		status = stream_setup_socket(event_context, lp_ctx,
+		status = stream_setup_socket(task, task->event_ctx, lp_ctx,
 					     model_ops,
 					     &ldap_stream_nonpriv_ops,
 					     "ipv4", address, &port, 
@@ -941,11 +943,11 @@ static void ldapsrv_task_init(struct task_server *task)
 		*/
 		for(i = 0; i < num_interfaces; i++) {
 			const char *address = iface_n_ip(ifaces, i);
-			status = add_socket(task->event_ctx, task->lp_ctx, model_ops, address, ldap_service);
+			status = add_socket(task, task->lp_ctx, model_ops, address, ldap_service);
 			if (!NT_STATUS_IS_OK(status)) goto failed;
 		}
 	} else {
-		status = add_socket(task->event_ctx, task->lp_ctx, model_ops,
+		status = add_socket(task, task->lp_ctx, model_ops,
 				    lpcfg_socket_address(task->lp_ctx), ldap_service);
 		if (!NT_STATUS_IS_OK(status)) goto failed;
 	}
@@ -955,7 +957,7 @@ static void ldapsrv_task_init(struct task_server *task)
 		goto failed;
 	}
 
-	status = stream_setup_socket(task->event_ctx, task->lp_ctx,
+	status = stream_setup_socket(task, task->event_ctx, task->lp_ctx,
 				     model_ops, &ldap_stream_nonpriv_ops,
 				     "unix", ldapi_path, NULL, 
 				     lpcfg_socket_options(task->lp_ctx),
@@ -986,7 +988,7 @@ static void ldapsrv_task_init(struct task_server *task)
 		goto failed;
 	}
 
-	status = stream_setup_socket(task->event_ctx, task->lp_ctx,
+	status = stream_setup_socket(task, task->event_ctx, task->lp_ctx,
 				     model_ops, &ldap_stream_priv_ops,
 				     "unix", ldapi_path, NULL,
 				     lpcfg_socket_options(task->lp_ctx),
diff --git a/source4/ntp_signd/ntp_signd.c b/source4/ntp_signd/ntp_signd.c
index a0dd2d3..71b9a9d 100644
--- a/source4/ntp_signd/ntp_signd.c
+++ b/source4/ntp_signd/ntp_signd.c
@@ -528,7 +528,8 @@ static void ntp_signd_task_init(struct task_server *task)
 
 	address = talloc_asprintf(ntp_signd, "%s/socket", lpcfg_ntp_signd_socket_directory(task->lp_ctx));
 
-	status = stream_setup_socket(ntp_signd->task->event_ctx, 
+	status = stream_setup_socket(ntp_signd->task,
+				     ntp_signd->task->event_ctx,
 				     ntp_signd->task->lp_ctx,
 				     model_ops, 
 				     &ntp_signd_stream_ops, 
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index 061d8e8..1371ad9 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -1538,7 +1538,7 @@ static NTSTATUS dcesrv_add_ep_unix(struct dcesrv_context *dce_ctx,
 	dcesrv_sock->endpoint		= e;
 	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
-	status = stream_setup_socket(event_ctx, lp_ctx,
+	status = stream_setup_socket(dcesrv_sock, event_ctx, lp_ctx,
 				     model_ops, &dcesrv_stream_ops, 
 				     "unix", e->ep_description->endpoint, &port, 
 				     lpcfg_socket_options(lp_ctx),
@@ -1578,7 +1578,7 @@ static NTSTATUS dcesrv_add_ep_ncalrpc(struct dcesrv_context *dce_ctx,
 	dcesrv_sock->endpoint		= e;
 	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
-	status = stream_setup_socket(event_ctx, lp_ctx,
+	status = stream_setup_socket(dcesrv_sock, event_ctx, lp_ctx,
 				     model_ops, &dcesrv_stream_ops, 
 				     "unix", full_path, &port, 
 				     lpcfg_socket_options(lp_ctx),
@@ -1610,7 +1610,7 @@ static NTSTATUS dcesrv_add_ep_np(struct dcesrv_context *dce_ctx,
 	dcesrv_sock->endpoint		= e;
 	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
-	status = tstream_setup_named_pipe(event_ctx, lp_ctx,
+	status = tstream_setup_named_pipe(dce_ctx, event_ctx, lp_ctx,
 					  model_ops, &dcesrv_stream_ops,
 					  e->ep_description->endpoint,
 					  dcesrv_sock);
@@ -1645,7 +1645,7 @@ static NTSTATUS add_socket_rpc_tcp_iface(struct dcesrv_context *dce_ctx, struct
 	dcesrv_sock->endpoint		= e;
 	dcesrv_sock->dcesrv_ctx		= talloc_reference(dcesrv_sock, dce_ctx);
 
-	status = stream_setup_socket(event_ctx, dce_ctx->lp_ctx,
+	status = stream_setup_socket(dcesrv_sock, event_ctx, dce_ctx->lp_ctx,
 				     model_ops, &dcesrv_stream_ops, 
 				     "ipv4", address, &port, 
 				     lpcfg_socket_options(dce_ctx->lp_ctx),
diff --git a/source4/samba_tool/drs/drs_showrepl.c b/source4/samba_tool/drs/drs_showrepl.c
index f399097..5c095a8 100644
--- a/source4/samba_tool/drs/drs_showrepl.c
+++ b/source4/samba_tool/drs/drs_showrepl.c
@@ -46,7 +46,9 @@ static bool net_drs_parse_ntds_dn(struct ldb_dn *ntds_dn,
 	NET_DRS_NOMEM_GOTO(dn, failed);
 
 	/* remove NTDS Settings component */
-	ldb_dn_remove_child_components(dn, 1);
+	if (!ldb_dn_remove_child_components(dn, 1)) {
+		return false;
+	}
 	if (_dc_name) {
 		val = ldb_dn_get_rdn_val(dn);
 		*_dc_name = talloc_strdup(mem_ctx, (const char *)val->data);
@@ -82,12 +84,16 @@ failed:
 	return false;
 }
 
-static char * net_drs_dc_canonical_string(struct ldb_dn *ntds_dn, TALLOC_CTX *mem_ctx)
+static const char * net_drs_dc_canonical_string(struct ldb_dn *ntds_dn, TALLOC_CTX *mem_ctx)
 {
 	const char *dc_name;
 	const char *site_name;
 	char *canonical_name;
 
+	if (ldb_dn_is_null(ntds_dn)) {
+		return "(NULL DN)";
+	}
+
 	if (!net_drs_parse_ntds_dn(ntds_dn, mem_ctx, &dc_name, &site_name, NULL)) {
 		return NULL;
 	}
@@ -248,7 +254,7 @@ net_drs_transport_type_str(struct net_drs_context *drs_ctx, const char *transpor
  * Prints most of the info we got about
  * a replication partner
  */
-static bool net_drs_showrepl_print_heighbor(struct net_drs_context *drs_ctx,
+static bool net_drs_showrepl_print_neighbor(struct net_drs_context *drs_ctx,
 					    struct drsuapi_DsReplicaNeighbour *neighbor)
 {
 	struct ldb_dn *ntds_dn;
@@ -309,7 +315,7 @@ static bool net_drs_showrepl_print_inbound_neihbors(struct net_drs_context *drs_
 
 	for (i = 0; i < reps_from->count; i++) {
 		d_printf("\n");
-		net_drs_showrepl_print_heighbor(drs_ctx, &reps_from->array[i]);
+		net_drs_showrepl_print_neighbor(drs_ctx, &reps_from->array[i]);
 	}
 
 	return true;
@@ -338,7 +344,7 @@ static bool net_drs_showrepl_print_outbound_neihbors(struct net_drs_context *drs
 
 	for (i = 0; i < reps_to->count; i++) {
 		d_printf("\n");
-		net_drs_showrepl_print_heighbor(drs_ctx, &reps_to->array[i]);
+		net_drs_showrepl_print_neighbor(drs_ctx, &reps_to->array[i]);
 	}
 
 	return true;
diff --git a/source4/smb_server/service_smb.c b/source4/smb_server/service_smb.c
index 54feccb..583360b 100644
--- a/source4/smb_server/service_smb.c
+++ b/source4/smb_server/service_smb.c
@@ -58,12 +58,12 @@ static void smbsrv_task_init(struct task_server *task)
 		*/
 		for(i = 0; i < num_interfaces; i++) {
 			const char *address = iface_n_ip(ifaces, i);
-			status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops, address);
+			status = smbsrv_add_socket(task, task->event_ctx, task->lp_ctx, task->model_ops, address);
 			if (!NT_STATUS_IS_OK(status)) goto failed;
 		}
 	} else {
 		/* Just bind to lpcfg_socket_address() (usually 0.0.0.0) */
-		status = smbsrv_add_socket(task->event_ctx, task->lp_ctx, task->model_ops,
+		status = smbsrv_add_socket(task, task->event_ctx, task->lp_ctx, task->model_ops,
 					   lpcfg_socket_address(task->lp_ctx));
 		if (!NT_STATUS_IS_OK(status)) goto failed;
 	}
diff --git a/source4/smb_server/smb_samba3.c b/source4/smb_server/smb_samba3.c
index ee12480..ed9027a 100644
--- a/source4/smb_server/smb_samba3.c
+++ b/source4/smb_server/smb_samba3.c
@@ -86,7 +86,8 @@ static const struct stream_server_ops samba3_smb_stream_ops = {
 /*
   setup a listening socket on all the SMB ports for a particular address
 */
-static NTSTATUS samba3_add_socket(struct tevent_context *event_context,
+static NTSTATUS samba3_add_socket(struct task_server *task,
+				  struct tevent_context *event_context,
 				  struct loadparm_context *lp_ctx,
 				  const struct model_ops *model_ops,
 				  const char *address)
@@ -98,7 +99,7 @@ static NTSTATUS samba3_add_socket(struct tevent_context *event_context,
 	for (i=0;ports[i];i++) {
 		uint16_t port = atoi(ports[i]);
 		if (port == 0) continue;
-		status = stream_setup_socket(event_context, lp_ctx,
+		status = stream_setup_socket(task, event_context, lp_ctx,
 					     model_ops, &samba3_smb_stream_ops,
 					     "ip", address, &port,
 					     lpcfg_socket_options(lp_ctx),
@@ -142,14 +143,16 @@ static void samba3_smb_task_init(struct task_server *task)
 		*/
 		for(i = 0; i < num_interfaces; i++) {
 			const char *address = iface_n_ip(ifaces, i);
-			status = samba3_add_socket(task->event_ctx,
+			status = samba3_add_socket(task,
+						   task->event_ctx,
 						   task->lp_ctx,
 						   model_ops, address);
 			if (!NT_STATUS_IS_OK(status)) goto failed;
 		}
 	} else {
 		/* Just bind to lpcfg_socket_address() (usually 0.0.0.0) */
-		status = samba3_add_socket(task->event_ctx, task->lp_ctx,
+		status = samba3_add_socket(task,
+					   task->event_ctx, task->lp_ctx,
 					   model_ops,
 					   lpcfg_socket_address(task->lp_ctx));
 		if (!NT_STATUS_IS_OK(status)) goto failed;
diff --git a/source4/smb_server/smb_server.c b/source4/smb_server/smb_server.c
index 8e54423..d21e5fb 100644
--- a/source4/smb_server/smb_server.c
+++ b/source4/smb_server/smb_server.c
@@ -175,10 +175,11 @@ static const struct stream_server_ops smb_stream_ops = {
 /*
   setup a listening socket on all the SMB ports for a particular address
 */
-_PUBLIC_ NTSTATUS smbsrv_add_socket(struct tevent_context *event_context,
+_PUBLIC_ NTSTATUS smbsrv_add_socket(TALLOC_CTX *mem_ctx,
+				    struct tevent_context *event_context,
 				    struct loadparm_context *lp_ctx,
-			       const struct model_ops *model_ops,
-			       const char *address)
+				    const struct model_ops *model_ops,
+				    const char *address)
 {
 	const char **ports = lpcfg_smb_ports(lp_ctx);
 	int i;
@@ -187,7 +188,7 @@ _PUBLIC_ NTSTATUS smbsrv_add_socket(struct tevent_context *event_context,
 	for (i=0;ports[i];i++) {
 		uint16_t port = atoi(ports[i]);
 		if (port == 0) continue;
-		status = stream_setup_socket(event_context, lp_ctx,
+		status = stream_setup_socket(mem_ctx, event_context, lp_ctx,
 					     model_ops, &smb_stream_ops, 
 					     "ipv4", address, &port, 
 					     lpcfg_socket_options(lp_ctx),
diff --git a/source4/smb_server/smb_server.h b/source4/smb_server/smb_server.h
index 4399dc8..6088853 100644
--- a/source4/smb_server/smb_server.h
+++ b/source4/smb_server/smb_server.h
@@ -395,10 +395,11 @@ struct smbsrv_connection {
 struct model_ops;
 struct loadparm_context;
 
-NTSTATUS smbsrv_add_socket(struct tevent_context *event_context,
+NTSTATUS smbsrv_add_socket(TALLOC_CTX *mem_ctx,
+			   struct tevent_context *event_context,
 			   struct loadparm_context *lp_ctx,
-			       const struct model_ops *model_ops,
-			       const char *address);
+			   const struct model_ops *model_ops,
+			   const char *address);
 
 struct loadparm_context;
 
diff --git a/source4/smbd/service_named_pipe.c b/source4/smbd/service_named_pipe.c
index f420e2b..25d37af 100644
--- a/source4/smbd/service_named_pipe.c
+++ b/source4/smbd/service_named_pipe.c
@@ -289,7 +289,8 @@ static const struct stream_server_ops named_pipe_stream_ops = {
 	.send_handler		= named_pipe_send,
 };
 
-NTSTATUS tstream_setup_named_pipe(struct tevent_context *event_context,
+NTSTATUS tstream_setup_named_pipe(TALLOC_CTX *mem_ctx,
+				  struct tevent_context *event_context,
 				  struct loadparm_context *lp_ctx,
 				  const struct model_ops *model_ops,
 				  const struct stream_server_ops *stream_ops,
@@ -300,7 +301,7 @@ NTSTATUS tstream_setup_named_pipe(struct tevent_context *event_context,
 	struct named_pipe_socket *pipe_sock;
 	NTSTATUS status = NT_STATUS_NO_MEMORY;;
 
-	pipe_sock = talloc(event_context, struct named_pipe_socket);
+	pipe_sock = talloc(mem_ctx, struct named_pipe_socket);
 	if (pipe_sock == NULL) {
 		goto fail;
 	}
@@ -338,7 +339,8 @@ NTSTATUS tstream_setup_named_pipe(struct tevent_context *event_context,
 	pipe_sock->ops = stream_ops;
 	pipe_sock->private_data	= private_data;
 
-	status = stream_setup_socket(event_context,
+	status = stream_setup_socket(pipe_sock,
+				     event_context,
 				     lp_ctx,
 				     model_ops,
 				     &named_pipe_stream_ops,
diff --git a/source4/smbd/service_stream.c b/source4/smbd/service_stream.c
index 85efa34..9163932 100644
--- a/source4/smbd/service_stream.c
+++ b/source4/smbd/service_stream.c
@@ -255,7 +255,8 @@ static void stream_accept_handler(struct tevent_context *ev, struct tevent_fd *f
   	 a string for the port. Should leave allocating a port nr 
          to the socket implementation - JRV20070903
  */
-NTSTATUS stream_setup_socket(struct tevent_context *event_context,
+NTSTATUS stream_setup_socket(TALLOC_CTX *mem_ctx,
+			     struct tevent_context *event_context,
 			     struct loadparm_context *lp_ctx,
 			     const struct model_ops *model_ops,
 			     const struct stream_server_ops *stream_ops,
@@ -271,7 +272,7 @@ NTSTATUS stream_setup_socket(struct tevent_context *event_context,
 	struct tevent_fd *fde;
 	int i;
 
-	stream_socket = talloc_zero(event_context, struct stream_socket);
+	stream_socket = talloc_zero(mem_ctx, struct stream_socket);
 	NT_STATUS_HAVE_NO_MEMORY(stream_socket);
 
 	status = socket_create(family, SOCKET_TYPE_STREAM, &stream_socket->sock, 0);
diff --git a/source4/torture/rpc/spoolss_notify.c b/source4/torture/rpc/spoolss_notify.c
index facfd3e..a613e31 100644
--- a/source4/torture/rpc/spoolss_notify.c
+++ b/source4/torture/rpc/spoolss_notify.c
@@ -464,7 +464,7 @@ static bool test_start_dcerpc_server(struct torture_context *tctx,
 	torture_assert_ntstatus_ok(tctx, status,
 				   "unable to initialize process models");
 
-	status = smbsrv_add_socket(event_ctx, tctx->lp_ctx, process_model_startup("single"), address);
+	status = smbsrv_add_socket(tctx, event_ctx, tctx->lp_ctx, process_model_startup("single"), address);
 	torture_assert_ntstatus_ok(tctx, status, "starting smb server");
 
 	status = dcesrv_init_context(tctx, tctx->lp_ctx, endpoints, &dce_ctx);
diff --git a/source4/web_server/web_server.c b/source4/web_server/web_server.c
index 97e65e5..4cc2cb8 100644
--- a/source4/web_server/web_server.c
+++ b/source4/web_server/web_server.c
@@ -320,7 +320,8 @@ static void websrv_task_init(struct task_server *task)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list