OSDN Git Service

Move listen() over to using android.system.Os
authorNeil Fuller <nfuller@google.com>
Fri, 3 Jul 2015 16:58:00 +0000 (17:58 +0100)
committerNeil Fuller <nfuller@google.com>
Fri, 3 Jul 2015 16:58:00 +0000 (17:58 +0100)
Bug: 3106438
Change-Id: I9b4d1d58d84a28828555ae863e86530995191f2c

core/java/android/net/LocalSocketImpl.java
core/jni/android_net_LocalSocketImpl.cpp

index d26e22d..df72da8 100644 (file)
@@ -201,8 +201,6 @@ class LocalSocketImpl
             int namespace) throws IOException;
     private native void bindLocal(FileDescriptor fd, String name, int namespace)
             throws IOException;
-    private native void listen_native(FileDescriptor fd, int backlog)
-            throws IOException;
     private native void shutdown(FileDescriptor fd, boolean shutdownInput);
     private native Credentials getPeerCredentials_native(
             FileDescriptor fd) throws IOException;
@@ -326,8 +324,11 @@ class LocalSocketImpl
         if (fd == null) {
             throw new IOException("socket not created");
         }
-
-        listen_native(fd, backlog);
+        try {
+            Os.listen(fd, backlog);
+        } catch (ErrnoException e) {
+            throw e.rethrowAsIOException();
+        }
     }
 
     /**
index 1f730d7..cf39e66 100644 (file)
@@ -112,27 +112,6 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
     }
 }
 
-/* private native void listen_native(int fd, int backlog) throws IOException; */
-static void
-socket_listen (JNIEnv *env, jobject object, jobject fileDescriptor, jint backlog)
-{
-    int ret;
-    int fd;
-
-    fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
-
-    if (env->ExceptionCheck()) {
-        return;
-    }
-
-    ret = listen(fd, backlog);
-
-    if (ret < 0) {
-        jniThrowIOException(env, errno);
-        return;
-    }
-}
-
 /*    private native FileDescriptor
 **    accept (FileDescriptor fd, LocalSocketImpl s)
 **                                   throws IOException;
@@ -587,7 +566,6 @@ static JNINativeMethod gMethods[] = {
     {"connectLocal", "(Ljava/io/FileDescriptor;Ljava/lang/String;I)V",
                                                 (void*)socket_connect_local},
     {"bindLocal", "(Ljava/io/FileDescriptor;Ljava/lang/String;I)V", (void*)socket_bind_local},
-    {"listen_native", "(Ljava/io/FileDescriptor;I)V", (void*)socket_listen},
     {"accept", "(Ljava/io/FileDescriptor;Landroid/net/LocalSocketImpl;)Ljava/io/FileDescriptor;", (void*)socket_accept},
     {"shutdown", "(Ljava/io/FileDescriptor;Z)V", (void*)socket_shutdown},
     {"read_native", "(Ljava/io/FileDescriptor;)I", (void*) socket_read},