/* The following definitions come from lib/events.c */
-struct timed_event *event_add_timed(struct event_context *event_ctx,
+struct timed_event *_event_add_timed(struct event_context *event_ctx,
TALLOC_CTX *mem_ctx,
struct timeval when,
const char *event_name,
void (*handler)(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data),
void *private_data);
+#define event_add_timed(event_ctx, mem_ctx, when, handler, private_data) \
+ _event_add_timed(event_ctx, mem_ctx, when, #handler, handler, private_data)
struct fd_event *event_add_fd(struct event_context *event_ctx,
TALLOC_CTX *mem_ctx,
int fd, uint16_t flags,
* @brief Timed event callback
* @param[in] ev Event context
* @param[in] te The timed event
- * @param[in] now current time
+ * @param[in] now zero time
* @param[in] priv The async request to be finished
*/
static void async_trigger(struct event_context *ev, struct timed_event *te,
- const struct timeval *now, void *priv)
+ struct timeval now, void *priv)
{
struct async_req *req = talloc_get_type_abort(priv, struct async_req);
{
req->status = status;
- if (event_add_timed(ev, req, timeval_zero(), "async_trigger",
+ if (event_add_timed(ev, req, timeval_zero(),
async_trigger, req) == NULL) {
return false;
}
static void async_req_timedout(struct event_context *ev,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *priv)
{
struct async_req *req = talloc_get_type_abort(
{
return (event_add_timed(ev, req,
timeval_current_ofs(to.tv_sec, to.tv_usec),
- "async_req_timedout", async_req_timedout, req)
+ async_req_timedout, req)
!= NULL);
}
static void async_req_immediate_trigger(struct event_context *ev,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *priv)
{
struct async_queue_entry *e = talloc_get_type_abort(
struct timed_event *te;
te = event_add_timed(ev, e, timeval_zero(),
- "async_req_immediate_trigger",
async_req_immediate_trigger,
e);
if (te == NULL) {
static void deferred_message_dispatch(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct deferred_msg_state *state = talloc_get_type_abort(
evt = event_add_timed(conn->msg_ctx->event_ctx,
conn->msg_ctx->event_ctx,
timeval_zero(),
- "deferred_message_dispatch",
deferred_message_dispatch,
msg_state);
if (evt == NULL) {
const char *event_name;
void (*handler)(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data);
void *private_data;
};
handed to it.
****************************************************************************/
-struct timed_event *event_add_timed(struct event_context *event_ctx,
+struct timed_event *_event_add_timed(struct event_context *event_ctx,
TALLOC_CTX *mem_ctx,
struct timeval when,
const char *event_name,
void (*handler)(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data),
void *private_data)
{
event_ctx->timed_events->handler(
event_ctx,
- event_ctx->timed_events, &now,
+ event_ctx->timed_events, now,
event_ctx->timed_events->private_data);
fired = True;
static void smbldap_idle_fn(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data);
/**********************************************************************
ldap_state->idle_event = event_add_timed(
ldap_state->event_context, NULL,
timeval_current_ofs(SMBLDAP_IDLE_TIME, 0),
- "smbldap_idle_fn", smbldap_idle_fn, ldap_state);
+ smbldap_idle_fn, ldap_state);
}
DEBUG(4,("The LDAP server is successfully connected\n"));
static void smbldap_idle_fn(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct smbldap_state *state = (struct smbldap_state *)private_data;
return;
}
- if ((state->last_use+SMBLDAP_IDLE_TIME) > now->tv_sec) {
+ if ((state->last_use+SMBLDAP_IDLE_TIME) > now.tv_sec) {
DEBUG(10,("ldap connection not idle...\n"));
state->idle_event = event_add_timed(
event_ctx, NULL,
- timeval_add(now, SMBLDAP_IDLE_TIME, 0),
- "smbldap_idle_fn", smbldap_idle_fn,
+ timeval_add(&now, SMBLDAP_IDLE_TIME, 0),
+ smbldap_idle_fn,
private_data);
return;
}
static void aio_child_cleanup(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct aio_child_list *list = talloc_get_type_abort(
* Re-schedule the next cleanup round
*/
list->cleanup_event = event_add_timed(smbd_event_context(), list,
- timeval_add(now, 30, 0),
- "aio_child_cleanup",
+ timeval_add(&now, 30, 0),
aio_child_cleanup, list);
}
if (data->cleanup_event == NULL) {
data->cleanup_event = event_add_timed(smbd_event_context(), data,
timeval_current_ofs(30, 0),
- "aio_child_cleanup",
aio_child_cleanup, data);
if (data->cleanup_event == NULL) {
TALLOC_FREE(data);
static void delayed_init_logon_handler(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct packet_struct *p = (struct packet_struct *)private_data;
event_add_timed(nmbd_event_context(),
NULL,
when,
- "delayed_init_logon",
delayed_init_logon_handler,
p);
} else {
static void print_notify_event_send_messages(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
/* Remove this timed event handler. */
/* Add an event for 1 second's time to send this queue. */
notify_event = event_add_timed(smbd_event_context(), NULL,
timeval_current_ofs(1,0),
- "print_notify",
print_notify_event_send_messages, NULL);
}
static void disp_info_cache_idle_timeout_handler(struct event_context *ev_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
DISP_INFO *disp_info = (DISP_INFO *)private_data;
disp_info->cache_timeout_event = event_add_timed(
smbd_event_context(), NULL,
timeval_current_ofs(secs_fromnow, 0),
- "disp_info_cache_idle_timeout_handler",
disp_info_cache_idle_timeout_handler, (void *)disp_info);
}
static void brl_timeout_fn(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
SMB_ASSERT(brl_timeout == te);
}
if (!(brl_timeout = event_add_timed(smbd_event_context(), NULL,
- next_timeout, "brl_timeout",
+ next_timeout,
brl_timeout_fn, NULL))) {
return False;
}
static void update_write_time_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
files_struct *fsp = (files_struct *)private_data;
fsp->update_write_time_event =
event_add_timed(smbd_event_context(), NULL,
timeval_current_ofs(0, delay),
- "update_write_time_handler",
update_write_time_handler, fsp);
}
static void oplock_timeout_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
files_struct *fsp = (files_struct *)private_data;
fsp->oplock_timeout =
event_add_timed(smbd_event_context(), NULL,
timeval_current_ofs(OPLOCK_BREAK_TIMEOUT, 0),
- "oplock_timeout_handler",
oplock_timeout_handler, fsp);
if (fsp->oplock_timeout == NULL) {
void *private_data;
};
-static void idle_event_handler(struct event_context *ctx,
- struct timed_event *te,
- const struct timeval *now,
- void *private_data)
+static void smbd_idle_event_handler(struct event_context *ctx,
+ struct timed_event *te,
+ struct timeval now,
+ void *private_data)
{
struct idle_event *event =
talloc_get_type_abort(private_data, struct idle_event);
TALLOC_FREE(event->te);
- if (!event->handler(now, event->private_data)) {
+ DEBUG(10,("smbd_idle_event_handler: %s %p called\n",
+ event->name, event->te));
+
+ if (!event->handler(&now, event->private_data)) {
+ DEBUG(10,("smbd_idle_event_handler: %s %p stopped\n",
+ event->name, event->te));
/* Don't repeat, delete ourselves */
TALLOC_FREE(event);
return;
}
+ DEBUG(10,("smbd_idle_event_handler: %s %p rescheduled\n",
+ event->name, event->te));
+
event->te = event_add_timed(ctx, event,
- timeval_sum(now, &event->interval),
- event->name,
- idle_event_handler, event);
+ timeval_sum(&now, &event->interval),
+ smbd_idle_event_handler, event);
/* We can't do much but fail here. */
SMB_ASSERT(event->te != NULL);
result->te = event_add_timed(event_ctx, result,
timeval_sum(&now, &interval),
- result->name,
- idle_event_handler, result);
+ smbd_idle_event_handler, result);
if (result->te == NULL) {
DEBUG(0, ("event_add_timed failed\n"));
TALLOC_FREE(result);
return NULL;
}
+ DEBUG(10,("event_add_idle: %s %p\n", result->name, result->te));
return result;
}
static void evt_userdata_sleep_done(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *priv)
{
struct thread_reference *ref = talloc_get_type_abort(
}
te = event_add_timed(p->ev, ref, timeval_current_ofs(0, usecs),
- "evt_userdata_sleep", evt_userdata_sleep_done,
+ evt_userdata_sleep_done,
ref);
if (te == NULL) {
return ret;
}
-static void timeout_handler(struct event_context *event_ctx,
+static void smbcontrol_timeout(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
bool *timed_out = (bool *)private_data;
if (!(te = event_add_timed(messaging_event_context(msg_ctx), NULL,
timeval_current_ofs(timeout, 0),
- "smbcontrol_timeout",
- timeout_handler, (void *)&timed_out))) {
+ smbcontrol_timeout, (void *)&timed_out))) {
DEBUG(0, ("event_add_timed failed\n"));
return;
}
static void check_domain_online_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct winbindd_domain *domain =
/* Are we still in "startup" mode ? */
- if (domain->startup && (now->tv_sec > domain->startup_time + 30)) {
+ if (domain->startup && (now.tv_sec > domain->startup_time + 30)) {
/* No longer in "startup" mode. */
DEBUG(10,("check_domain_online_handler: domain %s no longer in 'startup' mode.\n",
domain->name ));
domain->check_online_event = event_add_timed(winbind_event_context(),
NULL,
timeval_current_ofs(domain->check_online_timeout,0),
- "check_domain_online_handler",
check_domain_online_handler,
domain);
domain->check_online_event = event_add_timed(winbind_event_context(),
NULL,
tev,
- "check_domain_online_handler",
check_domain_online_handler,
domain);
static struct WINBINDD_CCACHE_ENTRY *ccache_list;
static void krb5_ticket_gain_handler(struct event_context *,
struct timed_event *,
- const struct timeval *,
+ struct timeval,
void *);
/* The Krb5 ticket refresh handler should be scheduled
static void krb5_ticket_refresh_handler(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct WINBINDD_CCACHE_ENTRY *entry =
entry->event = event_add_timed(winbind_event_context(),
entry,
timeval_set(new_start, 0),
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
return;
entry->event = event_add_timed(winbind_event_context(),
entry,
timeval_set(new_start, 0),
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
return;
expire_time -= 10;
entry->event = event_add_timed(winbind_event_context(), entry,
timeval_set(expire_time, 0),
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
return;
}
entry->event = event_add_timed(winbind_event_context(), entry,
timeval_set(new_start, 0),
- "krb5_ticket_refresh_handler",
krb5_ticket_refresh_handler,
entry);
static void krb5_ticket_gain_handler(struct event_context *event_ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct WINBINDD_CCACHE_ENTRY *entry =
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_refresh_handler",
krb5_ticket_refresh_handler,
entry);
new_event = event_add_timed(winbind_event_context(),
cur,
t,
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
cur);
} else {
new_event = event_add_timed(winbind_event_context(),
cur,
t,
- "krb5_ticket_refresh_handler",
krb5_ticket_refresh_handler,
cur);
}
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
} else {
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_refresh_handler",
krb5_ticket_refresh_handler,
entry);
}
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_gain_handler",
krb5_ticket_gain_handler,
entry);
} else {
entry->event = event_add_timed(winbind_event_context(),
entry,
t,
- "krb5_ticket_refresh_handler",
krb5_ticket_refresh_handler,
entry);
}
static void async_request_timeout_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct winbindd_async_request *state =
state->reply_timeout_event = event_add_timed(winbind_event_context(),
NULL,
timeval_current_ofs(300,0),
- "async_request_timeout",
async_request_timeout_handler,
state);
if (!state->reply_timeout_event) {
static void account_lockout_policy_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct winbindd_child *child =
child->lockout_policy_event = event_add_timed(winbind_event_context(), NULL,
timeval_current_ofs(3600, 0),
- "account_lockout_policy_handler",
account_lockout_policy_handler,
child);
}
static void machine_password_change_handler(struct event_context *ctx,
struct timed_event *te,
- const struct timeval *now,
+ struct timeval now,
void *private_data)
{
struct winbindd_child *child =
child->machine_password_change_event = event_add_timed(winbind_event_context(), NULL,
next_change,
- "machine_password_change_handler",
machine_password_change_handler,
child);
}
child->lockout_policy_event = event_add_timed(
winbind_event_context(), NULL, timeval_zero(),
- "account_lockout_policy_handler",
account_lockout_policy_handler,
child);
}
&next_change)) {
child->machine_password_change_event = event_add_timed(
winbind_event_context(), NULL, next_change,
- "machine_password_change_handler",
machine_password_change_handler,
child);
}