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");
|