diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-06-04 11:07:19 +0200 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2012-06-04 14:18:47 -0400 |
commit | 0d2c1deeb761144a671ce37fa39ed8bc6667936f (patch) | |
tree | 71acc334d11e56760f359541a57932668f3838fd /src/providers/ipa | |
parent | 1575084d8ba8800574c72ee0615a0afadca8375c (diff) | |
download | sssd-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.c | 12 |
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); |