src/java.base/windows/native/libnet/DualStackPlainSocketImpl.c

Print this page




 277     int newfd, port=0;
 278     jobject isa;
 279     jobject ia;
 280     SOCKETADDRESS sa;
 281     int len = sizeof(sa);
 282 
 283     memset((char *)&sa, 0, len);
 284     newfd = accept(fd, (struct sockaddr *)&sa, &len);
 285 
 286     if (newfd == INVALID_SOCKET) {
 287         if (WSAGetLastError() == -2) {
 288             JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
 289                             "operation interrupted");
 290         } else {
 291             JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
 292                             "socket closed");
 293         }
 294         return -1;
 295     }
 296 

 297     ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port);
 298     isa = (*env)->NewObject(env, isa_class, isa_ctorID, ia, port);
 299     (*env)->SetObjectArrayElement(env, isaa, 0, isa);
 300 
 301     return newfd;
 302 }
 303 
 304 /*
 305  * Class:     java_net_DualStackPlainSocketImpl
 306  * Method:    waitForNewConnection
 307  * Signature: (II)V
 308  */
 309 JNIEXPORT void JNICALL Java_java_net_DualStackPlainSocketImpl_waitForNewConnection
 310   (JNIEnv *env, jclass clazz, jint fd, jint timeout) {
 311     int rv;
 312 
 313     rv = NET_Timeout(fd, timeout);
 314     if (rv == 0) {
 315         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException",
 316                         "Accept timed out");




 277     int newfd, port=0;
 278     jobject isa;
 279     jobject ia;
 280     SOCKETADDRESS sa;
 281     int len = sizeof(sa);
 282 
 283     memset((char *)&sa, 0, len);
 284     newfd = accept(fd, (struct sockaddr *)&sa, &len);
 285 
 286     if (newfd == INVALID_SOCKET) {
 287         if (WSAGetLastError() == -2) {
 288             JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
 289                             "operation interrupted");
 290         } else {
 291             JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
 292                             "socket closed");
 293         }
 294         return -1;
 295     }
 296 
 297     SetHandleInformation((HANDLE)(UINT_PTR)newfd, HANDLE_FLAG_INHERIT, FALSE);
 298     ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port);
 299     isa = (*env)->NewObject(env, isa_class, isa_ctorID, ia, port);
 300     (*env)->SetObjectArrayElement(env, isaa, 0, isa);
 301 
 302     return newfd;
 303 }
 304 
 305 /*
 306  * Class:     java_net_DualStackPlainSocketImpl
 307  * Method:    waitForNewConnection
 308  * Signature: (II)V
 309  */
 310 JNIEXPORT void JNICALL Java_java_net_DualStackPlainSocketImpl_waitForNewConnection
 311   (JNIEnv *env, jclass clazz, jint fd, jint timeout) {
 312     int rv;
 313 
 314     rv = NET_Timeout(fd, timeout);
 315     if (rv == 0) {
 316         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketTimeoutException",
 317                         "Accept timed out");