NetworkManager r3682 - in trunk/vpn-daemons: openvpn openvpn/src vpnc vpnc/src
- From: tambeti svn gnome org
- To: svn-commits-list gnome org
- Subject: NetworkManager r3682 - in trunk/vpn-daemons: openvpn openvpn/src vpnc vpnc/src
- Date: Thu, 22 May 2008 14:32:44 +0000 (UTC)
Author: tambeti
Date: Thu May 22 14:32:44 2008
New Revision: 3682
URL: http://svn.gnome.org/viewvc/NetworkManager?rev=3682&view=rev
Log:
2008-05-22 Tambet Ingo <tambet gmail com>
* src/nm-vpnc-service.c (real_disconnect): If sending SIGTERM succeeds,
add a timeout to make sure it gets killed. If it fails, send SIGKILL
immediately.
* src/nm-openvpn-service.c (real_disconnect): If sending SIGTERM
succeeds, add a timeout to make sure it gets killed. If it fails,
send SIGKILL immediately.
Modified:
trunk/vpn-daemons/openvpn/ChangeLog
trunk/vpn-daemons/openvpn/src/nm-openvpn-service.c
trunk/vpn-daemons/vpnc/ChangeLog
trunk/vpn-daemons/vpnc/src/nm-vpnc-service.c
Modified: trunk/vpn-daemons/openvpn/src/nm-openvpn-service.c
==============================================================================
--- trunk/vpn-daemons/openvpn/src/nm-openvpn-service.c (original)
+++ trunk/vpn-daemons/openvpn/src/nm-openvpn-service.c Thu May 22 14:32:44 2008
@@ -710,13 +710,28 @@
}
static gboolean
-real_disconnect (NMVPNPlugin *plugin,
- GError **err)
+ensure_killed (gpointer data)
+{
+ int pid = GPOINTER_TO_INT (data);
+
+ if (kill (pid, 0) == 0)
+ kill (pid, SIGKILL);
+
+ return FALSE;
+}
+
+static gboolean
+real_disconnect (NMVPNPlugin *plugin,
+ GError **err)
{
NMOpenvpnPluginPrivate *priv = NM_OPENVPN_PLUGIN_GET_PRIVATE (plugin);
if (priv->pid) {
- kill (priv->pid, SIGTERM);
+ if (kill (priv->pid, SIGTERM) == 0)
+ g_timeout_add (2000, ensure_killed, GINT_TO_POINTER (priv->pid));
+ else
+ kill (priv->pid, SIGKILL);
+
nm_info ("Terminated openvpn daemon with PID %d.", priv->pid);
priv->pid = 0;
}
Modified: trunk/vpn-daemons/vpnc/src/nm-vpnc-service.c
==============================================================================
--- trunk/vpn-daemons/vpnc/src/nm-vpnc-service.c (original)
+++ trunk/vpn-daemons/vpnc/src/nm-vpnc-service.c Thu May 22 14:32:44 2008
@@ -352,13 +352,28 @@
}
static gboolean
+ensure_killed (gpointer data)
+{
+ int pid = GPOINTER_TO_INT (data);
+
+ if (kill (pid, 0) == 0)
+ kill (pid, SIGKILL);
+
+ return FALSE;
+}
+
+static gboolean
real_disconnect (NMVPNPlugin *plugin,
GError **err)
{
NMVPNCPluginPrivate *priv = NM_VPNC_PLUGIN_GET_PRIVATE (plugin);
if (priv->pid) {
- kill (priv->pid, SIGTERM);
+ if (kill (priv->pid, SIGTERM) == 0)
+ g_timeout_add (2000, ensure_killed, GINT_TO_POINTER (priv->pid));
+ else
+ kill (priv->pid, SIGKILL);
+
nm_info ("Terminated vpnc daemon with PID %d.", priv->pid);
priv->pid = 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]