summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Kos <okos@redhat.com>2013-08-29 17:12:34 +0200
committerOndrej Kos <okos@redhat.com>2013-09-04 09:34:40 +0200
commit57c2a7c4390a1549a2dbe3c6ae25fffd1e6e9f4d (patch)
tree261b4c6c39922c582cfd643afe552fc9b43cb7db
parent72d48d112776257aeac08749208dff7f92ca7641 (diff)
downloadsssd-57c2a7c4390a1549a2dbe3c6ae25fffd1e6e9f4d.tar.gz
sssd-57c2a7c4390a1549a2dbe3c6ae25fffd1e6e9f4d.tar.xz
sssd-57c2a7c4390a1549a2dbe3c6ae25fffd1e6e9f4d.zip
DP: Save request domain name, if available
-rw-r--r--src/providers/ad/ad_subdomains.c2
-rw-r--r--src/providers/data_provider_be.c31
-rw-r--r--src/providers/dp_backend.h2
-rw-r--r--src/providers/ipa/ipa_subdomains.c2
4 files changed, 25 insertions, 12 deletions
diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c
index e6d85541..6e44680e 100644
--- a/src/providers/ad/ad_subdomains.c
+++ b/src/providers/ad/ad_subdomains.c
@@ -719,7 +719,7 @@ static void ad_subdom_online_cb(void *pvt)
return;
}
- be_req = be_req_create(ctx, NULL, ctx->be_ctx,
+ be_req = be_req_create(ctx, NULL, NULL, ctx->be_ctx,
ad_subdom_be_req_callback, NULL);
if (be_req == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, ("be_req_create() failed.\n"));
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index a80bfa13..52dc5e03 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -129,6 +129,7 @@ struct be_req {
struct be_req *next;
struct be_client *becli;
struct be_ctx *be_ctx;
+ char *domain_name;
void *req_data;
be_async_callback_t fn;
@@ -141,7 +142,7 @@ struct be_req {
int phase;
};
-struct be_req *be_req_create(TALLOC_CTX *mem_ctx,
+struct be_req *be_req_create(TALLOC_CTX *mem_ctx, char *domain_name,
struct be_client *becli, struct be_ctx *be_ctx,
be_async_callback_t fn, void *pvt_fn_data)
{
@@ -154,6 +155,12 @@ struct be_req *be_req_create(TALLOC_CTX *mem_ctx,
be_req->be_ctx = be_ctx;
be_req->fn = fn;
be_req->pvt = pvt_fn_data;
+ if (domain_name != NULL) {
+ be_req->domain_name = talloc_strdup(mem_ctx, domain_name);
+ if (!be_req->domain_name) {
+ return NULL;
+ }
+ }
return be_req;
}
@@ -631,7 +638,7 @@ static int be_get_subdomains(DBusMessage *message, struct sbus_connection *conn)
/* process request */
- be_req = be_req_create(becli, becli, becli->bectx,
+ be_req = be_req_create(becli, NULL, becli, becli->bectx,
get_subdomains_callback, reply);
if (!be_req) {
err_maj = DP_ERR_FATAL;
@@ -998,7 +1005,7 @@ be_get_account_info_send(TALLOC_CTX *mem_ctx,
struct be_get_account_info_state);
if (!req) return NULL;
- be_req = be_req_create(state, becli, be_ctx,
+ be_req = be_req_create(state, ar->domain, becli, be_ctx,
be_get_account_info_done, req);
if (!be_req) {
ret = ENOMEM;
@@ -1145,7 +1152,7 @@ static int be_get_account_info(DBusMessage *message, struct sbus_connection *con
*/
}
- be_req = be_req_create(becli, becli, becli->bectx,
+ be_req = be_req_create(becli, domain, becli, becli->bectx,
acctinfo_callback, reply);
if (!be_req) {
err_maj = DP_ERR_FATAL;
@@ -1343,7 +1350,7 @@ static int be_pam_handler(DBusMessage *message, struct sbus_connection *conn)
return ENOMEM;
}
- be_req = be_req_create(becli, becli, becli->bectx,
+ be_req = be_req_create(becli, NULL, becli, becli->bectx,
be_pam_handler_callback, reply);
if (!be_req) {
DEBUG(7, ("talloc_zero failed.\n"));
@@ -1367,6 +1374,12 @@ static int be_pam_handler(DBusMessage *message, struct sbus_connection *conn)
talloc_free(be_req);
return ENOMEM;
}
+ } else {
+ be_req->domain_name = talloc_strdup(becli, pd->domain);
+ if (be_req->domain_name == NULL) {
+ talloc_free(be_req);
+ return ENOMEM;
+ }
}
@@ -1528,7 +1541,7 @@ static int be_sudo_handler(DBusMessage *message, struct sbus_connection *conn)
}
/* create be request */
- be_req = be_req_create(be_cli, be_cli, be_cli->bectx,
+ be_req = be_req_create(be_cli, NULL, be_cli, be_cli->bectx,
be_sudo_handler_callback, reply);
if (be_req == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_zero failed.\n"));
@@ -1764,7 +1777,7 @@ static int be_autofs_handler(DBusMessage *message, struct sbus_connection *conn)
}
/* create be request */
- be_req = be_req_create(be_cli, be_cli, be_cli->bectx,
+ be_req = be_req_create(be_cli, NULL, be_cli, be_cli->bectx,
be_autofs_handler_callback, reply);
if (be_req == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_zero failed.\n"));
@@ -1980,7 +1993,7 @@ static int be_host_handler(DBusMessage *message, struct sbus_connection *conn)
*/
}
- be_req = be_req_create(becli, becli, becli->bectx,
+ be_req = be_req_create(becli, NULL, becli, becli->bectx,
acctinfo_callback, reply);
if (!be_req) {
err_maj = DP_ERR_FATAL;
@@ -2256,7 +2269,7 @@ static void check_if_online(struct be_ctx *ctx)
goto failed;
}
- be_req = be_req_create(ctx, NULL, ctx,
+ be_req = be_req_create(ctx, NULL, NULL, ctx,
check_online_callback, NULL);
if (be_req == NULL) {
DEBUG(1, ("talloc_zero failed.\n"));
diff --git a/src/providers/dp_backend.h b/src/providers/dp_backend.h
index ff36015f..42e03647 100644
--- a/src/providers/dp_backend.h
+++ b/src/providers/dp_backend.h
@@ -276,7 +276,7 @@ errno_t be_res_init(struct be_ctx *ctx);
/* be_req helpers */
-struct be_req *be_req_create(TALLOC_CTX *mem_ctx,
+struct be_req *be_req_create(TALLOC_CTX *mem_ctx, char *domain_name,
struct be_client *becli, struct be_ctx *be_ctx,
be_async_callback_t fn, void *pvt_fn_data);
struct be_ctx *be_req_get_be_ctx(struct be_req *be_req);
diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 15d71c6e..8c3f1765 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -1026,7 +1026,7 @@ static void ipa_subdom_online_cb(void *pvt)
ctx->disabled_until = 0;
- be_req = be_req_create(ctx, NULL, ctx->be_ctx,
+ be_req = be_req_create(ctx, NULL, NULL, ctx->be_ctx,
ipa_subdom_be_req_callback, NULL);
if (be_req == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, ("be_req_create() failed.\n"));