< prev index next >

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

Print this page
rev 55750 : UDS support, temporary commit

@@ -55,35 +55,29 @@
     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)) {
-            remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
+            // 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_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) {
< prev index next >