summaryrefslogtreecommitdiffstats
path: root/src/providers/ipa
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2012-06-04 11:07:19 +0200
committerStephen Gallagher <sgallagh@redhat.com>2012-06-04 14:18:47 -0400
commit0d2c1deeb761144a671ce37fa39ed8bc6667936f (patch)
tree71acc334d11e56760f359541a57932668f3838fd /src/providers/ipa
parent1575084d8ba8800574c72ee0615a0afadca8375c (diff)
downloadsssd-0d2c1deeb761144a671ce37fa39ed8bc6667936f.tar.gz
sssd-0d2c1deeb761144a671ce37fa39ed8bc6667936f.tar.xz
sssd-0d2c1deeb761144a671ce37fa39ed8bc6667936f.zip
Only do one cycle when resolving a server
Rename fo_get_server_name to fo_get_server_str_name fo_get_server_name() getter for a server name Allows to be more concise in tests and more defensive in resolve callbacks Only do one cycle when resolving a server https://fedorahosted.org/sssd/ticket/1214 Detect cycle in the fail over on subsequent resolve requests only
Diffstat (limited to 'src/providers/ipa')
-rw-r--r--src/providers/ipa/ipa_common.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index d5ab857d3..e7813f655 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -566,6 +566,7 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
char *address;
const char *safe_address;
char *new_uri;
+ const char *srv_name;
int ret;
tmp_ctx = talloc_new(NULL);
@@ -584,7 +585,7 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
srvaddr = fo_get_server_hostent(server);
if (!srvaddr) {
DEBUG(1, ("FATAL: No hostent available for server (%s)\n",
- fo_get_server_name(server)));
+ fo_get_server_str_name(server)));
talloc_free(tmp_ctx);
return;
}
@@ -612,7 +613,14 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
return;
}
- new_uri = talloc_asprintf(service, "ldap://%s", fo_get_server_name(server));
+ srv_name = fo_get_server_name(server);
+ if (srv_name == NULL) {
+ DEBUG(1, ("Could not get server host name\n"));
+ talloc_free(tmp_ctx);
+ return;
+ }
+
+ new_uri = talloc_asprintf(service, "ldap://%s", srv_name);
if (!new_uri) {
DEBUG(2, ("Failed to copy URI ...\n"));
talloc_free(tmp_ctx);