diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-12-15 16:50:31 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-12-18 17:25:35 +0100 |
commit | ccb2c1f30b04bf1f7a33f47748664dedb7ddd0e3 (patch) | |
tree | 1661b1fd5970ecf45d21ee7566045abc61743724 /src/responder/autofs | |
parent | e880949305cee3aca79441fe6113a9d79e7c98f2 (diff) | |
download | sssd-ccb2c1f30b04bf1f7a33f47748664dedb7ddd0e3.tar.gz sssd-ccb2c1f30b04bf1f7a33f47748664dedb7ddd0e3.tar.xz sssd-ccb2c1f30b04bf1f7a33f47748664dedb7ddd0e3.zip |
AUTOFS: Clear enum cache if a request comes in from the sss_cache
In order for sss_cache to work correctly, we must also signal the autofs
responder to invalidate the hash table requests.
Diffstat (limited to 'src/responder/autofs')
-rw-r--r-- | src/responder/autofs/autofssrv.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c index d7c10d6c9..93deffd94 100644 --- a/src/responder/autofs/autofssrv.c +++ b/src/responder/autofs/autofssrv.c @@ -29,10 +29,14 @@ #include "providers/data_provider.h" #include "responder/autofs/autofs_private.h" +static int autofs_clean_hash_table(DBusMessage *message, + struct sbus_connection *conn); + struct sbus_method monitor_autofs_methods[] = { { MON_CLI_METHOD_PING, monitor_common_pong }, { MON_CLI_METHOD_RES_INIT, monitor_common_res_init }, { MON_CLI_METHOD_ROTATE, responder_logrotate }, + { MON_CLI_METHOD_CLEAR_ENUM_CACHE, autofs_clean_hash_table }, { NULL, NULL } }; @@ -101,6 +105,24 @@ autofs_dp_reconnect_init(struct sbus_connection *conn, be_conn->domain->name)); } +static int autofs_clean_hash_table(DBusMessage *message, + struct sbus_connection *conn) +{ + struct resp_ctx *rctx = talloc_get_type(sbus_conn_get_private_data(conn), + struct resp_ctx); + struct autofs_ctx *actx = + talloc_get_type(rctx->pvt_ctx, struct autofs_ctx); + errno_t ret; + + ret = autofs_orphan_maps(actx); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, ("Could not invalidate maps\n")); + return ret; + } + + return monitor_common_pong(message, conn); +} + static int autofs_process_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, |