summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/ldap_auth.c
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/ldap/ldap_auth.c
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/ldap/ldap_auth.c')
-rw-r--r--src/providers/ldap/ldap_auth.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/providers/ldap/ldap_auth.c b/src/providers/ldap/ldap_auth.c
index 8109e247d..7a5ec4b73 100644
--- a/src/providers/ldap/ldap_auth.c
+++ b/src/providers/ldap/ldap_auth.c
@@ -512,7 +512,8 @@ static struct tevent_req *auth_get_server(struct tevent_req *req)
next_req = be_resolve_server_send(state,
state->ev,
state->ctx->be,
- state->sdap_service->name);
+ state->sdap_service->name,
+ state->srv == NULL ? true : false);
if (!next_req) {
DEBUG(1, ("be_resolve_server_send failed.\n"));
return NULL;
@@ -583,7 +584,8 @@ static void auth_connect_done(struct tevent_req *subreq)
if (ret) {
if (state->srv) {
/* mark this server as bad if connection failed */
- fo_set_port_status(state->srv, PORT_NOT_WORKING);
+ be_fo_set_port_status(state->ctx->be,
+ state->srv, PORT_NOT_WORKING);
}
if (ret == ETIMEDOUT) {
if (auth_get_server(req) == NULL) {
@@ -595,7 +597,7 @@ static void auth_connect_done(struct tevent_req *subreq)
tevent_req_error(req, ret);
return;
} else if (state->srv) {
- fo_set_port_status(state->srv, PORT_WORKING);
+ be_fo_set_port_status(state->ctx->be, state->srv, PORT_WORKING);
}
ret = get_user_dn(state, state->ctx->be->sysdb, state->ctx->opts,