summaryrefslogtreecommitdiffstats
path: root/src/providers/ad
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-12-12 17:10:40 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-03-03 16:15:37 +0100
commit8df69bbc58c2f4d3f0b34be9756d9ddf24b1db6d (patch)
tree643138d18dd31a9ea0e5691daf19baea0dc0e396 /src/providers/ad
parenteafbc66c2ff6365478e62a8df3fd005bf80e5c7b (diff)
downloadsssd-8df69bbc58c2f4d3f0b34be9756d9ddf24b1db6d.tar.gz
sssd-8df69bbc58c2f4d3f0b34be9756d9ddf24b1db6d.tar.xz
sssd-8df69bbc58c2f4d3f0b34be9756d9ddf24b1db6d.zip
FO: Use SRV TTL in fail over code
Resolves: https://fedorahosted.org/sssd/ticket/1884 Removes the hardcoded SRV TTL timeout and uses TTL from the DNS instead. Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/providers/ad')
-rw-r--r--src/providers/ad/ad_srv.c8
-rw-r--r--src/providers/ad/ad_srv.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/src/providers/ad/ad_srv.c b/src/providers/ad/ad_srv.c
index ac9dfa187..910f82dd0 100644
--- a/src/providers/ad/ad_srv.c
+++ b/src/providers/ad/ad_srv.c
@@ -176,7 +176,7 @@ static void ad_get_dc_servers_done(struct tevent_req *subreq)
req = tevent_req_callback_data(subreq, struct tevent_req);
state = tevent_req_data(req, struct ad_get_dc_servers_state);
- ret = fo_discover_srv_recv(state, subreq, &domain,
+ ret = fo_discover_srv_recv(state, subreq, &domain, NULL,
&state->servers, &state->num_servers);
talloc_zfree(subreq);
if (ret != EOK) {
@@ -616,6 +616,7 @@ struct ad_srv_plugin_state {
const char *site;
char *dns_domain;
+ uint32_t ttl;
char *forest;
struct fo_server_info *primary_servers;
size_t num_primary_servers;
@@ -837,6 +838,7 @@ static void ad_srv_plugin_servers_done(struct tevent_req *subreq)
state = tevent_req_data(req, struct ad_srv_plugin_state);
ret = fo_discover_servers_recv(state, subreq, &state->dns_domain,
+ &state->ttl,
&state->primary_servers,
&state->num_primary_servers,
&state->backup_servers,
@@ -874,6 +876,7 @@ static void ad_srv_plugin_servers_done(struct tevent_req *subreq)
errno_t ad_srv_plugin_recv(TALLOC_CTX *mem_ctx,
struct tevent_req *req,
char **_dns_domain,
+ uint32_t *_ttl,
struct fo_server_info **_primary_servers,
size_t *_num_primary_servers,
struct fo_server_info **_backup_servers,
@@ -904,6 +907,9 @@ errno_t ad_srv_plugin_recv(TALLOC_CTX *mem_ctx,
*_dns_domain = talloc_steal(mem_ctx, state->dns_domain);
}
+ if (_ttl) {
+ *_ttl = state->ttl;
+ }
return EOK;
}
diff --git a/src/providers/ad/ad_srv.h b/src/providers/ad/ad_srv.h
index be3ac2826..ae5efe447 100644
--- a/src/providers/ad/ad_srv.h
+++ b/src/providers/ad/ad_srv.h
@@ -42,6 +42,7 @@ struct tevent_req *ad_srv_plugin_send(TALLOC_CTX *mem_ctx,
errno_t ad_srv_plugin_recv(TALLOC_CTX *mem_ctx,
struct tevent_req *req,
char **_dns_domain,
+ uint32_t *_ttl,
struct fo_server_info **_primary_servers,
size_t *_num_primary_servers,
struct fo_server_info **_backup_servers,