From: Lennart Poettering Date: Fri, 11 Mar 2011 01:58:39 +0000 (+0100) Subject: machine-id: fall back to reading /etc/machine-id if D-Bus machine ID is not available X-Git-Tag: dbus-1.4.10~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66e52541d5bdd4927a5c702963749760643313f4;p=thirdparty%2Fdbus.git 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. [plus a whitespace fix -smcv] Reviewed-by: Simon McVittie Reviewed-by: Colin Walters Bug: https://bugs.freedesktop.org/show_bug.cgi?id=35228 --- diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index e9ea25356..bb066ce99 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"