commit c3924c7b1666a41204475c863deee428dd537a6d
Author: Mohamed Akram <mohd.akram@outlook.com>
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;
 
