mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-10 14:23:34 -05:00
ITS#10330 keep socket non-blocking during polling in ldap_int_tls_start
During TLS negotiation, if a timeout is set, ldap_int_tls_start sets the socket to non-blocking and calls ldap_int_poll in a loop if ldap_int_tls_connect does not succeed the first time it is called. However, ldap_int_poll sets the socket back to blocking and we currently do not set it back to non-blocking. This means that a subsequent call to ldap_int_tls_connect may hang and the configured timeout will not be enforced. To fix this, we now set the socket back to non-blocking after ldap_int_poll is called.
This commit is contained in:
parent
76b9c476dd
commit
585e6aa9a5
1 changed files with 3 additions and 0 deletions
|
|
@ -1227,6 +1227,9 @@ ldap_int_tls_start ( LDAP *ld, LDAPConn *conn, LDAPURLDesc *srv )
|
|||
ld->ld_errno = LDAP_TIMEOUT;
|
||||
break;
|
||||
}
|
||||
/* ldap_int_poll switches the socket back to blocking, but we want
|
||||
* it non-blocking before calling ldap_int_tls_connect */
|
||||
ber_sockbuf_ctrl( sb, LBER_SB_OPT_SET_NONBLOCK, (void*)1 );
|
||||
}
|
||||
ret = ldap_int_tls_connect( ld, conn, host );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue