diff options
| author | Ondrej Kos <okos@redhat.com> | 2013-08-29 17:12:34 +0200 |
|---|---|---|
| committer | Ondrej Kos <okos@redhat.com> | 2013-09-04 09:34:40 +0200 |
| commit | 57c2a7c4390a1549a2dbe3c6ae25fffd1e6e9f4d (patch) | |
| tree | 261b4c6c39922c582cfd643afe552fc9b43cb7db | |
| parent | 72d48d112776257aeac08749208dff7f92ca7641 (diff) | |
| download | sssd-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.c | 2 | ||||
| -rw-r--r-- | src/providers/data_provider_be.c | 31 | ||||
| -rw-r--r-- | src/providers/dp_backend.h | 2 | ||||
| -rw-r--r-- | src/providers/ipa/ipa_subdomains.c | 2 |
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")); |
