summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-05-09 19:45:15 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-06-03 13:31:21 +0200
commit40074db97ed4552cf09b1b6d71c19f53d010f80b (patch)
treee929e512c138c55965acdff2509a8130736f6f55
parent18cea3a5324d4cd56e62e3df7422fb6d14ad293b (diff)
downloadsssd-40074db97ed4552cf09b1b6d71c19f53d010f80b.tar.gz
sssd-40074db97ed4552cf09b1b6d71c19f53d010f80b.tar.xz
sssd-40074db97ed4552cf09b1b6d71c19f53d010f80b.zip
SBUS: Add SBUS_CONN_TYPE_SYSBUS
We need to retrieve caller IDs for each call from the system bus. This commit adds a new SBUS connection type that identifies system bus connection. The connection is used in the IFP provider. Reviewed-by: Pavel Březina <pbrezina@redhat.com> Reviewed-by: Stef Walter <stefw@redhat.com> (cherry picked from commit b81ad4a7c59cade13d52216f805d904392627136)
-rw-r--r--src/responder/ifp/ifpsrv.c2
-rw-r--r--src/sbus/sssd_dbus.h3
-rw-r--r--src/sbus/sssd_dbus_connection.c6
3 files changed, 7 insertions, 4 deletions
diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
index e76f3bdb0..2f98cf838 100644
--- a/src/responder/ifp/ifpsrv.c
+++ b/src/responder/ifp/ifpsrv.c
@@ -150,7 +150,7 @@ sysbus_init(TALLOC_CTX *mem_ctx,
/* Integrate with tevent loop */
ret = sbus_init_connection(system_bus, ev, conn,
- SBUS_CONN_TYPE_SHARED,
+ SBUS_CONN_TYPE_SYSBUS,
&system_bus->conn);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE,
diff --git a/src/sbus/sssd_dbus.h b/src/sbus/sssd_dbus.h
index 0fd499cbe..8ba108ee3 100644
--- a/src/sbus/sssd_dbus.h
+++ b/src/sbus/sssd_dbus.h
@@ -50,7 +50,8 @@ typedef int (*sbus_server_conn_init_fn)(struct sbus_connection *, void *);
enum {
SBUS_CONN_TYPE_PRIVATE = 1,
- SBUS_CONN_TYPE_SHARED
+ SBUS_CONN_TYPE_SHARED,
+ SBUS_CONN_TYPE_SYSBUS
};
enum {
diff --git a/src/sbus/sssd_dbus_connection.c b/src/sbus/sssd_dbus_connection.c
index cf3574a0a..33d5b1a38 100644
--- a/src/sbus/sssd_dbus_connection.c
+++ b/src/sbus/sssd_dbus_connection.c
@@ -274,8 +274,10 @@ static int connection_destructor(void *ctx)
/* Private connections must be closed explicitly */
dbus_connection_close(conn->dbus.conn);
}
- else if (conn->connection_type == SBUS_CONN_TYPE_SHARED) {
- /* Shared connections are destroyed when their last reference is removed */
+ else if (conn->connection_type == SBUS_CONN_TYPE_SHARED ||
+ conn->connection_type == SBUS_CONN_TYPE_SYSBUS) {
+ /* Shared and system bus connections are destroyed when their last
+ reference is removed */
}
else {
/* Critical Error! */