Handle a SIGTERM in band.
**************************************************************************** */
-static void terminate(void)
+static void terminate(struct messaging_context *msg)
{
DEBUG(0,("Got SIGTERM: going down...\n"));
kill_async_dns_child();
gencache_stabilize();
- serverid_deregister(procid_self());
+ serverid_deregister(messaging_server_id(msg));
pidfile_unlink();
void *siginfo,
void *private_data)
{
- terminate();
+ struct messaging_context *msg = talloc_get_type_abort(
+ private_data, struct messaging_context);
+
+ terminate(msg);
}
-static bool nmbd_setup_sig_term_handler(void)
+static bool nmbd_setup_sig_term_handler(struct messaging_context *msg)
{
struct tevent_signal *se;
nmbd_event_context(),
SIGTERM, 0,
nmbd_sig_term_handler,
- NULL);
+ msg);
if (!se) {
DEBUG(0,("failed to setup SIGTERM handler"));
return false;
void *siginfo,
void *private_data)
{
+ struct messaging_context *msg = talloc_get_type_abort(
+ private_data, struct messaging_context);
+
DEBUG(0,("Got SIGHUP dumping debug info.\n"));
- msg_reload_nmbd_services(nmbd_messaging_context(),
- NULL, MSG_SMB_CONF_UPDATED,
- procid_self(), NULL);
+ msg_reload_nmbd_services(msg, NULL, MSG_SMB_CONF_UPDATED,
+ messaging_server_id(msg), NULL);
}
-static bool nmbd_setup_sig_hup_handler(void)
+static bool nmbd_setup_sig_hup_handler(struct messaging_context *msg)
{
struct tevent_signal *se;
nmbd_event_context(),
SIGHUP, 0,
nmbd_sig_hup_handler,
- NULL);
+ msg);
if (!se) {
DEBUG(0,("failed to setup SIGHUP handler"));
return false;
struct server_id server_id,
DATA_BLOB *data)
{
- terminate();
+ terminate(msg);
}
/**************************************************************************** **
The main select loop.
**************************************************************************** */
-static void process(void)
+static void process(struct messaging_context *msg)
{
bool run_election;
* (nmbd_packets.c)
*/
- if (listen_for_packets(nmbd_messaging_context(),
- run_election)) {
+ if (listen_for_packets(msg, run_election)) {
TALLOC_FREE(frame);
return;
}
exit(1);
}
- if (!nmbd_setup_sig_term_handler())
+ if (!nmbd_setup_sig_term_handler(nmbd_messaging_context()))
exit(1);
- if (!nmbd_setup_sig_hup_handler())
+ if (!nmbd_setup_sig_hup_handler(nmbd_messaging_context()))
exit(1);
/* get broadcast messages */
}
TALLOC_FREE(frame);
- process();
+ process(nmbd_messaging_context());
kill_async_dns_child();
return(0);