Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37699113
en ru br
Репозитории ALT
S:1.44.0-alt2
5.1: 0.7.3-alt2.git20101007.M51.1
4.1: 0.7.1-alt5.M41.5
www.altlinux.org/Changes

Группа :: Система/Настройка/Сеть
Пакет: 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);
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin