< 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 >