Репозитории ALT
S: | 1.44.0-alt2 |
5.1: | 0.7.3-alt2.git20101007.M51.1 |
4.1: | 0.7.1-alt5.M41.5 |
Группа :: Система/Настройка/Сеть
Пакет: NetworkManager
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: alt-wait-child.patch
Скачать
Скачать
diff --git a/NetworkManager/src/nm-device.c b/NetworkManager/src/nm-device.c
index 9b20649..550bbff 100644
--- a/NetworkManager/src/nm-device.c
+++ b/NetworkManager/src/nm-device.c
@@ -559,7 +559,10 @@ aipd_cleanup (NMDevice *self)
if (priv->aipd_pid > 0) {
kill (priv->aipd_pid, SIGKILL);
/* Ensure child is reaped */
- waitpid (priv->aipd_pid, NULL, WNOHANG);
+ nm_debug ("waiting for aipd pid %d to exit", priv->aipd_pid);
+ waitpid (priv->aipd_pid, NULL, 0);
+ nm_debug ("aipd pid %d cleaned up", priv->aipd_pid);
+
priv->aipd_pid = -1;
}
diff --git a/NetworkManager/src/ppp-manager/nm-ppp-manager.c b/NetworkManager/src/ppp-manager/nm-ppp-manager.c
index 3eae667..88e7ade 100644
--- a/NetworkManager/src/ppp-manager/nm-ppp-manager.c
+++ b/NetworkManager/src/ppp-manager/nm-ppp-manager.c
@@ -675,7 +675,12 @@ ppp_watch_cb (GPid pid, gint status, gpointer user_data)
g_warning ("ppp died from an unknown cause");
/* Reap child if needed. */
- waitpid (pid, NULL, WNOHANG);
+ if(priv->pid > 0)
+ {
+ nm_debug ("waiting for ppp pid %d to exit", priv->pid);
+ waitpid (priv->pid, NULL, 0);
+ nm_debug ("ppp pid %d cleaned up", priv->pid);
+ }
priv->pid = 0;
@@ -946,7 +951,12 @@ ensure_killed (gpointer data)
kill (pid, SIGKILL);
/* ensure the child is reaped */
- waitpid (pid, NULL, WNOHANG);
+ if(pid > 0)
+ {
+ nm_debug ("waiting for ppp pid %d to exit", pid);
+ waitpid (pid, NULL, 0);
+ nm_debug ("ppp pid %d cleaned up", pid);
+ }
return FALSE;
}
@@ -988,7 +998,9 @@ nm_ppp_manager_stop (NMPPPManager *manager)
else {
kill (priv->pid, SIGKILL);
/* ensure the child is reaped */
- waitpid (priv->pid, NULL, WNOHANG);
+ nm_debug ("waiting for ppp pid %d to exit", priv->pid);
+ waitpid (priv->pid, NULL, 0);
+ nm_debug ("ppp pid %d cleaned up", priv->pid);
}
priv->pid = 0;
diff --git a/NetworkManager/src/vpn-manager/nm-vpn-service.c b/NetworkManager/src/vpn-manager/nm-vpn-service.c
index 7fbe15f..8a0f9f8 100644
--- a/NetworkManager/src/vpn-manager/nm-vpn-service.c
+++ b/NetworkManager/src/vpn-manager/nm-vpn-service.c
@@ -208,7 +208,13 @@ vpn_service_watch_cb (GPid pid, gint status, gpointer user_data)
nm_vpn_service_get_name (service));
/* Reap child if needed. */
- waitpid (pid, NULL, WNOHANG);
+ if(priv->pid > 0)
+ {
+ nm_debug ("waiting for vpn service pid %d to exit", priv->pid);
+ waitpid (priv->pid, NULL, 0);
+ nm_debug ("vpn service pid %d cleaned up", priv->pid);
+ }
+
priv->pid = 0;
nm_vpn_service_connections_stop (service, TRUE, NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED);