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 | |
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>
-rw-r--r-- | src/monitor/monitor_interfaces.h | 1 | ||||
-rw-r--r-- | src/monitor/monitor_sbus.c | 3 | ||||
-rw-r--r-- | src/providers/data_provider_be.c | 3 | ||||
-rw-r--r-- | src/providers/proxy/proxy_child.c | 2 | ||||
-rw-r--r-- | src/responder/common/responder_common.c | 3 | ||||
-rw-r--r-- | src/responder/ifp/ifpsrv.c | 2 | ||||
-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 |
13 files changed, 29 insertions, 9 deletions
diff --git a/src/monitor/monitor_interfaces.h b/src/monitor/monitor_interfaces.h index c5f3f7cc6..136beb4f5 100644 --- a/src/monitor/monitor_interfaces.h +++ b/src/monitor/monitor_interfaces.h @@ -50,4 +50,5 @@ errno_t sss_monitor_init(TALLOC_CTX *mem_ctx, uint16_t svc_version, uint16_t svc_type, void *pvt, + time_t *last_request_time, struct sbus_connection **mon_conn); diff --git a/src/monitor/monitor_sbus.c b/src/monitor/monitor_sbus.c index af6e1cffe..faf28f728 100644 --- a/src/monitor/monitor_sbus.c +++ b/src/monitor/monitor_sbus.c @@ -167,6 +167,7 @@ errno_t sss_monitor_init(TALLOC_CTX *mem_ctx, uint16_t svc_version, uint16_t svc_type, void *pvt, + time_t *last_request_time, struct sbus_connection **mon_conn) { errno_t ret; @@ -180,7 +181,7 @@ errno_t sss_monitor_init(TALLOC_CTX *mem_ctx, return ret; } - ret = sbus_client_init(mem_ctx, ev, sbus_address, &conn); + ret = sbus_client_init(mem_ctx, ev, sbus_address, last_request_time, &conn); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Failed to connect to monitor services.\n"); talloc_free(sbus_address); diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c index 36f96df6e..12b5f43d0 100644 --- a/src/providers/data_provider_be.c +++ b/src/providers/data_provider_be.c @@ -408,7 +408,8 @@ errno_t be_process_init(TALLOC_CTX *mem_ctx, ret = sss_monitor_init(be_ctx, be_ctx->ev, &monitor_be_methods, be_ctx->identity, DATA_PROVIDER_VERSION, - MT_SVC_PROVIDER, be_ctx, &be_ctx->mon_conn); + MT_SVC_PROVIDER, be_ctx, NULL, + &be_ctx->mon_conn); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Unable to initialize monitor connection\n"); goto done; diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c index b492adcb3..be58622eb 100644 --- a/src/providers/proxy/proxy_child.c +++ b/src/providers/proxy/proxy_child.c @@ -440,7 +440,7 @@ static int proxy_cli_init(struct pc_ctx *ctx) return ENOMEM; } - ret = sbus_client_init(ctx, ctx->ev, sbus_address, &ctx->conn); + ret = sbus_client_init(ctx, ctx->ev, sbus_address, NULL, &ctx->conn); if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "sbus_client_init failed.\n"); return ret; diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 2a585d2a4..dc6d8d316 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -574,6 +574,7 @@ static int sss_dp_init(struct resp_ctx *rctx, } ret = sbus_client_init(rctx, rctx->ev, be_conn->sbus_address, + NULL, &be_conn->conn); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Failed to connect to monitor services.\n"); @@ -1023,7 +1024,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx, ret = sss_monitor_init(rctx, rctx->ev, monitor_intf, svc_name, svc_version, MT_SVC_SERVICE, - rctx, &rctx->mon_conn); + rctx, NULL, &rctx->mon_conn); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "fatal error setting up message bus\n"); goto fail; diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c index dda10c7bb..37b62a7f4 100644 --- a/src/responder/ifp/ifpsrv.c +++ b/src/responder/ifp/ifpsrv.c @@ -138,7 +138,7 @@ sysbus_init(TALLOC_CTX *mem_ctx, /* Integrate with tevent loop */ ret = sbus_init_connection(system_bus, ev, conn, SBUS_CONN_TYPE_SYSBUS, - &system_bus->conn); + NULL, &system_bus->conn); if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, "Could not integrate D-BUS into mainloop.\n"); 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"); |