You need to sign in or sign up before continuing.
提交 cf0152b5 编写于 作者: M michaelm

6739920: java 6u4~ use larger C heap if there are many threads

Reviewed-by: chegar
上级 ee972fce
......@@ -308,6 +308,12 @@ abstract class AbstractPlainSocketImpl extends SocketImpl
FileDescriptor fd = acquireFD();
try {
socketConnect(address, port, timeout);
/* socket may have been closed during poll/select */
synchronized (fdLock) {
if (closePending) {
throw new SocketException ("Socket closed");
}
}
// If we have a ref. to the Socket, then sets the flags
// created, bound & connected to true.
// This is normally done in Socket.connect() but some
......
......@@ -491,27 +491,6 @@ Java_java_net_PlainSocketImpl_socketConnect(JNIEnv *env, jobject this,
return;
}
/*
* The socket may have been closed (dup'ed) while we were
* poll/select. In that case SO_ERROR will return 0 making
* it appear that the connection has been established.
* To avoid any race conditions we therefore grab the
* fd lock, check if the socket has been closed, and
* set the various fields whilst holding the lock
*/
fdLock = (*env)->GetObjectField(env, this, psi_fdLockID);
(*env)->MonitorEnter(env, fdLock);
if ((*env)->GetBooleanField(env, this, psi_closePendingID)) {
/* release fdLock */
(*env)->MonitorExit(env, fdLock);
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
"Socket closed");
return;
}
(*env)->SetIntField(env, fdObj, IO_fd_fdID, fd);
/* set the remote peer address and port */
......@@ -536,11 +515,6 @@ Java_java_net_PlainSocketImpl_socketConnect(JNIEnv *env, jobject this,
(*env)->SetIntField(env, this, psi_localportID, localport);
}
}
/*
* Finally release fdLock
*/
(*env)->MonitorExit(env, fdLock);
}
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册