@@ -987,6 +987,17 @@ PHP_FUNCTION(ldap_connect)
987987 snprintf ( url , urllen , "ldap://%s:" ZEND_LONG_FMT , host , port );
988988 }
989989
990+ #ifdef LDAP_OPT_X_TLS_NEWCTX
991+ if (url && !strncmp (url , "ldaps:" , 6 )) {
992+ int val = 0 ;
993+
994+ /* ensure all pending TLS options are applied in a new context */
995+ if (ldap_set_option (NULL , LDAP_OPT_X_TLS_NEWCTX , & val ) != LDAP_OPT_SUCCESS ) {
996+ php_error_docref (NULL , E_WARNING , "Could not create new security context" );
997+ }
998+ }
999+ #endif
1000+
9901001#ifdef LDAP_API_FEATURE_X_OPENLDAP
9911002 /* ldap_init() is deprecated, use ldap_initialize() instead.
9921003 */
@@ -3696,6 +3707,17 @@ PHP_FUNCTION(ldap_start_tls)
36963707 ld = Z_LDAP_LINK_P (link );
36973708 VERIFY_LDAP_LINK_CONNECTED (ld );
36983709
3710+ #ifdef LDAP_OPT_X_TLS_NEWCTX
3711+ {
3712+ int val = 0 ;
3713+
3714+ /* ensure all pending TLS options are applied in a new context */
3715+ if (ldap_set_option (ld -> link , LDAP_OPT_X_TLS_NEWCTX , & val ) != LDAP_OPT_SUCCESS ) {
3716+ php_error_docref (NULL , E_WARNING , "Could not create new security context" );
3717+ }
3718+ }
3719+ #endif
3720+
36993721 if (((rc = ldap_set_option (ld -> link , LDAP_OPT_PROTOCOL_VERSION , & protocol )) != LDAP_SUCCESS ) ||
37003722 ((rc = ldap_start_tls_s (ld -> link , NULL , NULL )) != LDAP_SUCCESS )
37013723 ) {
0 commit comments