summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/sdap_async_connection.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2010-03-23 17:01:59 +0100
committerStephen Gallagher <sgallagh@redhat.com>2010-03-25 12:14:14 -0400
commit541578ee21975ab008db2dcec69bd3c3f8283122 (patch)
treebc7e434b594149ddddb31ffa9ac170f3aea0fed2 /src/providers/ldap/sdap_async_connection.c
parentabe2d10564aac5e126bf3536b7f9871f00a262b1 (diff)
downloadsssd-541578ee21975ab008db2dcec69bd3c3f8283122.tar.gz
sssd-541578ee21975ab008db2dcec69bd3c3f8283122.tar.xz
sssd-541578ee21975ab008db2dcec69bd3c3f8283122.zip
Set LDAP_OPT_RESTART for ldap_sasl_interactive_bind_s()
This option is needed for the rare case where a poll() call during ldap_sasl_interactive_bind_s() is interrupted by a signal. LDAP_OPT_RESTART enables the handling of the EINTR error instead of returning an error.
Diffstat (limited to 'src/providers/ldap/sdap_async_connection.c')
-rw-r--r--src/providers/ldap/sdap_async_connection.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c
index f8c69569f..2acbbb896 100644
--- a/src/providers/ldap/sdap_async_connection.c
+++ b/src/providers/ldap/sdap_async_connection.c
@@ -522,6 +522,13 @@ static struct tevent_req *sasl_bind_send(TALLOC_CTX *memctx,
DEBUG(4, ("Executing sasl bind mech: %s, user: %s\n",
sasl_mech, sasl_user));
+ /* Until ldap_sasl_interactive_bind_s() is async we may want to set
+ * LDAP_OPT_RESTART to handle EINTR during poll(). */
+ ret = ldap_set_option(state->sh->ldap, LDAP_OPT_RESTART, LDAP_OPT_ON);
+ if (ret != LDAP_OPT_SUCCESS) {
+ DEBUG(1, ("Failed to set restart option.\n"));
+ }
+
/* FIXME: Warning, this is a sync call!
* No async variant exist in openldap libraries yet */