X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fdbus.c;h=d7b80ba01d17c9bbe8d31ad368b179784c349f11;hp=66076f021cb1c98fdf77551faed7216f57e04d09;hb=2633eb8317623138f585957fcf8337a99fb1528f;hpb=af2d49f70bcff20efaf2d69aecaf4b3e898ff1fa diff --git a/src/dbus.c b/src/dbus.c index 66076f021..d7b80ba01 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -982,7 +982,7 @@ fail: return r; } -int bus_init(Manager *m) { +int bus_init(Manager *m, bool try_bus_connect) { int r; if (set_ensure_allocated(&m->bus_connections, trivial_hash_func, trivial_compare_func) < 0 || @@ -998,14 +998,18 @@ int bus_init(Manager *m) { } if (m->subscribed_data_slot < 0) - if (!dbus_pending_call_allocate_data_slot(&m->subscribed_data_slot)) { + if (!dbus_connection_allocate_data_slot(&m->subscribed_data_slot)) { log_error("Not enough memory"); return -ENOMEM; } - if ((r = bus_init_system(m)) < 0 || - (r = bus_init_api(m)) < 0 || - (r = bus_init_private(m)) < 0) + if (try_bus_connect) { + if ((r = bus_init_system(m)) < 0 || + (r = bus_init_api(m)) < 0) + return r; + } + + if ((r = bus_init_private(m)) < 0) return r; return 0; @@ -1110,7 +1114,7 @@ void bus_done(Manager *m) { dbus_pending_call_free_data_slot(&m->name_data_slot); if (m->subscribed_data_slot >= 0) - dbus_pending_call_free_data_slot(&m->subscribed_data_slot); + dbus_connection_free_data_slot(&m->subscribed_data_slot); } static void query_pid_pending_cb(DBusPendingCall *pending, void *userdata) {