[PATCH] Fix bug 13150
Jeremy Allison
jra at samba.org
Fri Nov 17 21:54:33 UTC 2017
On Fri, Nov 17, 2017 at 04:25:24PM +0100, Volker Lendecke via samba-technical wrote:
> Hi!
>
> Review appreciated!
Oh that's a good catch. Wonder how long that one took to track down :-).
RB+ and pushed.
> --
> 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
> 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