From 044f6e956d6f494fe2de0d26203c9ce05d0814a2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Mar 2011 02:58:39 +0100 Subject: [PATCH 2/4] machine-id: fall back to reading /etc/machine-id if D-Bus machine ID is not available Newer systemd-based systems support a global machine ID with the same metrics as the D-Bus machine ID, but more powerful semantics (for example on ro media) in /etc/machine-id. If the D-Bus machine ID cannot be read, fall back to the systemd machine ID. This is a first step towards allowing D-Bus to be started up during early boot where /var is not available. --- dbus/dbus-sysdeps-unix.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index e9ea253..5461a08 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -3349,8 +3349,19 @@ _dbus_read_local_machine_uuid (DBusGUID *machine_id, DBusError *error) { DBusString filename; + dbus_bool_t b; + _dbus_string_init_const (&filename, DBUS_MACHINE_UUID_FILE); - return _dbus_read_uuid_file (&filename, machine_id, create_if_not_found, error); + + b = _dbus_read_uuid_file (&filename, machine_id, create_if_not_found, error); + if (b) + return TRUE; + + dbus_error_free(error); + + /* Fallback to the system machine ID */ + _dbus_string_init_const (&filename, "/etc/machine-id"); + return _dbus_read_uuid_file (&filename, machine_id, FALSE, error); } #define DBUS_UNIX_STANDARD_SESSION_SERVICEDIR "/dbus-1/services" -- 1.7.4.1