Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
78d5bf60
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看板
提交
78d5bf60
编写于
5月 30, 2015
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7011441: jndi/ldap/Connection.java needs to avoid spurious wakeup
Reviewed-by: dholmes
上级
7beb1017
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
6 deletion
+15
-6
src/share/classes/com/sun/jndi/ldap/Connection.java
src/share/classes/com/sun/jndi/ldap/Connection.java
+15
-6
未找到文件。
src/share/classes/com/sun/jndi/ldap/Connection.java
浏览文件 @
78d5bf60
...
@@ -439,9 +439,14 @@ public final class Connection implements Runnable {
...
@@ -439,9 +439,14 @@ public final class Connection implements Runnable {
BerDecoder
readReply
(
LdapRequest
ldr
)
BerDecoder
readReply
(
LdapRequest
ldr
)
throws
IOException
,
NamingException
{
throws
IOException
,
NamingException
{
BerDecoder
rber
;
BerDecoder
rber
;
boolean
waited
=
false
;
while
(((
rber
=
ldr
.
getReplyBer
())
==
null
)
&&
!
waited
)
{
// Track down elapsed time to workaround spurious wakeups
long
elapsedMilli
=
0
;
long
elapsedNano
=
0
;
while
(((
rber
=
ldr
.
getReplyBer
())
==
null
)
&&
(
readTimeout
<=
0
||
elapsedMilli
<
readTimeout
))
{
try
{
try
{
// If socket closed, don't even try
// If socket closed, don't even try
synchronized
(
this
)
{
synchronized
(
this
)
{
...
@@ -455,11 +460,15 @@ public final class Connection implements Runnable {
...
@@ -455,11 +460,15 @@ public final class Connection implements Runnable {
rber
=
ldr
.
getReplyBer
();
rber
=
ldr
.
getReplyBer
();
if
(
rber
==
null
)
{
if
(
rber
==
null
)
{
if
(
readTimeout
>
0
)
{
// Socket read timeout is specified
if
(
readTimeout
>
0
)
{
// Socket read timeout is specified
long
beginNano
=
System
.
nanoTime
();
// will be woken up before readTimeout
only
if reply is
// will be woken up before readTimeout if reply is
// available
// available
ldr
.
wait
(
readTimeout
);
ldr
.
wait
(
readTimeout
-
elapsedMilli
);
waited
=
true
;
elapsedNano
+=
(
System
.
nanoTime
()
-
beginNano
);
elapsedMilli
+=
elapsedNano
/
1000_000
;
elapsedNano
%=
1000_000
;
}
else
{
}
else
{
// no timeout is set so we wait infinitely until
// no timeout is set so we wait infinitely until
// a response is received
// a response is received
...
@@ -476,7 +485,7 @@ public final class Connection implements Runnable {
...
@@ -476,7 +485,7 @@ public final class Connection implements Runnable {
}
}
}
}
if
((
rber
==
null
)
&&
waited
)
{
if
((
rber
==
null
)
&&
(
elapsedMilli
>=
readTimeout
)
)
{
abandonRequest
(
ldr
,
null
);
abandonRequest
(
ldr
,
null
);
throw
new
NamingException
(
"LDAP response read timed out, timeout used:"
throw
new
NamingException
(
"LDAP response read timed out, timeout used:"
+
readTimeout
+
"ms."
);
+
readTimeout
+
"ms."
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录