Loading core/java/android/net/Network.java +15 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.system.ErrnoException; import android.system.Os; Loading Loading @@ -380,7 +381,13 @@ public class Network implements Parcelable { // Query a property of the underlying socket to ensure that the socket's file descriptor // exists, is available to bind to a network and is not closed. socket.getReuseAddress(); bindSocket(socket.getFileDescriptor$()); final ParcelFileDescriptor pfd = ParcelFileDescriptor.fromDatagramSocket(socket); bindSocket(pfd.getFileDescriptor()); // ParcelFileDescriptor.fromSocket() creates a dup of the original fd. The original and the // dup share the underlying socket in the kernel. The socket is never truly closed until the // last fd pointing to the socket being closed. So close the dup one after binding the // socket to control the lifetime of the dup fd. pfd.close(); } /** Loading @@ -392,7 +399,13 @@ public class Network implements Parcelable { // Query a property of the underlying socket to ensure that the socket's file descriptor // exists, is available to bind to a network and is not closed. socket.getReuseAddress(); bindSocket(socket.getFileDescriptor$()); final ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); bindSocket(pfd.getFileDescriptor()); // ParcelFileDescriptor.fromSocket() creates a dup of the original fd. The original and the // dup share the underlying socket in the kernel. The socket is never truly closed until the // last fd pointing to the socket being closed. So close the dup one after binding the // socket to control the lifetime of the dup fd. pfd.close(); } /** Loading Loading
core/java/android/net/Network.java +15 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.annotation.SystemApi; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.system.ErrnoException; import android.system.Os; Loading Loading @@ -380,7 +381,13 @@ public class Network implements Parcelable { // Query a property of the underlying socket to ensure that the socket's file descriptor // exists, is available to bind to a network and is not closed. socket.getReuseAddress(); bindSocket(socket.getFileDescriptor$()); final ParcelFileDescriptor pfd = ParcelFileDescriptor.fromDatagramSocket(socket); bindSocket(pfd.getFileDescriptor()); // ParcelFileDescriptor.fromSocket() creates a dup of the original fd. The original and the // dup share the underlying socket in the kernel. The socket is never truly closed until the // last fd pointing to the socket being closed. So close the dup one after binding the // socket to control the lifetime of the dup fd. pfd.close(); } /** Loading @@ -392,7 +399,13 @@ public class Network implements Parcelable { // Query a property of the underlying socket to ensure that the socket's file descriptor // exists, is available to bind to a network and is not closed. socket.getReuseAddress(); bindSocket(socket.getFileDescriptor$()); final ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); bindSocket(pfd.getFileDescriptor()); // ParcelFileDescriptor.fromSocket() creates a dup of the original fd. The original and the // dup share the underlying socket in the kernel. The socket is never truly closed until the // last fd pointing to the socket being closed. So close the dup one after binding the // socket to control the lifetime of the dup fd. pfd.close(); } /** Loading