[PATCH] Fix bug 13150

Volker Lendecke Volker.Lendecke at SerNet.DE
Fri Nov 17 15:25:24 UTC 2017


Hi!

Review appreciated!

Thanks, Volker

-- 
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From e842750d5c2ceb6b89a870e0c98e29b41ba34a72 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 17 Nov 2017 11:35:19 +0100
Subject: [PATCH 1/4] winbind: Replace winbind_event_context with
 server_event_context

There's no point in having two global event contexts

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13150
Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/winbindd/idmap_ldap.c                      |  2 +-
 source3/winbindd/idmap_rfc2307.c                   |  2 +-
 source3/winbindd/winbindd.c                        | 58 +++++++++++-----------
 source3/winbindd/winbindd_cm.c                     |  4 +-
 source3/winbindd/winbindd_cred_cache.c             | 14 +++---
 source3/winbindd/winbindd_dual.c                   | 16 +++---
 source3/winbindd/winbindd_irpc.c                   | 10 ++--
 source3/winbindd/winbindd_misc.c                   |  2 +-
 source3/winbindd/winbindd_pam_auth.c               |  2 +-
 source3/winbindd/winbindd_pam_auth_crap.c          |  2 +-
 source3/winbindd/winbindd_pam_chauthtok.c          |  2 +-
 .../winbindd/winbindd_pam_chng_pswd_auth_crap.c    |  2 +-
 source3/winbindd/winbindd_pam_logoff.c             |  2 +-
 source3/winbindd/winbindd_util.c                   |  2 +-
 14 files changed, 60 insertions(+), 60 deletions(-)

diff --git a/source3/winbindd/idmap_ldap.c b/source3/winbindd/idmap_ldap.c
index 39aa8330735..6765dfc217a 100644
--- a/source3/winbindd/idmap_ldap.c
+++ b/source3/winbindd/idmap_ldap.c
@@ -455,7 +455,7 @@ static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
 
 	/* get_credentials deals with setting up creds */
 
-	ret = smbldap_init(ctx, winbind_event_context(), ctx->url,
+	ret = smbldap_init(ctx, server_event_context(), ctx->url,
 			   false, NULL, NULL, &ctx->smbldap_state);
 	if (!NT_STATUS_IS_OK(ret)) {
 		DEBUG(1, ("ERROR: smbldap_init (%s) failed!\n", ctx->url));
diff --git a/source3/winbindd/idmap_rfc2307.c b/source3/winbindd/idmap_rfc2307.c
index 668a7a4e28e..264ccb034fb 100644
--- a/source3/winbindd/idmap_rfc2307.c
+++ b/source3/winbindd/idmap_rfc2307.c
@@ -193,7 +193,7 @@ static NTSTATUS idmap_rfc2307_init_ldap(struct idmap_rfc2307_context *ctx,
 	}
 
 	/* assume anonymous if we don't have a specified user */
-	ret = smbldap_init(mem_ctx, winbind_event_context(), url,
+	ret = smbldap_init(mem_ctx, server_event_context(), url,
 			   (user_dn == NULL), user_dn, secret,
 			   &ctx->smbldap_state);
 	SAFE_FREE(secret);
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index f24451649b6..981888068c1 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -91,7 +91,7 @@ struct messaging_context *winbind_messaging_context(void)
 	 * Note we MUST use the NULL context here, not the autofree context,
 	 * to avoid side effects in forked children exiting.
 	 */
-	msg = messaging_init(NULL, winbind_event_context());
+	msg = messaging_init(NULL, server_event_context());
 	if (msg == NULL) {
 		smb_panic("Could not init winbindd's messaging context.\n");
 	}
@@ -124,7 +124,7 @@ struct imessaging_context *winbind_imessaging_context(void)
 	 * Note we MUST use the NULL context here, not the autofree context,
 	 * to avoid side effects in forked children exiting.
 	 */
-	msg = imessaging_init(NULL, lp_ctx, myself, winbind_event_context());
+	msg = imessaging_init(NULL, lp_ctx, myself, server_event_context());
 	talloc_unlink(NULL, lp_ctx);
 
 	if (msg == NULL) {
@@ -307,14 +307,14 @@ bool winbindd_setup_sig_term_handler(bool parent)
 	struct tevent_signal *se;
 	bool *is_parent;
 
-	is_parent = talloc(winbind_event_context(), bool);
+	is_parent = talloc(server_event_context(), bool);
 	if (!is_parent) {
 		return false;
 	}
 
 	*is_parent = parent;
 
-	se = tevent_add_signal(winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
 			       is_parent,
 			       SIGTERM, 0,
 			       winbindd_sig_term_handler,
@@ -325,7 +325,7 @@ bool winbindd_setup_sig_term_handler(bool parent)
 		return false;
 	}
 
-	se = tevent_add_signal(winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
 			       is_parent,
 			       SIGINT, 0,
 			       winbindd_sig_term_handler,
@@ -336,7 +336,7 @@ bool winbindd_setup_sig_term_handler(bool parent)
 		return false;
 	}
 
-	se = tevent_add_signal(winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
 			       is_parent,
 			       SIGQUIT, 0,
 			       winbindd_sig_term_handler,
@@ -357,7 +357,7 @@ bool winbindd_setup_stdin_handler(bool parent, bool foreground)
 	if (foreground) {
 		struct stat st;
 
-		is_parent = talloc(winbind_event_context(), bool);
+		is_parent = talloc(server_event_context(), bool);
 		if (!is_parent) {
 			return false;
 		}
@@ -373,7 +373,7 @@ bool winbindd_setup_stdin_handler(bool parent, bool foreground)
 			return false;
 		}
 		if (S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode)) {
-			tevent_add_fd(winbind_event_context(),
+			tevent_add_fd(server_event_context(),
 					is_parent,
 					0,
 					TEVENT_FD_READ,
@@ -405,15 +405,15 @@ bool winbindd_setup_sig_hup_handler(const char *lfile)
 	char *file = NULL;
 
 	if (lfile) {
-		file = talloc_strdup(winbind_event_context(),
+		file = talloc_strdup(server_event_context(),
 				     lfile);
 		if (!file) {
 			return false;
 		}
 	}
 
-	se = tevent_add_signal(winbind_event_context(),
-			       winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
+			       server_event_context(),
 			       SIGHUP, 0,
 			       winbindd_sig_hup_handler,
 			       file);
@@ -442,8 +442,8 @@ static bool winbindd_setup_sig_chld_handler(void)
 {
 	struct tevent_signal *se;
 
-	se = tevent_add_signal(winbind_event_context(),
-			       winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
+			       server_event_context(),
 			       SIGCHLD, 0,
 			       winbindd_sig_chld_handler,
 			       NULL);
@@ -468,8 +468,8 @@ static bool winbindd_setup_sig_usr2_handler(void)
 {
 	struct tevent_signal *se;
 
-	se = tevent_add_signal(winbind_event_context(),
-			       winbind_event_context(),
+	se = tevent_add_signal(server_event_context(),
+			       server_event_context(),
 			       SIGUSR2, 0,
 			       winbindd_sig_usr2_handler,
 			       NULL);
@@ -734,7 +734,7 @@ static void process_request(struct winbindd_cli_state *state)
 		DEBUG(10, ("process_request: Handling async request %d:%s\n",
 			   (int)state->pid, state->cmd_name));
 
-		req = atable->send_req(state->mem_ctx, winbind_event_context(),
+		req = atable->send_req(state->mem_ctx, server_event_context(),
 				       state, state->request);
 		if (req == NULL) {
 			DEBUG(0, ("process_request: atable->send failed for "
@@ -828,7 +828,7 @@ static void request_finished(struct winbindd_cli_state *state)
 
 	TALLOC_FREE(state->request);
 
-	req = wb_resp_write_send(state, winbind_event_context(),
+	req = wb_resp_write_send(state, server_event_context(),
 				 state->out_queue, state->sock,
 				 state->response);
 	if (req == NULL) {
@@ -869,7 +869,7 @@ static void winbind_client_response_written(struct tevent_req *req)
 	state->cmd_name = "no request";
 	state->recv_fn = NULL;
 
-	req = wb_req_read_send(state, winbind_event_context(), state->sock,
+	req = wb_req_read_send(state, server_event_context(), state->sock,
 			       WINBINDD_MAX_EXTRA_DATA);
 	if (req == NULL) {
 		remove_client(state);
@@ -937,7 +937,7 @@ static void new_connection(int listen_sock, bool privileged)
 
 	state->privileged = privileged;
 
-	req = wb_req_read_send(state, winbind_event_context(), state->sock,
+	req = wb_req_read_send(state, server_event_context(), state->sock,
 			       WINBINDD_MAX_EXTRA_DATA);
 	if (req == NULL) {
 		TALLOC_FREE(state);
@@ -977,7 +977,7 @@ static void winbind_client_request_read(struct tevent_req *req)
 		return;
 	}
 
-	req = wait_for_read_send(state, winbind_event_context(), state->sock,
+	req = wait_for_read_send(state, server_event_context(), state->sock,
 				 true);
 	if (req == NULL) {
 		DEBUG(0, ("winbind_client_request_read[%d:%s]:"
@@ -1239,7 +1239,7 @@ static bool winbindd_setup_listeners(void)
 	int rc;
 	char *socket_path;
 
-	pub_state = talloc(winbind_event_context(),
+	pub_state = talloc(server_event_context(),
 			   struct winbindd_listen_state);
 	if (!pub_state) {
 		goto failed;
@@ -1256,7 +1256,7 @@ static bool winbindd_setup_listeners(void)
 		goto failed;
 	}
 
-	fde = tevent_add_fd(winbind_event_context(), pub_state, pub_state->fd,
+	fde = tevent_add_fd(server_event_context(), pub_state, pub_state->fd,
 			    TEVENT_FD_READ, winbindd_listen_fde_handler,
 			    pub_state);
 	if (fde == NULL) {
@@ -1265,7 +1265,7 @@ static bool winbindd_setup_listeners(void)
 	}
 	tevent_fd_set_auto_close(fde);
 
-	priv_state = talloc(winbind_event_context(),
+	priv_state = talloc(server_event_context(),
 			    struct winbindd_listen_state);
 	if (!priv_state) {
 		goto failed;
@@ -1288,7 +1288,7 @@ static bool winbindd_setup_listeners(void)
 		goto failed;
 	}
 
-	fde = tevent_add_fd(winbind_event_context(), priv_state,
+	fde = tevent_add_fd(server_event_context(), priv_state,
 			    priv_state->fd, TEVENT_FD_READ,
 			    winbindd_listen_fde_handler, priv_state);
 	if (fde == NULL) {
@@ -1297,7 +1297,7 @@ static bool winbindd_setup_listeners(void)
 	}
 	tevent_fd_set_auto_close(fde);
 
-	winbindd_scrub_clients_handler(winbind_event_context(), NULL,
+	winbindd_scrub_clients_handler(server_event_context(), NULL,
 				       timeval_current(), NULL);
 	return true;
 failed:
@@ -1412,7 +1412,7 @@ static void winbindd_register_handlers(struct messaging_context *msg_ctx,
 	smb_nscd_flush_group_cache();
 
 	if (lp_allow_trusted_domains()) {
-		if (tevent_add_timer(winbind_event_context(), NULL, timeval_zero(),
+		if (tevent_add_timer(server_event_context(), NULL, timeval_zero(),
 			      rescan_trusted_domains, NULL) == NULL) {
 			DEBUG(0, ("Could not trigger rescan_trusted_domains()\n"));
 			exit(1);
@@ -1777,7 +1777,7 @@ int main(int argc, const char **argv)
 	 */
 
 	status = reinit_after_fork(winbind_messaging_context(),
-				   winbind_event_context(),
+				   server_event_context(),
 				   false, NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		exit_daemon("Winbindd reinit_after_fork() failed", map_errno_from_nt_status(status));
@@ -1807,7 +1807,7 @@ int main(int argc, const char **argv)
 	rpc_lsarpc_init(NULL);
 	rpc_samr_init(NULL);
 
-	winbindd_init_addrchange(NULL, winbind_event_context(),
+	winbindd_init_addrchange(NULL, server_event_context(),
 				 winbind_messaging_context());
 
 	/* setup listen sockets */
@@ -1828,7 +1828,7 @@ int main(int argc, const char **argv)
 	while (1) {
 		frame = talloc_stackframe();
 
-		if (tevent_loop_once(winbind_event_context()) == -1) {
+		if (tevent_loop_once(server_event_context()) == -1) {
 			DEBUG(1, ("tevent_loop_once() failed: %s\n",
 				  strerror(errno)));
 			return 1;
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 1fa688241dd..cece96e7166 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -428,7 +428,7 @@ void set_domain_offline(struct winbindd_domain *domain)
 
 	calc_new_online_timeout_check(domain);
 
-	domain->check_online_event = tevent_add_timer(winbind_event_context(),
+	domain->check_online_event = tevent_add_timer(server_event_context(),
 						NULL,
 						timeval_current_ofs(domain->check_online_timeout,0),
 						check_domain_online_handler,
@@ -604,7 +604,7 @@ void set_domain_online_request(struct winbindd_domain *domain)
 
 	TALLOC_FREE(domain->check_online_event);
 
-	domain->check_online_event = tevent_add_timer(winbind_event_context(),
+	domain->check_online_event = tevent_add_timer(server_event_context(),
 						     NULL,
 						     tev,
 						     check_domain_online_handler,
diff --git a/source3/winbindd/winbindd_cred_cache.c b/source3/winbindd/winbindd_cred_cache.c
index ed2dd10c91d..5e019dfce0c 100644
--- a/source3/winbindd/winbindd_cred_cache.c
+++ b/source3/winbindd/winbindd_cred_cache.c
@@ -284,7 +284,7 @@ done:
 	if (entry->refresh_time == 0) {
 		entry->refresh_time = new_start;
 	}
-	entry->event = tevent_add_timer(winbind_event_context(), entry,
+	entry->event = tevent_add_timer(server_event_context(), entry,
 				       timeval_set(new_start, 0),
 				       krb5_ticket_refresh_handler,
 				       entry);
@@ -383,7 +383,7 @@ static void krb5_ticket_gain_handler(struct tevent_context *event_ctx,
 	if (entry->refresh_time == 0) {
 		entry->refresh_time = t.tv_sec;
 	}
-	entry->event = tevent_add_timer(winbind_event_context(),
+	entry->event = tevent_add_timer(server_event_context(),
 				       entry,
 				       t,
 				       krb5_ticket_refresh_handler,
@@ -402,7 +402,7 @@ static void add_krb5_ticket_gain_handler_event(struct WINBINDD_CCACHE_ENTRY *ent
 				     struct timeval t)
 {
 	entry->refresh_time = 0;
-	entry->event = tevent_add_timer(winbind_event_context(),
+	entry->event = tevent_add_timer(server_event_context(),
 				       entry,
 				       t,
 				       krb5_ticket_gain_handler,
@@ -422,13 +422,13 @@ void ccache_regain_all_now(void)
 		 * the event has the krb5_ticket_gain_handler
 		 */
 		if (cur->refresh_time == 0) {
-			new_event = tevent_add_timer(winbind_event_context(),
+			new_event = tevent_add_timer(server_event_context(),
 						    cur,
 						    t,
 						    krb5_ticket_gain_handler,
 						    cur);
 		} else {
-			new_event = tevent_add_timer(winbind_event_context(),
+			new_event = tevent_add_timer(server_event_context(),
 						    cur,
 						    t,
 						    krb5_ticket_refresh_handler,
@@ -545,7 +545,7 @@ NTSTATUS add_ccache_to_list(const char *princ_name,
 				if (!entry->refresh_time) {
 					entry->refresh_time = t.tv_sec;
 				}
-				entry->event = tevent_add_timer(winbind_event_context(),
+				entry->event = tevent_add_timer(server_event_context(),
 							       entry,
 							       t,
 							       krb5_ticket_refresh_handler,
@@ -643,7 +643,7 @@ NTSTATUS add_ccache_to_list(const char *princ_name,
 		if (entry->refresh_time == 0) {
 			entry->refresh_time = t.tv_sec;
 		}
-		entry->event = tevent_add_timer(winbind_event_context(),
+		entry->event = tevent_add_timer(server_event_context(),
 					       entry,
 					       t,
 					       krb5_ticket_refresh_handler,
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 97e1c88a636..d36eb0525c9 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -175,7 +175,7 @@ static void wb_child_request_trigger(struct tevent_req *req,
 		return;
 	}
 
-	subreq = wb_simple_trans_send(state, winbind_event_context(), NULL,
+	subreq = wb_simple_trans_send(state, server_event_context(), NULL,
 				      state->child->sock, state->request);
 	if (tevent_req_nomem(subreq, req)) {
 		return;
@@ -968,7 +968,7 @@ static void account_lockout_policy_handler(struct tevent_context *ctx,
 			 nt_errstr(result)));
 	}
 
-	child->lockout_policy_event = tevent_add_timer(winbind_event_context(), NULL,
+	child->lockout_policy_event = tevent_add_timer(server_event_context(), NULL,
 						      timeval_current_ofs(3600, 0),
 						      account_lockout_policy_handler,
 						      child);
@@ -1130,7 +1130,7 @@ static void machine_password_change_handler(struct tevent_context *ctx,
 	}
 
 done:
-	child->machine_password_change_event = tevent_add_timer(winbind_event_context(), NULL,
+	child->machine_password_change_event = tevent_add_timer(server_event_context(), NULL,
 							      next_change,
 							      machine_password_change_handler,
 							      child);
@@ -1251,7 +1251,7 @@ NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself,
 
 	status = reinit_after_fork(
 		winbind_messaging_context(),
-		winbind_event_context(),
+		server_event_context(),
 		true, NULL);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(0,("reinit_after_fork() failed\n"));
@@ -1556,7 +1556,7 @@ static bool fork_domain_child(struct winbindd_child *child)
 		}
 
 		child->lockout_policy_event = tevent_add_timer(
-			winbind_event_context(), NULL, timeval_zero(),
+			server_event_context(), NULL, timeval_zero(),
 			account_lockout_policy_handler,
 			child);
 	}
@@ -1570,13 +1570,13 @@ static bool fork_domain_child(struct winbindd_child *child)
 		if (calculate_next_machine_pwd_change(child->domain->name,
 						       &next_change)) {
 			child->machine_password_change_event = tevent_add_timer(
-				winbind_event_context(), NULL, next_change,
+				server_event_context(), NULL, next_change,
 				machine_password_change_handler,
 				child);
 		}
 	}
 
-	fde = tevent_add_fd(winbind_event_context(), NULL, state.cli.sock,
+	fde = tevent_add_fd(server_event_context(), NULL, state.cli.sock,
 			    TEVENT_FD_READ, child_handler, &state);
 	if (fde == NULL) {
 		DEBUG(1, ("tevent_add_fd failed\n"));
@@ -1588,7 +1588,7 @@ static bool fork_domain_child(struct winbindd_child *child)
 		int ret;
 		TALLOC_CTX *frame = talloc_stackframe();
 
-		ret = tevent_loop_once(winbind_event_context());
+		ret = tevent_loop_once(server_event_context());
 		if (ret != 0) {
 			DEBUG(1, ("tevent_loop_once failed: %s\n",
 				  strerror(errno)));
diff --git a/source3/winbindd/winbindd_irpc.c b/source3/winbindd/winbindd_irpc.c
index fface90cfad..d0d68c89411 100644
--- a/source3/winbindd/winbindd_irpc.c
+++ b/source3/winbindd/winbindd_irpc.c
@@ -123,7 +123,7 @@ static NTSTATUS wb_irpc_DsrUpdateReadOnlyServerDnsRecords(struct irpc_message *m
 	DEBUG(5, ("wb_irpc_DsrUpdateReadOnlyServerDnsRecords called\n"));
 
 	return wb_irpc_forward_rpc_call(msg, msg,
-					winbind_event_context(),
+					server_event_context(),
 					req, NDR_WINBIND_DSRUPDATEREADONLYSERVERDNSRECORDS,
 					"winbind_DsrUpdateReadOnlyServerDnsRecords",
 					domain, IRPC_CALL_TIMEOUT);
@@ -206,7 +206,7 @@ static NTSTATUS wb_irpc_SamLogon(struct irpc_message *msg,
 	DEBUG(5, ("wb_irpc_SamLogon called\n"));
 
 	return wb_irpc_forward_rpc_call(msg, msg,
-					winbind_event_context(),
+					server_event_context(),
 					req, NDR_WINBIND_SAMLOGON,
 					"winbind_SamLogon",
 					domain, IRPC_CALL_TIMEOUT);
@@ -266,7 +266,7 @@ static NTSTATUS wb_irpc_LogonControl(struct irpc_message *msg,
 
 	TALLOC_FREE(frame);
 	return wb_irpc_forward_rpc_call(msg, msg,
-					winbind_event_context(),
+					server_event_context(),
 					req, NDR_WINBIND_LOGONCONTROL,
 					"winbind_LogonControl",
 					domain, 45 /* timeout */);
@@ -306,7 +306,7 @@ static NTSTATUS wb_irpc_GetForestTrustInformation(struct irpc_message *msg,
 	DEBUG(5, ("wb_irpc_GetForestTrustInformation called\n"));
 
 	return wb_irpc_forward_rpc_call(msg, msg,
-					winbind_event_context(),
+					server_event_context(),
 					req, NDR_WINBIND_GETFORESTTRUSTINFORMATION,
 					"winbind_GetForestTrustInformation",
 					domain, 45 /* timeout */);
@@ -324,7 +324,7 @@ static NTSTATUS wb_irpc_SendToSam(struct irpc_message *msg,
 	DEBUG(5, ("wb_irpc_SendToSam called\n"));
 
 	return wb_irpc_forward_rpc_call(msg, msg,
-					winbind_event_context(),
+					server_event_context(),
 					req, NDR_WINBIND_SENDTOSAM,
 					"winbind_SendToSam",
 					domain, IRPC_CALL_TIMEOUT);
diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c
index 30730dcec12..6cf33420768 100644
--- a/source3/winbindd/winbindd_misc.c
+++ b/source3/winbindd/winbindd_misc.c
@@ -277,7 +277,7 @@ void winbindd_domain_info(struct winbindd_cli_state *cli)
 	 * Send a ping down. This implicitly initializes the domain.
 	 */
 
-	req = wb_domain_request_send(state, winbind_event_context(),
+	req = wb_domain_request_send(state, server_event_context(),
 				     domain, &state->ping_request);
 	if (req == NULL) {
 		DEBUG(3, ("wb_domain_request_send failed\n"));
diff --git a/source3/winbindd/winbindd_pam_auth.c b/source3/winbindd/winbindd_pam_auth.c
index 4f963a32818..7ff44888975 100644
--- a/source3/winbindd/winbindd_pam_auth.c
+++ b/source3/winbindd/winbindd_pam_auth.c
@@ -81,7 +81,7 @@ struct tevent_req *winbindd_pam_auth_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
-	subreq = wb_domain_request_send(state, winbind_event_context(), domain,
+	subreq = wb_domain_request_send(state, server_event_context(), domain,
 					request);
 	if (tevent_req_nomem(subreq, req)) {
 		return tevent_req_post(req, ev);
diff --git a/source3/winbindd/winbindd_pam_auth_crap.c b/source3/winbindd/winbindd_pam_auth_crap.c
index e6a47c86785..cfeafbcfda8 100644
--- a/source3/winbindd/winbindd_pam_auth_crap.c
+++ b/source3/winbindd/winbindd_pam_auth_crap.c
@@ -93,7 +93,7 @@ struct tevent_req *winbindd_pam_auth_crap_send(
 		fstrcpy(request->data.auth_crap.workstation, lp_netbios_name());
 	}
 
-	subreq = wb_domain_request_send(state, winbind_event_context(), domain,
+	subreq = wb_domain_request_send(state, server_event_context(), domain,
 					request);
 	if (tevent_req_nomem(subreq, req)) {
 		return tevent_req_post(req, ev);
diff --git a/source3/winbindd/winbindd_pam_chauthtok.c b/source3/winbindd/winbindd_pam_chauthtok.c
index 8ffbc29b973..0d749fbcecd 100644
--- a/source3/winbindd/winbindd_pam_chauthtok.c
+++ b/source3/winbindd/winbindd_pam_chauthtok.c
@@ -79,7 +79,7 @@ struct tevent_req *winbindd_pam_chauthtok_send(
 		return tevent_req_post(req, ev);
 	}
 
-	subreq = wb_domain_request_send(state, winbind_event_context(),
+	subreq = wb_domain_request_send(state, server_event_context(),
 					contact_domain, request);
 	if (tevent_req_nomem(subreq, req)) {
 		return tevent_req_post(req, ev);
diff --git a/source3/winbindd/winbindd_pam_chng_pswd_auth_crap.c b/source3/winbindd/winbindd_pam_chng_pswd_auth_crap.c
index 9133a91fa50..e9ee0ab63ce 100644
--- a/source3/winbindd/winbindd_pam_chng_pswd_auth_crap.c
+++ b/source3/winbindd/winbindd_pam_chng_pswd_auth_crap.c
@@ -73,7 +73,7 @@ struct tevent_req *winbindd_pam_chng_pswd_auth_crap_send(
 		return tevent_req_post(req, ev);
 	}
 
-	subreq = wb_domain_request_send(state, winbind_event_context(),
+	subreq = wb_domain_request_send(state, server_event_context(),
 					domain, request);
 	if (tevent_req_nomem(subreq, req)) {
 		return tevent_req_post(req, ev);
diff --git a/source3/winbindd/winbindd_pam_logoff.c b/source3/winbindd/winbindd_pam_logoff.c
index b3c60adf857..b5b7840f99c 100644
--- a/source3/winbindd/winbindd_pam_logoff.c
+++ b/source3/winbindd/winbindd_pam_logoff.c
@@ -94,7 +94,7 @@ struct tevent_req *winbindd_pam_logoff_send(TALLOC_CTX *mem_ctx,
 		break;
 	}
 
-	subreq = wb_domain_request_send(state, winbind_event_context(), domain,
+	subreq = wb_domain_request_send(state, server_event_context(), domain,
 					request);
 	if (tevent_req_nomem(subreq, req)) {
 		return tevent_req_post(req, ev);
diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
index 6eed02e9fe8..7b443c79fa5 100644
--- a/source3/winbindd/winbindd_util.c
+++ b/source3/winbindd/winbindd_util.c
@@ -321,7 +321,7 @@ static void add_trusted_domains( struct winbindd_domain *domain )
 	state->request.length = sizeof(state->request);
 	state->request.cmd = WINBINDD_LIST_TRUSTDOM;
 
-	req = wb_domain_request_send(state, winbind_event_context(),
+	req = wb_domain_request_send(state, server_event_context(),
 				     domain, &state->request);
 	if (req == NULL) {
 		DEBUG(1, ("wb_domain_request_send failed\n"));
-- 
2.11.0


From b7003053d3f0ee43cb2d65bb90704806d04821a8 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 17 Nov 2017 11:37:30 +0100
Subject: [PATCH 2/4] winbind: Remove winbind_event_context

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13150
Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/torture/torture.c         |  9 ---------
 source3/winbindd/winbindd.c       | 19 -------------------
 source3/winbindd/winbindd_proto.h |  1 -
 3 files changed, 29 deletions(-)

diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 360adad5953..481154fc36f 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -11588,15 +11588,6 @@ static struct {
 	{ "qpathinfo-bufsize", run_qpathinfo_bufsize, 0 },
 	{NULL, NULL, 0}};
 
-/*
- * dummy function to satisfy linker dependency
- */
-struct tevent_context *winbind_event_context(void);
-struct tevent_context *winbind_event_context(void)
-{
-	return NULL;
-}
-
 /****************************************************************************
 run a specified test or "ALL"
 ****************************************************************************/
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 981888068c1..75f9dbb142e 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -60,25 +60,6 @@ static bool interactive = False;
 
 extern bool override_logfile;
 
-struct tevent_context *winbind_event_context(void)
-{
-	static struct tevent_context *ev = NULL;
-
-	if (ev != NULL) {
-		return ev;
-	}
-
-	/*
-	 * Note we MUST use the NULL context here, not the autofree context,
-	 * to avoid side effects in forked children exiting.
-	 */
-	ev = samba_tevent_context_init(NULL);
-	if (ev == NULL) {
-		smb_panic("Could not init winbindd's messaging context.\n");
-	}
-	return ev;
-}
-
 struct messaging_context *winbind_messaging_context(void)
 {
 	static struct messaging_context *msg = NULL;
diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
index 46e6530105a..ccf39e57508 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -34,7 +34,6 @@ bool winbindd_setup_sig_hup_handler(const char *lfile);
 bool winbindd_use_idmap_cache(void);
 bool winbindd_use_cache(void);
 char *get_winbind_priv_pipe_dir(void);
-struct tevent_context *winbind_event_context(void);
 
 /* The following definitions come from winbindd/winbindd_ads.c  */
 
-- 
2.11.0


From 59008bd0a712c2f0c1651f34ebee4f6569fe79e8 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 17 Nov 2017 11:42:34 +0100
Subject: [PATCH 3/4] winbind: winbind_messaging_context ->
 server_messaging_context

Don't use winbind_messaging_context anymore.

This fixes a bug analysed by Peter Somogyi <PSOMOGYI at hu.ibm.com>: If a
parent winbind forks, it only called reinit_after_fork on
winbind_messaging_context. On the other hand, deep in dbwrap_open we use
server_messaging_context(). This is not reinitialized by
winbind_reinit_after fork, so the parent and child share a ctdb
connection. This is invalid, because replies from ctdb end up in the
wrong process.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13150
Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/winbindd/winbindd.c          | 16 ++++++++--------
 source3/winbindd/winbindd_cm.c       | 32 ++++++++++++++++----------------
 source3/winbindd/winbindd_dual.c     | 34 +++++++++++++++++-----------------
 source3/winbindd/winbindd_dual_srv.c |  6 +++---
 4 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 75f9dbb142e..679faefe2fd 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -240,7 +240,7 @@ static void terminate(bool is_parent)
 #endif
 
 	if (is_parent) {
-		struct messaging_context *msg = winbind_messaging_context();
+		struct messaging_context *msg = server_messaging_context();
 		struct server_id self = messaging_server_id(msg);
 		serverid_deregister(self);
 		pidfile_unlink(lp_pid_directory(), "winbindd");
@@ -1350,9 +1350,9 @@ static void winbindd_register_handlers(struct messaging_context *msg_ctx,
 			   MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus);
 
 	/* Handle domain online/offline messages for domains */
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_WINBIND_DOMAIN_OFFLINE, winbind_msg_domain_offline);
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_WINBIND_DOMAIN_ONLINE, winbind_msg_domain_online);
 
 	messaging_register(msg_ctx, NULL,
@@ -1663,7 +1663,7 @@ int main(int argc, const char **argv)
 
 	/* Initialise messaging system */
 
-	if (winbind_messaging_context() == NULL) {
+	if (server_messaging_context() == NULL) {
 		exit(1);
 	}
 
@@ -1757,7 +1757,7 @@ int main(int argc, const char **argv)
 	 * winbindd-specific resources we must free yet. JRA.
 	 */
 
-	status = reinit_after_fork(winbind_messaging_context(),
+	status = reinit_after_fork(server_messaging_context(),
 				   server_event_context(),
 				   false, NULL);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -1774,9 +1774,9 @@ int main(int argc, const char **argv)
 		exit_daemon(nt_errstr(status), map_errno_from_nt_status(status));
 	}
 
-	winbindd_register_handlers(winbind_messaging_context(), !Fork);
+	winbindd_register_handlers(server_messaging_context(), !Fork);
 
-	if (!messaging_parent_dgm_cleanup_init(winbind_messaging_context())) {
+	if (!messaging_parent_dgm_cleanup_init(server_messaging_context())) {
 		exit(1);
 	}
 
@@ -1789,7 +1789,7 @@ int main(int argc, const char **argv)
 	rpc_samr_init(NULL);
 
 	winbindd_init_addrchange(NULL, server_event_context(),
-				 winbind_messaging_context());
+				 server_messaging_context());
 
 	/* setup listen sockets */
 
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index cece96e7166..f88c704c014 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -223,10 +223,10 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
 
 	if (domain->dc_probe_pid != (pid_t)0) {
 		/* Parent */
-		messaging_register(winbind_messaging_context(), NULL,
+		messaging_register(server_messaging_context(), NULL,
 				   MSG_WINBIND_TRY_TO_GO_ONLINE,
 				   msg_try_to_go_online);
-		messaging_register(winbind_messaging_context(), NULL,
+		messaging_register(server_messaging_context(), NULL,
 				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
 				   msg_failed_to_go_online);
 		return True;
@@ -247,7 +247,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(1, ("winbindd_reinit_after_fork failed: %s\n",
 			  nt_errstr(status)));
-		messaging_send_buf(winbind_messaging_context(),
+		messaging_send_buf(server_messaging_context(),
 				   pid_to_procid(parent_pid),
 				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
 				   (const uint8_t *)domain->name,
@@ -259,7 +259,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
 	mem_ctx = talloc_init("fork_child_dc_connect");
 	if (!mem_ctx) {
 		DEBUG(0,("talloc_init failed.\n"));
-		messaging_send_buf(winbind_messaging_context(),
+		messaging_send_buf(server_messaging_context(),
 				   pid_to_procid(parent_pid),
 				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
 				   (const uint8_t *)domain->name,
@@ -269,7 +269,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
 
 	if ((!get_dcs(mem_ctx, domain, &dcs, &num_dcs, 0)) || (num_dcs == 0)) {
 		/* Still offline ? Can't find DC's. */
-		messaging_send_buf(winbind_messaging_context(),
+		messaging_send_buf(server_messaging_context(),
 				   pid_to_procid(parent_pid),
 				   MSG_WINBIND_FAILED_TO_GO_ONLINE,
 				   (const uint8_t *)domain->name,
@@ -280,7 +280,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
 	/* We got a DC. Send a message to our parent to get it to
 	   try and do the same. */
 
-	messaging_send_buf(winbind_messaging_context(),
+	messaging_send_buf(server_messaging_context(),
 			   pid_to_procid(parent_pid),
 			   MSG_WINBIND_TRY_TO_GO_ONLINE,
 			   (const uint8_t *)domain->name,
@@ -444,7 +444,7 @@ void set_domain_offline(struct winbindd_domain *domain)
 
 	/* Send a message to the parent that the domain is offline. */
 	if (parent_pid > 1 && !domain->internal) {
-		messaging_send_buf(winbind_messaging_context(),
+		messaging_send_buf(server_messaging_context(),
 				   pid_to_procid(parent_pid),
 				   MSG_WINBIND_DOMAIN_OFFLINE,
 				   (uint8_t *)domain->name,
@@ -458,7 +458,7 @@ void set_domain_offline(struct winbindd_domain *domain)
 		struct winbindd_child *idmap = idmap_child();
 
 		if ( idmap->pid != 0 ) {
-			messaging_send_buf(winbind_messaging_context(),
+			messaging_send_buf(server_messaging_context(),
 					   pid_to_procid(idmap->pid), 
 					   MSG_WINBIND_OFFLINE, 
 					   (const uint8_t *)domain->name,
@@ -521,16 +521,16 @@ static void set_domain_online(struct winbindd_domain *domain)
 	TALLOC_FREE(domain->check_online_event);
 
 	/* Ensure we ignore any pending child messages. */
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_TRY_TO_GO_ONLINE, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_FAILED_TO_GO_ONLINE, NULL);
 
 	domain->online = True;
 
 	/* Send a message to the parent that the domain is online. */
 	if (parent_pid > 1 && !domain->internal) {
-		messaging_send_buf(winbind_messaging_context(),
+		messaging_send_buf(server_messaging_context(),
 				   pid_to_procid(parent_pid),
 				   MSG_WINBIND_DOMAIN_ONLINE,
 				   (uint8_t *)domain->name,
@@ -544,7 +544,7 @@ static void set_domain_online(struct winbindd_domain *domain)
 		struct winbindd_child *idmap = idmap_child();
 
 		if ( idmap->pid != 0 ) {
-			messaging_send_buf(winbind_messaging_context(),
+			messaging_send_buf(server_messaging_context(),
 					   pid_to_procid(idmap->pid), 
 					   MSG_WINBIND_ONLINE, 
 					   (const uint8_t *)domain->name,
@@ -1420,7 +1420,7 @@ static bool dcip_check_name(TALLOC_CTX *mem_ctx,
 	}
 #endif
 
-	status = nbt_getdc(winbind_messaging_context(), 10, pss, domain->name,
+	status = nbt_getdc(server_messaging_context(), 10, pss, domain->name,
 			   &domain->sid, nt_version, mem_ctx, &nt_version,
 			   &dc_name, NULL);
 	if (NT_STATUS_IS_OK(status)) {
@@ -1789,7 +1789,7 @@ NTSTATUS wb_open_internal_pipe(TALLOC_CTX *mem_ctx,
 						 session_info,
 						 NULL,
 						 NULL,
-						 winbind_messaging_context(),
+						 server_messaging_context(),
 						 &cli);
 	} else {
 		status = rpc_pipe_open_internal(mem_ctx,
@@ -1797,7 +1797,7 @@ NTSTATUS wb_open_internal_pipe(TALLOC_CTX *mem_ctx,
 						session_info,
 						NULL,
 						NULL,
-						winbind_messaging_context(),
+						server_messaging_context(),
 						&cli);
 	}
 	if (!NT_STATUS_IS_OK(status)) {
@@ -3211,7 +3211,7 @@ static NTSTATUS cm_connect_netlogon_transport(struct winbindd_domain *domain,
 					      enum dcerpc_transport_t transport,
 					      struct rpc_pipe_client **cli)
 {
-	struct messaging_context *msg_ctx = winbind_messaging_context();
+	struct messaging_context *msg_ctx = server_messaging_context();
 	struct winbindd_cm_conn *conn;
 	NTSTATUS result;
 	struct cli_credentials *creds = NULL;
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index d36eb0525c9..3b25e53e786 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -1051,7 +1051,7 @@ static void machine_password_change_handler(struct tevent_context *ctx,
 					    struct timeval now,
 					    void *private_data)
 {
-	struct messaging_context *msg_ctx = winbind_messaging_context();
+	struct messaging_context *msg_ctx = server_messaging_context();
 	struct winbindd_child *child =
 		(struct winbindd_child *)private_data;
 	struct rpc_pipe_client *netlogon_pipe = NULL;
@@ -1250,7 +1250,7 @@ NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself,
 	NTSTATUS status;
 
 	status = reinit_after_fork(
-		winbind_messaging_context(),
+		server_messaging_context(),
 		server_event_context(),
 		true, NULL);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -1275,26 +1275,26 @@ NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself,
 	CatchChild();
 
 	/* Don't handle the same messages as our parent. */
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_SMB_CONF_UPDATED, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_SHUTDOWN, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_OFFLINE, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_ONLINE, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_ONLINESTATUS, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_DUMP_EVENT_LIST, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_DUMP_DOMAIN_LIST, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_DEBUG, NULL);
 
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_DOMAIN_OFFLINE, NULL);
-	messaging_deregister(winbind_messaging_context(),
+	messaging_deregister(server_messaging_context(),
 			     MSG_WINBIND_DOMAIN_ONLINE, NULL);
 
 	/* We have destroyed all events in the winbindd_event_context
@@ -1492,15 +1492,15 @@ static bool fork_domain_child(struct winbindd_child *child)
 	}
 
 	/* Handle online/offline messages. */
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_WINBIND_OFFLINE, child_msg_offline);
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_WINBIND_ONLINE, child_msg_online);
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_DUMP_EVENT_LIST, child_msg_dump_event_list);
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_DEBUG, debug_message);
-	messaging_register(winbind_messaging_context(), NULL,
+	messaging_register(server_messaging_context(), NULL,
 			   MSG_WINBIND_IP_DROPPED,
 			   winbind_msg_ip_dropped);
 
diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c
index 9fb15e9b0ab..797a9d95493 100644
--- a/source3/winbindd/winbindd_dual_srv.c
+++ b/source3/winbindd/winbindd_dual_srv.c
@@ -523,7 +523,7 @@ NTSTATUS _wbint_DsGetDcName(struct pipes_struct *p, struct wbint_DsGetDcName *r)
 	struct dcerpc_binding_handle *b;
 
 	if (domain == NULL) {
-		return dsgetdcname(p->mem_ctx, winbind_messaging_context(),
+		return dsgetdcname(p->mem_ctx, server_messaging_context(),
 				   r->in.domain_name, r->in.domain_guid,
 				   r->in.site_name ? r->in.site_name : "",
 				   r->in.flags,
@@ -715,7 +715,7 @@ again:
 NTSTATUS _wbint_ChangeMachineAccount(struct pipes_struct *p,
 				     struct wbint_ChangeMachineAccount *r)
 {
-	struct messaging_context *msg_ctx = winbind_messaging_context();
+	struct messaging_context *msg_ctx = server_messaging_context();
 	struct winbindd_domain *domain;
 	NTSTATUS status;
 	struct rpc_pipe_client *netlogon_pipe;
@@ -1364,7 +1364,7 @@ static WERROR _winbind_LogonControl_CHANGE_PASSWORD(struct pipes_struct *p,
 			     struct winbindd_domain *domain,
 			     struct winbind_LogonControl *r)
 {
-	struct messaging_context *msg_ctx = winbind_messaging_context();
+	struct messaging_context *msg_ctx = server_messaging_context();
 	NTSTATUS status;
 	struct rpc_pipe_client *netlogon_pipe;
 	struct cli_credentials *creds = NULL;
-- 
2.11.0


From e371ac1557199e5a37a52f8c3f116419ca2a669f Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 17 Nov 2017 11:47:37 +0100
Subject: [PATCH 4/4] winbind: Remove winbind_messaging_context

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13150
Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/winbindd/winbindd.c       | 19 -------------------
 source3/winbindd/winbindd_proto.h |  1 -
 2 files changed, 20 deletions(-)

diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 679faefe2fd..ceb131e9b32 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -60,25 +60,6 @@ static bool interactive = False;
 
 extern bool override_logfile;
 
-struct messaging_context *winbind_messaging_context(void)
-{
-	static struct messaging_context *msg = NULL;
-
-	if (msg != NULL) {
-		return msg;
-	}
-
-	/*
-	 * Note we MUST use the NULL context here, not the autofree context,
-	 * to avoid side effects in forked children exiting.
-	 */
-	msg = messaging_init(NULL, server_event_context());
-	if (msg == NULL) {
-		smb_panic("Could not init winbindd's messaging context.\n");
-	}
-	return msg;
-}
-
 struct imessaging_context *winbind_imessaging_context(void)
 {
 	static struct imessaging_context *msg = NULL;
diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
index ccf39e57508..83136996dd2 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -24,7 +24,6 @@
 #define _WINBINDD_PROTO_H_
 
 /* The following definitions come from winbindd/winbindd.c  */
-struct messaging_context *winbind_messaging_context(void);
 struct imessaging_context *winbind_imessaging_context(void);
 void request_error(struct winbindd_cli_state *state);
 void request_ok(struct winbindd_cli_state *state);
-- 
2.11.0



More information about the samba-technical mailing list