1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

s3:winbindd: cancel all ccache entry events and not just one

cancel_named_event() is stupid by design and also only cancels
one single event.

metze
This commit is contained in:
Stefan Metzmacher 2008-12-30 09:17:20 +01:00
parent f81f21c09b
commit 94c4376b49
3 changed files with 19 additions and 6 deletions

View File

@ -75,6 +75,20 @@ static int ccache_entry_count(void)
return i;
}
void ccache_remove_all_after_fork(void)
{
struct WINBINDD_CCACHE_ENTRY *cur, *next;
for (cur = ccache_list; cur; cur = next) {
next = cur->next;
DLIST_REMOVE(ccache_list, cur);
TALLOC_FREE(cur->event);
TALLOC_FREE(cur);
}
return;
}
/****************************************************************
Do the work of refreshing the ticket.
****************************************************************/

View File

@ -1206,6 +1206,10 @@ static bool fork_domain_child(struct winbindd_child *child)
close_conns_after_fork();
/* Ensure we're not handling an event inherited from
our parent. */
ccache_remove_all_after_fork();
if (!override_logfile) {
lp_set_logfile(child->logfilename);
reopen_logs();
@ -1269,12 +1273,6 @@ static bool fork_domain_child(struct winbindd_child *child)
}
}
/* Ensure we're not handling an event inherited from
our parent. */
cancel_named_event(winbind_event_context(),
"krb5_ticket_refresh_handler");
/* We might be in the idmap child...*/
if (child->domain && !(child->domain->internal) &&
lp_winbind_offline_logon()) {

View File

@ -243,6 +243,7 @@ bool ccache_entry_exists(const char *username);
bool ccache_entry_identical(const char *username,
uid_t uid,
const char *ccname);
void ccache_remove_all_after_fork(void);
NTSTATUS add_ccache_to_list(const char *princ_name,
const char *ccname,
const char *service,