From: Daniel Wagner <[email protected]>

Ask D-Bus server which PID a session client has.
---
 src/session.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/session.c b/src/session.c
index d103b37..a60dc98 100644
--- a/src/session.c
+++ b/src/session.c
@@ -103,6 +103,7 @@ struct session_info {
 };
 
 struct connman_session {
+       pid_t pid;
        char *owner;
        char *session_path;
        char *notify_path;
@@ -1566,6 +1567,26 @@ static const GDBusMethodTable session_methods[] = {
        { },
 };
 
+static void session_pid(const char *owner, pid_t pid, void *user_data)
+{
+       char *session_path = user_data;
+       struct connman_session *session;
+
+       DBG("session %s pid %d", session_path, pid);
+
+       session = g_hash_table_lookup(session_hash, session_path);
+       if (session == NULL)
+               goto out;
+
+       if (g_strcmp0(session->owner, owner) != 0)
+               goto out;
+
+       session->pid = pid;
+
+out:
+       g_free(session_path);
+}
+
 int __connman_session_create(DBusMessage *msg)
 {
        const char *owner, *notify_path;
@@ -1704,6 +1725,8 @@ int __connman_session_create(DBusMessage *msg)
        info = session->info;
        info_last = session->info_last;
 
+       g_dbus_get_pid(connection, owner, g_strdup(session_path), session_pid);
+
        session->owner = g_strdup(owner);
        session->session_path = session_path;
        session->notify_path = g_strdup(notify_path);
-- 
1.7.12.rc1.16.g05a20c8

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to