< prev index next >
src/java.base/unix/native/libnet/PlainSocketImpl.c
Print this page
@@ -41,11 +41,10 @@
jfieldID psi_ipaddressID;
jfieldID psi_portID;
jfieldID psi_localportID;
jfieldID psi_timeoutID;
jfieldID psi_trafficClassID;
-jfieldID psi_serverSocketID;
jfieldID psi_fdLockID;
jfieldID psi_closePendingID;
extern void setDefaultScopeID(JNIEnv *env, struct sockaddr *him);
@@ -126,13 +125,10 @@
CHECK_NULL(psi_localportID);
psi_timeoutID = (*env)->GetFieldID(env, cls, "timeout", "I");
CHECK_NULL(psi_timeoutID);
psi_trafficClassID = (*env)->GetFieldID(env, cls, "trafficClass", "I");
CHECK_NULL(psi_trafficClassID);
- psi_serverSocketID = (*env)->GetFieldID(env, cls, "serverSocket",
- "Ljava/net/ServerSocket;");
- CHECK_NULL(psi_serverSocketID);
psi_fdLockID = (*env)->GetFieldID(env, cls, "fdLock",
"Ljava/lang/Object;");
CHECK_NULL(psi_fdLockID);
psi_closePendingID = (*env)->GetFieldID(env, cls, "closePending", "Z");
CHECK_NULL(psi_closePendingID);
@@ -154,14 +150,14 @@
static jclass socketExceptionCls;
/*
* Class: java_net_PlainSocketImpl
* Method: socketCreate
- * Signature: (Z)V */
+ * Signature: (ZZ)V */
JNIEXPORT void JNICALL
Java_java_net_PlainSocketImpl_socketCreate(JNIEnv *env, jobject this,
- jboolean stream) {
+ jboolean stream, jboolean server) {
jobject fdObj, ssObj;
int fd;
int type = (stream ? SOCK_STREAM : SOCK_DGRAM);
int domain = ipv6_available() ? AF_INET6 : AF_INET;
@@ -200,12 +196,11 @@
/*
* If this is a server socket then enable SO_REUSEADDR
* automatically and set to non blocking.
*/
- ssObj = (*env)->GetObjectField(env, this, psi_serverSocketID);
- if (ssObj != NULL) {
+ if (server) {
int arg = 1;
SET_NONBLOCKING(fd);
if (NET_SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg,
sizeof(arg)) < 0) {
NET_ThrowNew(env, errno, "cannot set SO_REUSEADDR");
< prev index next >