summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/devices/team/nm-device-team.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c
index 07ed092cba..ab195c886a 100644
--- a/src/devices/team/nm-device-team.c
+++ b/src/devices/team/nm-device-team.c
@@ -480,6 +480,13 @@ teamd_process_watch_cb (GPid pid, gint status, gpointer user_data)
}
}
+static void
+teamd_child_setup (gpointer user_data)
+{
+ nm_utils_setpgid (NULL);
+ signal (SIGPIPE, SIG_IGN);
+}
+
static gboolean
teamd_kill (NMDeviceTeam *self, const char *teamd_binary, GError **error)
{
@@ -502,7 +509,7 @@ teamd_kill (NMDeviceTeam *self, const char *teamd_binary, GError **error)
g_ptr_array_add (argv, NULL);
_LOGD (LOGD_TEAM, "running: %s", (tmp_str = g_strjoinv (" ", (gchar **) argv->pdata)));
- return g_spawn_sync ("/", (char **) argv->pdata, NULL, 0, NULL, NULL, NULL, NULL, NULL, error);
+ return g_spawn_sync ("/", (char **) argv->pdata, NULL, 0, teamd_child_setup, NULL, NULL, NULL, NULL, error);
}
static gboolean
@@ -553,7 +560,7 @@ teamd_start (NMDevice *device, NMSettingTeam *s_team)
_LOGD (LOGD_TEAM, "running: %s", (tmp_str = g_strjoinv (" ", (gchar **) argv->pdata)));
if (!g_spawn_async ("/", (char **) argv->pdata, NULL, G_SPAWN_DO_NOT_REAP_CHILD,
- nm_utils_setpgid, NULL, &priv->teamd_pid, &error)) {
+ teamd_child_setup, NULL, &priv->teamd_pid, &error)) {
_LOGW (LOGD_TEAM, "Activation: (team) failed to start teamd: %s", error->message);
teamd_cleanup (device, TRUE);
return FALSE;