// 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 );
}
_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 );