summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-04-02 16:24:54 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-04-03 14:42:00 +0200
commit44fc7e53b403d45576ab61d2dea4608e323ed332 (patch)
treea5af545b70786be1af7bbd0c3299c41aaed48279
parent584eda085e83a428f2c39dadf0d7adeaff5c87f4 (diff)
downloadsssd2-44fc7e53b403d45576ab61d2dea4608e323ed332.tar.gz
sssd2-44fc7e53b403d45576ab61d2dea4608e323ed332.tar.xz
sssd2-44fc7e53b403d45576ab61d2dea4608e323ed332.zip
Centralize resolv_init, remove resolv context list
-rw-r--r--src/providers/data_provider_be.c2
-rw-r--r--src/providers/ipa/ipa_dyndns.c9
-rw-r--r--src/providers/ldap/sdap_async_sudo_hostinfo.c18
-rw-r--r--src/resolv/async_resolv.c19
-rw-r--r--src/resolv/async_resolv.h2
5 files changed, 7 insertions, 43 deletions
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index df077b24..823dc00e 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -2775,7 +2775,7 @@ static int data_provider_res_init(DBusMessage *message,
struct be_ctx *be_ctx;
be_ctx = talloc_get_type(sbus_conn_get_private_data(conn), struct be_ctx);
- resolv_reread_configuration();
+ resolv_reread_configuration(be_ctx->be_res->resolv);
check_if_online(be_ctx);
return monitor_common_res_init(message, conn);
diff --git a/src/providers/ipa/ipa_dyndns.c b/src/providers/ipa/ipa_dyndns.c
index 632ed26a..a31067cd 100644
--- a/src/providers/ipa/ipa_dyndns.c
+++ b/src/providers/ipa/ipa_dyndns.c
@@ -143,14 +143,7 @@ errno_t ipa_dyndns_init(struct be_ctx *be_ctx,
{
errno_t ret;
- ret = resolv_init(be_ctx, be_ctx->ev,
- dp_opt_get_int(be_ctx->be_res->opts,
- DP_RES_OPT_RESOLVER_OP_TIMEOUT),
- &ctx->resolv);
- if (ret != EOK) {
- DEBUG(1, ("Could not set up resolver context\n"));
- return ret;
- }
+ ctx->resolv = be_ctx->be_res->resolv;
ret = be_add_online_cb(be_ctx, be_ctx,
ipa_dyndns_update,
diff --git a/src/providers/ldap/sdap_async_sudo_hostinfo.c b/src/providers/ldap/sdap_async_sudo_hostinfo.c
index ff614223..4e33babd 100644
--- a/src/providers/ldap/sdap_async_sudo_hostinfo.c
+++ b/src/providers/ldap/sdap_async_sudo_hostinfo.c
@@ -431,22 +431,8 @@ static struct tevent_req *sdap_sudo_get_hostnames_send(TALLOC_CTX *mem_ctx,
DEBUG(SSSDBG_TRACE_INTERNAL, ("Found hostname: %s\n", hostname));
}
- /* initialize resolv ctx */
- ret = resolv_init(be_ctx, be_ctx->ev,
- dp_opt_get_int(be_ctx->be_res->opts,
- DP_RES_OPT_RESOLVER_OP_TIMEOUT),
- &state->resolv_ctx);
- if (ret != EOK) {
- DEBUG(SSSDBG_CRIT_FAILURE, ("Could not set up resolver context\n"));
- goto done;
- }
-
- /* get database order */
-
- state->host_db = talloc_zero_array(state, enum host_database, 3);
- state->host_db[0] = DB_FILES;
- state->host_db[1] = DB_DNS;
- state->host_db[2] = DB_SENTINEL;
+ state->resolv_ctx = be_ctx->be_res->resolv;
+ state->host_db = default_host_dbs;
/* get fqdn */
subreq = resolv_gethostbyname_send(state, state->ev, state->resolv_ctx,
diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index dce321e0..60d9e05b 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -78,11 +78,6 @@ struct fd_watch {
};
struct resolv_ctx {
- /* Contexts are linked so we can keep track of them and re-create
- * the ares channels in all of them at once if we need to. */
- struct resolv_ctx *prev;
- struct resolv_ctx *next;
-
struct tevent_context *ev_ctx;
ares_channel channel;
@@ -109,8 +104,6 @@ struct resolv_request {
struct tevent_timer *request_timeout;
};
-struct resolv_ctx *context_list;
-
static int
return_code(int ares_code)
{
@@ -406,8 +399,6 @@ resolv_ctx_destructor(struct resolv_ctx *ctx)
{
ares_channel channel;
- DLIST_REMOVE(context_list, ctx);
-
if (ctx->channel == NULL) {
DEBUG(1, ("Ares channel already destroyed?\n"));
return -1;
@@ -487,7 +478,6 @@ resolv_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx,
goto done;
}
- DLIST_ADD(context_list, ctx);
talloc_set_destructor(ctx, resolv_ctx_destructor);
*ctxp = ctx;
@@ -499,14 +489,9 @@ done:
}
void
-resolv_reread_configuration(void)
+resolv_reread_configuration(struct resolv_ctx *ctx)
{
- struct resolv_ctx *ctx;
-
- DEBUG(4, ("Recreating all c-ares channels\n"));
- DLIST_FOR_EACH(ctx, context_list) {
- recreate_ares_channel(ctx);
- }
+ recreate_ares_channel(ctx);
}
static errno_t
diff --git a/src/resolv/async_resolv.h b/src/resolv/async_resolv.h
index f6c72b4f..b66bf9da 100644
--- a/src/resolv/async_resolv.h
+++ b/src/resolv/async_resolv.h
@@ -58,7 +58,7 @@ struct resolv_ctx;
int resolv_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx,
int timeout, struct resolv_ctx **ctxp);
-void resolv_reread_configuration(void);
+void resolv_reread_configuration(struct resolv_ctx *ctx);
const char *resolv_strerror(int ares_code);