< prev index next >

src/java.base/windows/native/libnio/ch/Net.c

Print this page

        

*** 32,41 **** --- 32,42 ---- #include "jlong.h" #include "nio.h" #include "nio_util.h" #include "net_util.h" + #include "java_net_InetAddress.h" #include "sun_nio_ch_Net.h" #include "sun_nio_ch_PollArrayWrapper.h" /** * Definitions to allow for building with older SDK include files.
*** 313,334 **** return IOS_THROWN; } return NET_GetPortFromSockaddr(&sa); } JNIEXPORT jobject JNICALL Java_sun_nio_ch_Net_localInetAddress(JNIEnv *env, jclass clazz, jobject fdo) { ! SOCKETADDRESS sa; int sa_len = sizeof(sa); int port; if (getsockname(fdval(env, fdo), &sa.sa, &sa_len) == SOCKET_ERROR) { NET_ThrowNew(env, WSAGetLastError(), "getsockname"); return NULL; } ! return NET_SockaddrToInetAddress(env, &sa, &port); } JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_remotePort(JNIEnv *env, jclass clazz, jobject fdo) { --- 314,345 ---- return IOS_THROWN; } return NET_GetPortFromSockaddr(&sa); } + /* only used here so as not to make SOCKETADDRESS too large + * and some buggy usages elsewhere + */ + typedef union { + struct sockaddr sa; + struct sockaddr_in sa4; + struct sockaddr_in6 sa6; + struct sockaddr_un saun; + } sockaddrall; + JNIEXPORT jobject JNICALL Java_sun_nio_ch_Net_localInetAddress(JNIEnv *env, jclass clazz, jobject fdo) { ! sockaddrall sa; int sa_len = sizeof(sa); int port; if (getsockname(fdval(env, fdo), &sa.sa, &sa_len) == SOCKET_ERROR) { NET_ThrowNew(env, WSAGetLastError(), "getsockname"); return NULL; } ! return NET_SockaddrToInetAddress(env, (SOCKETADDRESS *)&sa, &port); } JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_remotePort(JNIEnv *env, jclass clazz, jobject fdo) {
*** 347,365 **** } JNIEXPORT jobject JNICALL Java_sun_nio_ch_Net_remoteInetAddress(JNIEnv *env, jclass clazz, jobject fdo) { ! SOCKETADDRESS sa; int sa_len = sizeof(sa); int port; if (getpeername(fdval(env, fdo), &sa.sa, &sa_len) == SOCKET_ERROR) { NET_ThrowNew(env, WSAGetLastError(), "getsockname"); return NULL; } ! return NET_SockaddrToInetAddress(env, &sa, &port); } JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_getIntOption0(JNIEnv *env, jclass clazz, jobject fdo, jboolean mayNeedConversion, jint level, jint opt) --- 358,376 ---- } JNIEXPORT jobject JNICALL Java_sun_nio_ch_Net_remoteInetAddress(JNIEnv *env, jclass clazz, jobject fdo) { ! sockaddrall sa; int sa_len = sizeof(sa); int port; if (getpeername(fdval(env, fdo), &sa.sa, &sa_len) == SOCKET_ERROR) { NET_ThrowNew(env, WSAGetLastError(), "getsockname"); return NULL; } ! return NET_SockaddrToInetAddress(env, (SOCKETADDRESS *)&sa, &port); } JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_getIntOption0(JNIEnv *env, jclass clazz, jobject fdo, jboolean mayNeedConversion, jint level, jint opt)
< prev index next >