From 1fd58d6db4800904350009ad097ba3d7cce3ec6d Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 1 Jul 2011 16:28:19 +0200 Subject: [PATCH] win32 fix: Keep server autolaunch mutex settings according to client detection algorithmus. --- dbus/dbus-sysdeps-win.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index 19f6fa0..7b03c3d 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -2639,6 +2639,10 @@ _dbus_daemon_is_session_bus_address_published (const char *scope) // see http://msdn.microsoft.com/en-us/library/ms684315%28VS.85%29.aspx hDBusDaemonMutex = CreateMutexA( NULL, FALSE, _dbus_string_get_const_data(&mutex_name) ); + /* The client uses mutex ownership to detect a running server, so the server should do so too. + Fortunally the client deletes the mutex in the lock protected area, so checking presence + will work too. */ + _dbus_global_unlock( lock ); _dbus_string_free( &mutex_name ); @@ -2684,6 +2688,14 @@ _dbus_daemon_publish_session_bus_address (const char* address, const char *scope } _dbus_string_free( &mutex_name ); + // acquire the mutex + if (WaitForSingleObject( hDBusDaemonMutex, 10 ) != WAIT_OBJECT_0) + { + _dbus_global_unlock( lock ); + CloseHandle( hDBusDaemonMutex ); + return FALSE; + } + if (!_dbus_get_shm_name(&shm_name,scope)) { _dbus_string_free( &shm_name ); -- 2.7.4