mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 11:19:16 +02:00
dbus: register object manager object before requesting dbus name
Working on NetworkManager 1.12.4 and sometimes (rarely), when creating a NM client object before NetworkManager service start, this object will never be running. In that case, we can see the following log: "[GLIB-GLib-GIO WARN] Error calling GetManagedObjects() when name owner :1.5 for name org.freedesktop.NetworkManager came back: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.freedesktop.DBus.ObjectManager' on object at path /org/freedesktop". Object Manager object shall be registered before requesting dbus name to be sure that 'org.freedesktop.Dbus.ObjectManager' interface is present when name owner change is received by libnm. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/51
This commit is contained in:
parent
15a2a291ea
commit
dc0cdbb57e
1 changed files with 14 additions and 12 deletions
|
|
@ -1538,6 +1538,18 @@ nm_dbus_manager_acquire_bus (NMDBusManager *self)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registration_id = g_dbus_connection_register_object (connection,
|
||||||
|
OBJECT_MANAGER_SERVER_BASE_PATH,
|
||||||
|
NM_UNCONST_PTR (GDBusInterfaceInfo, &interface_info_objmgr),
|
||||||
|
&dbus_vtable_objmgr,
|
||||||
|
self,
|
||||||
|
NULL,
|
||||||
|
&error);
|
||||||
|
if (!registration_id) {
|
||||||
|
_LOGE ("failure to register object manager: %s", error->message);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
ret = _nm_dbus_proxy_call_sync (proxy,
|
ret = _nm_dbus_proxy_call_sync (proxy,
|
||||||
"RequestName",
|
"RequestName",
|
||||||
g_variant_new ("(su)",
|
g_variant_new ("(su)",
|
||||||
|
|
@ -1550,6 +1562,7 @@ nm_dbus_manager_acquire_bus (NMDBusManager *self)
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
_LOGE ("fatal failure to acquire D-Bus service \"%s"": %s",
|
_LOGE ("fatal failure to acquire D-Bus service \"%s"": %s",
|
||||||
NM_DBUS_SERVICE, error->message);
|
NM_DBUS_SERVICE, error->message);
|
||||||
|
g_dbus_connection_unregister_object(connection, registration_id);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1557,18 +1570,7 @@ nm_dbus_manager_acquire_bus (NMDBusManager *self)
|
||||||
if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
|
if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
|
||||||
_LOGE ("fatal failure to acquire D-Bus service \"%s\" (%u). Service already taken",
|
_LOGE ("fatal failure to acquire D-Bus service \"%s\" (%u). Service already taken",
|
||||||
NM_DBUS_SERVICE, (guint) result);
|
NM_DBUS_SERVICE, (guint) result);
|
||||||
return FALSE;
|
g_dbus_connection_unregister_object(connection, registration_id);
|
||||||
}
|
|
||||||
|
|
||||||
registration_id = g_dbus_connection_register_object (connection,
|
|
||||||
OBJECT_MANAGER_SERVER_BASE_PATH,
|
|
||||||
NM_UNCONST_PTR (GDBusInterfaceInfo, &interface_info_objmgr),
|
|
||||||
&dbus_vtable_objmgr,
|
|
||||||
self,
|
|
||||||
NULL,
|
|
||||||
&error);
|
|
||||||
if (!registration_id) {
|
|
||||||
_LOGE ("failure to register object manager: %s", error->message);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue