1 Star 0 Fork 41

xh / openldap

forked from src-openEuler / openldap 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
bugfix-openldap-temporary-ssl-thr-init-race.patch 881 Bytes
一键复制 编辑 原始数据 按行查看 历史
Anonymous_Z 提交于 2019-12-29 17:30 . init
diff --git a/libraries/libldap/tls2.c b/libraries/libldap/tls2.c
index d25c190..94399d7 100644
--- a/libraries/libldap/tls2.c
+++ b/libraries/libldap/tls2.c
@@ -149,6 +149,9 @@ ldap_pvt_tls_destroy( void )
tls_imp->ti_tls_destroy();
}
+#ifdef LDAP_R_COMPILE
+static pthread_once_t tlsm_initialized = PTHREAD_ONCE_INIT;
+#endif
/*
* Initialize a particular TLS implementation.
* Called once per implementation.
@@ -158,6 +161,10 @@ tls_init(tls_impl *impl )
{
static int tls_initialized = 0;
+#ifdef LDAP_R_COMPILE
+ (void)pthread_once(&tlsm_initialized, impl->ti_thr_init);
+#endif
+
if ( !tls_initialized++ ) {
#ifdef LDAP_R_COMPILE
ldap_pvt_thread_mutex_init( &tls_def_ctx_mutex );
@@ -166,9 +173,6 @@ tls_init(tls_impl *impl )
if ( impl->ti_inited++ ) return 0;
-#ifdef LDAP_R_COMPILE
- impl->ti_thr_init();
-#endif
return impl->ti_tls_init();
}
1
https://gitee.com/xinghe_1/openldap.git
git@gitee.com:xinghe_1/openldap.git
xinghe_1
openldap
openldap
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891