Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
63caf01b
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
63caf01b
编写于
9月 17, 2015
作者:
R
robm
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8129957: Deadlock in JNDI LDAP implementation when closing the LDAP context
Reviewed-by: vinnie
上级
37b07e03
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
57 addition
and
56 deletion
+57
-56
src/share/classes/com/sun/jndi/ldap/LdapClient.java
src/share/classes/com/sun/jndi/ldap/LdapClient.java
+57
-56
未找到文件。
src/share/classes/com/sun/jndi/ldap/LdapClient.java
浏览文件 @
63caf01b
...
...
@@ -494,7 +494,6 @@ public final class LdapClient implements PooledConnection {
*/
void
processConnectionClosure
()
{
// Notify listeners
synchronized
(
unsolicited
)
{
if
(
unsolicited
.
size
()
>
0
)
{
String
msg
;
if
(
conn
!=
null
)
{
...
...
@@ -504,7 +503,6 @@ public final class LdapClient implements PooledConnection {
}
notifyUnsolicited
(
new
CommunicationException
(
msg
));
}
}
// Remove from pool
if
(
pooled
)
{
...
...
@@ -1499,13 +1497,8 @@ public final class LdapClient implements PooledConnection {
if
(
debug
>
0
)
{
System
.
err
.
println
(
"LdapClient.removeUnsolicited"
+
ctx
);
}
synchronized
(
unsolicited
)
{
if
(
unsolicited
.
size
()
==
0
)
{
return
;
}
unsolicited
.
removeElement
(
ctx
);
}
}
// NOTE: Cannot be synchronized because this is called asynchronously
// by the reader thread in Connection. Instead, sync on 'unsolicited' Vector.
...
...
@@ -1513,7 +1506,6 @@ public final class LdapClient implements PooledConnection {
if
(
debug
>
0
)
{
System
.
err
.
println
(
"LdapClient.processUnsolicited"
);
}
synchronized
(
unsolicited
)
{
try
{
// Parse the response
LdapResult
res
=
new
LdapResult
();
...
...
@@ -1532,11 +1524,17 @@ public final class LdapClient implements PooledConnection {
forceClose
(
pooled
);
}
LdapCtx
first
=
null
;
UnsolicitedNotification
notice
=
null
;
synchronized
(
unsolicited
)
{
if
(
unsolicited
.
size
()
>
0
)
{
first
=
unsolicited
.
elementAt
(
0
);
// Create an UnsolicitedNotification using the parsed data
// Need a 'ctx' object because we want to use the context's
// list of provider control factories.
UnsolicitedNotification
notice
=
new
UnsolicitedResponseImpl
(
notice
=
new
UnsolicitedResponseImpl
(
res
.
extensionId
,
res
.
extensionValue
,
res
.
referrals
,
...
...
@@ -1544,9 +1542,12 @@ public final class LdapClient implements PooledConnection {
res
.
errorMessage
,
res
.
matchedDN
,
(
res
.
resControls
!=
null
)
?
unsolicited
.
elementAt
(
0
)
.
convertControls
(
res
.
resControls
)
:
first
.
convertControls
(
res
.
resControls
)
:
null
);
}
}
if
(
notice
!=
null
)
{
// Fire UnsolicitedNotification events to listeners
notifyUnsolicited
(
notice
);
...
...
@@ -1558,9 +1559,6 @@ public final class LdapClient implements PooledConnection {
}
}
}
catch
(
IOException
e
)
{
if
(
unsolicited
.
size
()
==
0
)
return
;
// no one registered; ignore
NamingException
ne
=
new
CommunicationException
(
"Problem parsing unsolicited notification"
);
ne
.
setRootCause
(
e
);
...
...
@@ -1571,17 +1569,20 @@ public final class LdapClient implements PooledConnection {
notifyUnsolicited
(
e
);
}
}
}
private
void
notifyUnsolicited
(
Object
e
)
{
for
(
int
i
=
0
;
i
<
unsolicited
.
size
();
i
++)
{
unsolicited
.
elementAt
(
i
).
fireUnsolicited
(
e
);
}
Vector
<
LdapCtx
>
unsolicitedCopy
;
synchronized
(
unsolicited
)
{
unsolicitedCopy
=
new
Vector
<>(
unsolicited
);
if
(
e
instanceof
NamingException
)
{
unsolicited
.
setSize
(
0
);
// no more listeners after exception
}
}
for
(
int
i
=
0
;
i
<
unsolicitedCopy
.
size
();
i
++)
{
unsolicitedCopy
.
elementAt
(
i
).
fireUnsolicited
(
e
);
}
}
private
void
ensureOpen
()
throws
IOException
{
if
(
conn
==
null
||
!
conn
.
useable
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录