From e476f3a6e5545b4e93fc02cdbf7ea6529a88f609 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sun, 10 Feb 2008 17:23:23 +0000 Subject: [PATCH] 2008-02-10 Dan Williams * src/nm-device-802-3-ethernet.c - (real_bring_up): save the supplicant interface state signal id - (real_bring_down): disconnect from the supplicant interface state signal git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3304 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 7 +++++++ src/nm-device-802-3-ethernet.c | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4619f310d..f46bb54359 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-02-10 Dan Williams + + * src/nm-device-802-3-ethernet.c + - (real_bring_up): save the supplicant interface state signal id + - (real_bring_down): disconnect from the supplicant interface state + signal + 2008-02-07 Dan Williams * initscript/RedHat/NetworkManager.in diff --git a/src/nm-device-802-3-ethernet.c b/src/nm-device-802-3-ethernet.c index 4c02cdbf3e..73097f19e5 100644 --- a/src/nm-device-802-3-ethernet.c +++ b/src/nm-device-802-3-ethernet.c @@ -56,7 +56,8 @@ typedef struct { gulong link_connected_id; gulong link_disconnected_id; - NMSupplicantInterface * sup_iface; + NMSupplicantInterface *sup_iface; + gulong iface_state_id; } NMDevice8023EthernetPrivate; enum { @@ -216,6 +217,7 @@ real_bring_up (NMDevice *dev) NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (dev); NMSupplicantManager *sup_mgr; const char *iface; + gulong id; iface = nm_device_get_iface (dev); sup_mgr = nm_supplicant_manager_get (); @@ -226,10 +228,11 @@ real_bring_up (NMDevice *dev) return FALSE; } - g_signal_connect (priv->sup_iface, - "state", - G_CALLBACK (supplicant_iface_state_cb), - NM_DEVICE_802_3_ETHERNET (dev)); + id = g_signal_connect (priv->sup_iface, + "state", + G_CALLBACK (supplicant_iface_state_cb), + NM_DEVICE_802_3_ETHERNET (dev)); + priv->iface_state_id = id; g_object_unref (sup_mgr); @@ -245,6 +248,11 @@ real_bring_down (NMDevice *dev) sup_mgr = nm_supplicant_manager_get (); if (priv->sup_iface) { + if (priv->iface_state_id > 0) { + g_signal_handler_disconnect (priv->sup_iface, priv->iface_state_id); + priv->iface_state_id = 0; + } + nm_supplicant_manager_release_iface (sup_mgr, priv->sup_iface); priv->sup_iface = NULL; }