2006-12-19 Dan Williams <dcbw@redhat.com>

* src/NetworkManagerPolicy.c
		- (nm_policy_device_change_check, nm_policy_schedule_device_change_check):
			better locking of the device change check handler ID.  Incorrect
			locking was causing lost device change requests


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2191 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2006-12-19 19:04:04 +00:00
parent 6b089976ad
commit 3834255f8c
2 changed files with 16 additions and 7 deletions

View File

@@ -1,3 +1,10 @@
2006-12-19 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerPolicy.c
- (nm_policy_device_change_check, nm_policy_schedule_device_change_check):
better locking of the device change check handler ID. Incorrect
locking was causing lost device change requests
2006-12-18 Dan Williams <dcbw@redhat.com> 2006-12-18 Dan Williams <dcbw@redhat.com>
* libnm-util/dbus-dict-helpers.c * libnm-util/dbus-dict-helpers.c

View File

@@ -41,6 +41,9 @@
#include "nm-dbus-manager.h" #include "nm-dbus-manager.h"
static GStaticMutex dev_change_mutex = G_STATIC_MUTEX_INIT;
/* /*
* nm_policy_activation_finish * nm_policy_activation_finish
* *
@@ -290,7 +293,9 @@ nm_policy_device_change_check (NMData *data)
g_return_val_if_fail (data != NULL, FALSE); g_return_val_if_fail (data != NULL, FALSE);
g_static_mutex_lock (&dev_change_mutex);
data->dev_change_check_idle_id = 0; data->dev_change_check_idle_id = 0;
g_static_mutex_unlock (&dev_change_mutex);
old_dev = nm_get_active_device (data); old_dev = nm_get_active_device (data);
@@ -450,22 +455,19 @@ out:
*/ */
void nm_policy_schedule_device_change_check (NMData *data) void nm_policy_schedule_device_change_check (NMData *data)
{ {
static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
g_return_if_fail (data != NULL); g_return_if_fail (data != NULL);
g_static_mutex_lock (&mutex); g_static_mutex_lock (&dev_change_mutex);
if (data->dev_change_check_idle_id == 0) if (data->dev_change_check_idle_id == 0) {
{ GSource * source = g_idle_source_new ();
GSource * source = g_idle_source_new ();
g_source_set_callback (source, (GSourceFunc) nm_policy_device_change_check, data, NULL); g_source_set_callback (source, (GSourceFunc) nm_policy_device_change_check, data, NULL);
data->dev_change_check_idle_id = g_source_attach (source, data->main_context); data->dev_change_check_idle_id = g_source_attach (source, data->main_context);
g_source_unref (source); g_source_unref (source);
} }
g_static_mutex_unlock (&mutex); g_static_mutex_unlock (&dev_change_mutex);
} }