commit c3924c7b1666a41204475c863deee428dd537a6d Author: Mohamed Akram Date: Sun Jun 2 07:00:41 2024 +0400 sysdeps-unix: Fix using system bus on macOS Avoid failing during initialization if the launchd socket is not available. This will allow a daemon to use the system bus regardless of the status of the session bus. Fixes #510 See merge request dbus/dbus!461 diff --git dbus/dbus-sysdeps-unix.c dbus/dbus-sysdeps-unix.c index eec9b20c..d5ad14b8 100644 --- dbus/dbus-sysdeps-unix.c +++ dbus/dbus-sysdeps-unix.c @@ -4387,6 +4387,9 @@ _dbus_get_autolaunch_address (const char *scope, #else dbus_set_error_const (error, DBUS_ERROR_NOT_SUPPORTED, "Using X11 for dbus-daemon autolaunch was disabled at compile time, " +#ifdef DBUS_ENABLE_LAUNCHD + "verify that org.freedesktop.dbus-session.plist is loaded or " +#endif "set your DBUS_SESSION_BUS_ADDRESS instead"); return FALSE; #endif @@ -4528,16 +4531,18 @@ _dbus_lookup_launchd_socket (DBusString *socket_path, #ifdef DBUS_ENABLE_LAUNCHD static dbus_bool_t -_dbus_lookup_session_address_launchd (DBusString *address, DBusError *error) +_dbus_lookup_session_address_launchd (dbus_bool_t *supported, + DBusString *address, + DBusError *error) { dbus_bool_t valid_socket; DBusString socket_path; if (_dbus_check_setuid ()) { - dbus_set_error_const (error, DBUS_ERROR_NOT_SUPPORTED, - "Unable to find launchd socket when setuid"); - return FALSE; + _dbus_verbose ("Unable to find launchd socket when setuid"); + *supported = FALSE; + return TRUE; /* Cannot use it, but not an error */ } if (!_dbus_string_init (&socket_path)) @@ -4556,11 +4561,10 @@ _dbus_lookup_session_address_launchd (DBusString *address, DBusError *error) if (!valid_socket) { - dbus_set_error(error, "no socket path", - "launchd did not provide a socket path, " - "verify that org.freedesktop.dbus-session.plist is loaded!"); + _dbus_verbose ("launchd did not provide a socket path"); _dbus_string_free(&socket_path); - return FALSE; + *supported = FALSE; + return TRUE; /* Cannot use it, but not an error */ } if (!_dbus_string_append (address, "unix:path=")) { @@ -4678,7 +4682,7 @@ _dbus_lookup_session_address (dbus_bool_t *supported, { #ifdef DBUS_ENABLE_LAUNCHD *supported = TRUE; - return _dbus_lookup_session_address_launchd (address, error); + return _dbus_lookup_session_address_launchd (supported, address, error); #else *supported = FALSE;