summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/responder/autofs/autofssrv.c2
-rw-r--r--src/responder/common/responder.h6
-rw-r--r--src/responder/common/responder_common.c1
-rw-r--r--src/responder/common/responder_dp.c9
-rw-r--r--src/responder/nss/nsssrv.c2
-rw-r--r--src/responder/ssh/sshsrv.c2
-rw-r--r--src/responder/sudo/sudosrv.c2
7 files changed, 14 insertions, 10 deletions
diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c
index 096cce9d..dcb188fd 100644
--- a/src/responder/autofs/autofssrv.c
+++ b/src/responder/autofs/autofssrv.c
@@ -91,7 +91,7 @@ autofs_dp_reconnect_init(struct sbus_connection *conn,
"autofs");
/* all fine */
if (ret == EOK) {
- handle_requests_after_reconnect();
+ handle_requests_after_reconnect(be_conn->rctx);
return;
}
}
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h
index 619ae46e..1309c14d 100644
--- a/src/responder/common/responder.h
+++ b/src/responder/common/responder.h
@@ -56,10 +56,14 @@ struct cli_protocol_version {
const char *description;
};
+struct resp_ctx;
+
struct be_conn {
struct be_conn *next;
struct be_conn *prev;
+ struct resp_ctx *rctx;
+
const char *cli_name;
struct sss_domain_info *domain;
@@ -188,7 +192,7 @@ struct dp_callback_ctx {
struct cli_ctx *cctx;
};
-void handle_requests_after_reconnect(void);
+void handle_requests_after_reconnect(struct resp_ctx *rctx);
int responder_logrotate(DBusMessage *message,
struct sbus_connection *conn);
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
index a9b5d56b..52b271b9 100644
--- a/src/responder/common/responder_common.c
+++ b/src/responder/common/responder_common.c
@@ -326,6 +326,7 @@ static int sss_dp_init(struct resp_ctx *rctx,
be_conn->cli_name = cli_name;
be_conn->domain = domain;
be_conn->intf = intf;
+ be_conn->rctx = rctx;
/* Set up SBUS connection to the monitor */
ret = dp_get_sbus_address(be_conn, &be_conn->sbus_address, domain->name);
diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c
index a116fedd..a54c68d7 100644
--- a/src/responder/common/responder_dp.c
+++ b/src/responder/common/responder_dp.c
@@ -28,8 +28,6 @@
#include "providers/data_provider.h"
#include "sbus/sbus_client.h"
-hash_table_t *dp_requests = NULL;
-
struct sss_dp_req;
struct sss_dp_callback {
@@ -120,19 +118,19 @@ static int sss_dp_req_destructor(void *ptr)
return 0;
}
-void handle_requests_after_reconnect(void)
+void handle_requests_after_reconnect(struct resp_ctx *rctx)
{
int ret;
hash_value_t *values;
unsigned long count, i;
struct sss_dp_req *sdp_req;
- if (!dp_requests) {
+ if (!rctx->dp_request_table) {
DEBUG(7, ("No requests to handle after reconnect\n"));
return;
}
- ret = hash_values(dp_requests, &count, &values);
+ ret = hash_values(rctx->dp_request_table, &count, &values);
if (ret != HASH_SUCCESS) {
DEBUG(1, ("hash_values failed, "
"not all request might be handled after reconnect.\n"));
@@ -145,6 +143,7 @@ void handle_requests_after_reconnect(void)
talloc_free(sdp_req);
}
}
+
static int sss_dp_get_reply(DBusPendingCall *pending,
dbus_uint16_t *dp_err,
dbus_uint32_t *dp_ret,
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
index f97898d4..bff8e3cd 100644
--- a/src/responder/nss/nsssrv.c
+++ b/src/responder/nss/nsssrv.c
@@ -229,7 +229,7 @@ static void nss_dp_reconnect_init(struct sbus_connection *conn,
"NSS");
/* all fine */
if (ret == EOK) {
- handle_requests_after_reconnect();
+ handle_requests_after_reconnect(be_conn->rctx);
return;
}
}
diff --git a/src/responder/ssh/sshsrv.c b/src/responder/ssh/sshsrv.c
index 886070e2..8e979a78 100644
--- a/src/responder/ssh/sshsrv.c
+++ b/src/responder/ssh/sshsrv.c
@@ -71,7 +71,7 @@ static void ssh_dp_reconnect_init(struct sbus_connection *conn,
"SSH");
/* all fine */
if (ret == EOK) {
- handle_requests_after_reconnect();
+ handle_requests_after_reconnect(be_conn->rctx);
return;
}
}
diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c
index 137bd327..6e609cda 100644
--- a/src/responder/sudo/sudosrv.c
+++ b/src/responder/sudo/sudosrv.c
@@ -71,7 +71,7 @@ static void sudo_dp_reconnect_init(struct sbus_connection *conn,
"SUDO");
/* all fine */
if (ret == EOK) {
- handle_requests_after_reconnect();
+ handle_requests_after_reconnect(be_conn->rctx);
return;
}
}