summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/ldap')
-rw-r--r--src/providers/ldap/ldap_common.h2
-rw-r--r--src/providers/ldap/sdap_id_op.c15
2 files changed, 13 insertions, 4 deletions
diff --git a/src/providers/ldap/ldap_common.h b/src/providers/ldap/ldap_common.h
index 0d565fc63..fb9a34c60 100644
--- a/src/providers/ldap/ldap_common.h
+++ b/src/providers/ldap/ldap_common.h
@@ -52,6 +52,8 @@ struct sdap_id_conn_ctx {
struct sdap_id_conn_cache *conn_cache;
/* dlinklist pointers */
struct sdap_id_conn_ctx *prev, *next;
+ /* do not go offline, try another connection */
+ bool ignore_mark_offline;
};
struct sdap_id_ctx {
diff --git a/src/providers/ldap/sdap_id_op.c b/src/providers/ldap/sdap_id_op.c
index 52cf78569..5e166e19f 100644
--- a/src/providers/ldap/sdap_id_op.c
+++ b/src/providers/ldap/sdap_id_op.c
@@ -553,10 +553,17 @@ static void sdap_id_op_connect_done(struct tevent_req *subreq)
}
if (ret != EOK && !can_retry) {
- /* be is going offline as there is no more servers to try */
- DEBUG(1, ("Failed to connect, going offline (%d [%s])\n",
- ret, strerror(ret)));
- be_mark_offline(conn_cache->id_conn->id_ctx->be);
+ if (conn_cache->id_conn->ignore_mark_offline) {
+ DEBUG(SSSDBG_TRACE_FUNC,
+ ("Failed to connect to server, but ignore mark offline "
+ "is enabled.\n"));
+ } else {
+ /* be is going offline as there is no more servers to try */
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ ("Failed to connect, going offline (%d [%s])\n",
+ ret, strerror(ret)));
+ be_mark_offline(conn_cache->id_conn->id_ctx->be);
+ }
is_offline = true;
}