Get the sender PID from gDBus
Amira S <[email protected]>
| Newsgroups | gmane.comp.freedesktop.dbus |
|---|---|
| Message-ID | <CADTJ9tP+Qy7q45__xgUkb6FnyiBw3RTDYRYTSgFO8uaqkBkbew@mail.gmail.com> |
Hi everyone, I need to get the client/sender PID using my gDBus service for a SYSTEM message bus on Linux. I create the message bus by calling g_bus_own_name with G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, and then I see that the Acquire handlers are called with a GDBusConnection. According to the documentation, it is possible to obtain a GCredentials from the connection by calling g_dbus_connection_get_peer_credentials <https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/gio/GDBusConnection.html#g-dbus-connection-get-peer-credentials>, (and from there I can get a unix ucred that has the pid), but I always get a NULL credentials. The documentation for this function says: "Gets the credentials of the authenticated peer. This will always return NULL <https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/glib/glib/glib-Standard-Macros.html#NULL:CAPS> unless *connection* acted as a server (e.g. G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER <https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/gio/GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS> was passed) when set up and the client passed credentials as part of the authentication process." How can I set the connection type, if I use the generated code dbus created? I also tried getting the PID by calling programmatically the following command: dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID ‘string:com.microsoft.mscrypt’ But I always receive the server's PID, and not the client's. Any idea if/how it is possible to get the peer's PID connecting to a SYSTEM bus? Thanks, Amira.