mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
s3:smbd/server: add parent specific SIGTERM and SIGHUP handlers
metze
This commit is contained in:
parent
1738a61b84
commit
2bab5073ba
@ -834,6 +834,34 @@ static bool init_structs(void )
|
|||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void smbd_parent_sig_term_handler(struct tevent_context *ev,
|
||||||
|
struct tevent_signal *se,
|
||||||
|
int signum,
|
||||||
|
int count,
|
||||||
|
void *siginfo,
|
||||||
|
void *private_data)
|
||||||
|
{
|
||||||
|
exit_server_cleanly("termination signal");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void smbd_parent_sig_hup_handler(struct tevent_context *ev,
|
||||||
|
struct tevent_signal *se,
|
||||||
|
int signum,
|
||||||
|
int count,
|
||||||
|
void *siginfo,
|
||||||
|
void *private_data)
|
||||||
|
{
|
||||||
|
struct smbd_parent_context *parent =
|
||||||
|
talloc_get_type_abort(private_data,
|
||||||
|
struct smbd_parent_context);
|
||||||
|
|
||||||
|
change_to_root_user();
|
||||||
|
DEBUG(1,("parent: Reloading services after SIGHUP\n"));
|
||||||
|
reload_services(parent->msg_ctx, -1, false);
|
||||||
|
|
||||||
|
printing_subsystem_update(parent->ev_ctx, parent->msg_ctx, true);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
main program.
|
main program.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -884,6 +912,7 @@ extern void build_options(bool screen);
|
|||||||
uint64_t unique_id;
|
uint64_t unique_id;
|
||||||
struct tevent_context *ev_ctx;
|
struct tevent_context *ev_ctx;
|
||||||
struct messaging_context *msg_ctx;
|
struct messaging_context *msg_ctx;
|
||||||
|
struct tevent_signal *se;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do this before any other talloc operation
|
* Do this before any other talloc operation
|
||||||
@ -1134,9 +1163,22 @@ extern void build_options(bool screen);
|
|||||||
parent->ev_ctx = ev_ctx;
|
parent->ev_ctx = ev_ctx;
|
||||||
parent->msg_ctx = msg_ctx;
|
parent->msg_ctx = msg_ctx;
|
||||||
|
|
||||||
smbd_setup_sig_term_handler();
|
se = tevent_add_signal(parent->ev_ctx,
|
||||||
smbd_setup_sig_hup_handler(ev_ctx,
|
parent,
|
||||||
msg_ctx);
|
SIGTERM, 0,
|
||||||
|
smbd_parent_sig_term_handler,
|
||||||
|
parent);
|
||||||
|
if (!se) {
|
||||||
|
exit_server("failed to setup SIGTERM handler");
|
||||||
|
}
|
||||||
|
se = tevent_add_signal(parent->ev_ctx,
|
||||||
|
parent,
|
||||||
|
SIGHUP, 0,
|
||||||
|
smbd_parent_sig_hup_handler,
|
||||||
|
parent);
|
||||||
|
if (!se) {
|
||||||
|
exit_server("failed to setup SIGHUP handler");
|
||||||
|
}
|
||||||
|
|
||||||
/* Setup all the TDB's - including CLEAR_IF_FIRST tdb's. */
|
/* Setup all the TDB's - including CLEAR_IF_FIRST tdb's. */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user