< prev index next >

src/java.base/unix/native/libnio/ch/InheritedChannel.c

Print this page
rev 55750 : UDS support, temporary commit

*** 55,89 **** socklen_t len = sizeof(SOCKETADDRESS); jobject remote_ia = NULL; jint remote_port; if (getpeername(fd, &sa.sa, &len) == 0) { if (matchFamily(&sa)) { ! remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); } } return remote_ia; } JNIEXPORT jint JNICALL - Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd) - { - SOCKETADDRESS sa; - socklen_t len = sizeof(SOCKETADDRESS); - jint remote_port = -1; - - if (getpeername(fd, &sa.sa, &len) == 0) { - if (matchFamily(&sa)) { - NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); - } - } - - return remote_port; - } - - JNIEXPORT jint JNICALL Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd) { int sotype; socklen_t arglen = sizeof(sotype); if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) { --- 55,83 ---- socklen_t len = sizeof(SOCKETADDRESS); jobject remote_ia = NULL; jint remote_port; if (getpeername(fd, &sa.sa, &len) == 0) { + // TODO: rename remote_ia variable and matchFamily method if (matchFamily(&sa)) { ! // TODO: move to some common function ! jobject inetAddress = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); ! jclass isa_class = (*env)->FindClass(env, "java/net/InetSocketAddress"); ! jmethodID isa_ctor = (*env)->GetMethodID(env, isa_class, "<init>", "(Ljava/net/InetAddress;I)V"); ! remote_ia = (*env)->NewObject(env, isa_class, isa_ctor, inetAddress, remote_port); ! } else if (sa.sa.sa_family == AF_UNIX) { ! // TODO: move to some common function ! jclass usa_class = (*env)->FindClass(env, "java/net/UnixSocketAddress"); ! jmethodID usa_ctor = (*env)->GetMethodID(env, usa_class, "<init>", "()V"); ! remote_ia = (*env)->NewObject(env, usa_class, usa_ctor); } } return remote_ia; } JNIEXPORT jint JNICALL Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd) { int sotype; socklen_t arglen = sizeof(sotype); if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) {
< prev index next >