From 2d7a7b0140a4d3fcef9148900276e24f82e33866 Mon Sep 17 00:00:00 2001 From: eindenbom Date: Fri, 9 Jul 2010 15:54:05 +0400 Subject: LDAP connection usage tracking, sharing and failover retry framework. --- src/providers/ldap/sdap_async_connection.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/providers/ldap/sdap_async_connection.c') diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c index 193971c23..2af6aaeab 100644 --- a/src/providers/ldap/sdap_async_connection.c +++ b/src/providers/ldap/sdap_async_connection.c @@ -1212,16 +1212,32 @@ int sdap_cli_connect_recv(struct tevent_req *req, TALLOC_CTX *memctx, struct sdap_handle **gsh, struct sysdb_attrs **rootdse) +{ + return sdap_cli_connect_recv_ext(req, memctx, NULL, gsh, rootdse); +} + +int sdap_cli_connect_recv_ext(struct tevent_req *req, + TALLOC_CTX *memctx, + bool *can_retry, + struct sdap_handle **gsh, + struct sysdb_attrs **rootdse) { struct sdap_cli_connect_state *state = tevent_req_data(req, struct sdap_cli_connect_state); enum tevent_req_state tstate; uint64_t err; + if (can_retry) { + *can_retry = true; + } if (tevent_req_is_error(req, &tstate, &err)) { /* mark the server as bad if connection failed */ if (state->srv) { fo_set_port_status(state->srv, PORT_NOT_WORKING); + } else { + if (can_retry) { + *can_retry = false; + } } if (tstate == TEVENT_REQ_USER_ERROR) { -- cgit