提交 4fa7d03d 编写于 作者: K khazra

7096436: (sc) SocketChannel.connect fails on Windows 8 when channel configured non-blocking

Summary: Set localAddress only when connection is established
Reviewed-by: alanb
上级 f6b86d84
......@@ -629,17 +629,6 @@ class SocketChannelImpl
break;
}
synchronized (stateLock) {
if (isOpen() && (localAddress == null) ||
((InetSocketAddress)localAddress)
.getAddress().isAnyLocalAddress())
{
// Socket was not bound before connecting or
// Socket was bound with an "anyLocalAddress"
localAddress = Net.localAddress(fd);
}
}
} finally {
readerCleanup();
end((n > 0) || (n == IOStatus.UNAVAILABLE));
......@@ -659,6 +648,8 @@ class SocketChannelImpl
// Connection succeeded; disallow further
// invocation
state = ST_CONNECTED;
if (isOpen())
localAddress = Net.localAddress(fd);
return true;
}
// If nonblocking and no exception then connection
......@@ -747,6 +738,8 @@ class SocketChannelImpl
if (n > 0) {
synchronized (stateLock) {
state = ST_CONNECTED;
if (isOpen())
localAddress = Net.localAddress(fd);
}
return true;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册