diff options
| author | Fabiano Fidêncio <fidencio@redhat.com> | 2016-12-14 09:23:14 +0100 |
|---|---|---|
| committer | Lukas Slebodnik <lslebodn@redhat.com> | 2017-01-23 18:46:37 +0100 |
| commit | b46c4c0d3e364636af1b42683cd3229ffa0b77cb (patch) | |
| tree | 596aa518cd7da12b48d803cb62333d8ddfb6fe72 /src/sbus | |
| parent | 26f11a75dc0d973d575e5d2d56dc13a698a68ea5 (diff) | |
| download | sssd-b46c4c0d3e364636af1b42683cd3229ffa0b77cb.tar.gz sssd-b46c4c0d3e364636af1b42683cd3229ffa0b77cb.tar.xz sssd-b46c4c0d3e364636af1b42683cd3229ffa0b77cb.zip | |
SBUS: Add a time_t pointer to the sbus_connection
The idea of this commit is to provide a way to update the time of the
last request coming from/going to the responders through sbus.
For now it's not used anywhere as all the functions that will pass their
time_t to the sbus_connection are currently passing NULL. It will be
used by follow-up patches.
Related:
https://fedorahosted.org/sssd/ticket/3245
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/sbus')
| -rw-r--r-- | src/sbus/sbus_client.c | 4 | ||||
| -rw-r--r-- | src/sbus/sbus_client.h | 1 | ||||
| -rw-r--r-- | src/sbus/sssd_dbus.h | 2 | ||||
| -rw-r--r-- | src/sbus/sssd_dbus_connection.c | 8 | ||||
| -rw-r--r-- | src/sbus/sssd_dbus_interface.c | 4 | ||||
| -rw-r--r-- | src/sbus/sssd_dbus_private.h | 3 | ||||
| -rw-r--r-- | src/sbus/sssd_dbus_server.c | 2 |
7 files changed, 20 insertions, 4 deletions
diff --git a/src/sbus/sbus_client.c b/src/sbus/sbus_client.c index 8ad4c0f36..1f084e832 100644 --- a/src/sbus/sbus_client.c +++ b/src/sbus/sbus_client.c @@ -27,6 +27,7 @@ int sbus_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const char *server_address, + time_t *last_request_time, struct sbus_connection **_conn) { struct sbus_connection *conn = NULL; @@ -63,7 +64,8 @@ int sbus_client_init(TALLOC_CTX *mem_ctx, return EIO; } - ret = sbus_new_connection(mem_ctx, ev, server_address, &conn); + ret = sbus_new_connection(mem_ctx, ev, server_address, + last_request_time, &conn); if (ret != EOK) { goto fail; } diff --git a/src/sbus/sbus_client.h b/src/sbus/sbus_client.h index f76b40ec4..0366e568a 100644 --- a/src/sbus/sbus_client.h +++ b/src/sbus/sbus_client.h @@ -28,6 +28,7 @@ int sbus_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const char *server_address, + time_t *last_request_time, struct sbus_connection **_conn); #endif /* SBUS_CLIENT_H_ */ diff --git a/src/sbus/sssd_dbus.h b/src/sbus/sssd_dbus.h index 15e3b117e..0cce8b963 100644 --- a/src/sbus/sssd_dbus.h +++ b/src/sbus/sssd_dbus.h @@ -155,6 +155,7 @@ int sbus_new_server(TALLOC_CTX *mem_ctx, int sbus_new_connection(TALLOC_CTX *ctx, struct tevent_context *ev, const char *address, + time_t *last_request_time, struct sbus_connection **conn); /* sbus_add_connection @@ -173,6 +174,7 @@ int sbus_init_connection(TALLOC_CTX *ctx, struct tevent_context *ev, DBusConnection *dbus_conn, int connection_type, + time_t *last_request_time, struct sbus_connection **_conn); DBusConnection *sbus_get_connection(struct sbus_connection *conn); diff --git a/src/sbus/sssd_dbus_connection.c b/src/sbus/sssd_dbus_connection.c index 6f48e2706..2536ef630 100644 --- a/src/sbus/sssd_dbus_connection.c +++ b/src/sbus/sssd_dbus_connection.c @@ -148,6 +148,7 @@ int sbus_init_connection(TALLOC_CTX *ctx, struct tevent_context *ev, DBusConnection *dbus_conn, int connection_type, + time_t *last_request_time, struct sbus_connection **_conn) { struct sbus_connection *conn; @@ -161,6 +162,7 @@ int sbus_init_connection(TALLOC_CTX *ctx, conn->type = SBUS_CONNECTION; conn->dbus.conn = dbus_conn; conn->connection_type = connection_type; + conn->last_request_time = last_request_time; ret = sbus_opath_hash_init(conn, conn, &conn->managed_paths); if (ret != EOK) { @@ -259,7 +261,8 @@ static int sbus_conn_set_fns(struct sbus_connection *conn) } int sbus_new_connection(TALLOC_CTX *ctx, struct tevent_context *ev, - const char *address, struct sbus_connection **_conn) + const char *address, time_t *last_request_time, + struct sbus_connection **_conn) { struct sbus_connection *conn; DBusConnection *dbus_conn; @@ -278,7 +281,8 @@ int sbus_new_connection(TALLOC_CTX *ctx, struct tevent_context *ev, return EIO; } - ret = sbus_init_connection(ctx, ev, dbus_conn, SBUS_CONN_TYPE_SHARED, &conn); + ret = sbus_init_connection(ctx, ev, dbus_conn, SBUS_CONN_TYPE_SHARED, + last_request_time, &conn); if (ret != EOK) { /* FIXME: release resources */ } diff --git a/src/sbus/sssd_dbus_interface.c b/src/sbus/sssd_dbus_interface.c index e96e29b79..32e5b27e1 100644 --- a/src/sbus/sssd_dbus_interface.c +++ b/src/sbus/sssd_dbus_interface.c @@ -1089,6 +1089,10 @@ sbus_message_handler(DBusConnection *dbus_conn, } tevent_req_set_callback(req, sbus_message_handler_got_caller_id, sbus_req); + if (conn->last_request_time != NULL) { + *conn->last_request_time = time(NULL); + } + return DBUS_HANDLER_RESULT_HANDLED; fail: ; diff --git a/src/sbus/sssd_dbus_private.h b/src/sbus/sssd_dbus_private.h index 44a116e6c..cdbf1d584 100644 --- a/src/sbus/sssd_dbus_private.h +++ b/src/sbus/sssd_dbus_private.h @@ -66,6 +66,9 @@ struct sbus_connection { /* watches list */ struct sbus_watch_ctx *watch_list; + + /* responder related stuff */ + time_t *last_request_time; }; /* =Standard=interfaces=================================================== */ diff --git a/src/sbus/sssd_dbus_server.c b/src/sbus/sssd_dbus_server.c index 6cc4172a0..900086924 100644 --- a/src/sbus/sssd_dbus_server.c +++ b/src/sbus/sssd_dbus_server.c @@ -53,7 +53,7 @@ static void sbus_server_init_new_connection(DBusServer *dbus_server, DEBUG(SSSDBG_FUNC_DATA,"Adding connection %p.\n", dbus_conn); ret = sbus_init_connection(server, server->ev, dbus_conn, - SBUS_CONN_TYPE_PRIVATE, &conn); + SBUS_CONN_TYPE_PRIVATE, NULL, &conn); if (ret != 0) { dbus_connection_close(dbus_conn); DEBUG(SSSDBG_FUNC_DATA, "Closing connection (failed setup)\n"); |
