Check sigaction for error.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1427 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
@@ -389,7 +389,7 @@ static NMData *nm_data_new (gboolean enable_test_devices)
|
|||||||
if (pipe (data->sigterm_pipe) < 0)
|
if (pipe (data->sigterm_pipe) < 0)
|
||||||
{
|
{
|
||||||
nm_error ("Couldn't create pipe: %s", g_strerror (errno));
|
nm_error ("Couldn't create pipe: %s", g_strerror (errno));
|
||||||
exit (EXIT_FAILURE);
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->sigterm_iochannel = g_io_channel_unix_new (data->sigterm_pipe[0]);
|
data->sigterm_iochannel = g_io_channel_unix_new (data->sigterm_pipe[0]);
|
||||||
@@ -398,12 +398,16 @@ static NMData *nm_data_new (gboolean enable_test_devices)
|
|||||||
g_source_attach (iosource, data->main_context);
|
g_source_attach (iosource, data->main_context);
|
||||||
g_source_unref (iosource);
|
g_source_unref (iosource);
|
||||||
|
|
||||||
|
action.sa_sigaction = NULL;
|
||||||
action.sa_handler = sigterm_handler;
|
action.sa_handler = sigterm_handler;
|
||||||
sigemptyset (&block_mask);
|
sigemptyset (&block_mask);
|
||||||
action.sa_mask = block_mask;
|
action.sa_mask = block_mask;
|
||||||
action.sa_flags = 0;
|
action.sa_flags = 0;
|
||||||
sigaction (SIGINT, &action, NULL);
|
if (sigaction (SIGINT, &action, NULL) || sigaction (SIGTERM, &action, NULL))
|
||||||
sigaction (SIGTERM, &action, NULL);
|
{
|
||||||
|
nm_error ("Failed to install signal handlers: %s", g_strerror (errno));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the device list mutex to protect additions/deletions to it. */
|
/* Initialize the device list mutex to protect additions/deletions to it. */
|
||||||
data->dev_list_mutex = g_mutex_new ();
|
data->dev_list_mutex = g_mutex_new ();
|
||||||
@@ -491,10 +495,10 @@ static void sigterm_handler (int signum)
|
|||||||
{
|
{
|
||||||
int ignore;
|
int ignore;
|
||||||
|
|
||||||
/* FIXME: This line is probably not a great
|
/* FIXME: This is probably not a great thing to have in a signal handler,
|
||||||
* thing to have in a signal handler
|
* but you only live once.
|
||||||
*/
|
*/
|
||||||
nm_info ("Caught SIGINT/SIGTERM");
|
nm_info ("Caught %s", signum == SIGINT ? "SIGINT" : "SIGTERM");
|
||||||
|
|
||||||
ignore = write (nm_data->sigterm_pipe[1], "X", 1);
|
ignore = write (nm_data->sigterm_pipe[1], "X", 1);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user