Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d74a971f authored by Benedict Wong's avatar Benedict Wong Committed by Android (Google) Code Review
Browse files

Merge "Force creation of Socket upon Transform application" into pi-dev

parents 69ade357 5e9b4c7c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -337,6 +337,9 @@ public final class IpSecManager {
     */
    public void applyTransportModeTransform(@NonNull Socket socket,
            @PolicyDirection int direction, @NonNull IpSecTransform transform) throws IOException {
        // Ensure creation of FD. See b/77548890 for more details.
        socket.getSoLinger();

        applyTransportModeTransform(socket.getFileDescriptor$(), direction, transform);
    }

@@ -441,6 +444,9 @@ public final class IpSecManager {
     * @throws IOException indicating that the transform could not be removed from the socket
     */
    public void removeTransportModeTransforms(@NonNull Socket socket) throws IOException {
        // Ensure creation of FD. See b/77548890 for more details.
        socket.getSoLinger();

        removeTransportModeTransforms(socket.getFileDescriptor$());
    }

+28 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.system.Os;
import com.android.server.IpSecService;

import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Before;
@@ -194,6 +195,33 @@ public class IpSecManagerTest {
        verify(mMockIpSecService).closeUdpEncapsulationSocket(DUMMY_RESOURCE_ID);
    }

    @Test
    public void testApplyTransportModeTransformEnsuresSocketCreation() throws Exception {
        Socket socket = new Socket();
        IpSecConfig dummyConfig = new IpSecConfig();
        IpSecTransform dummyTransform = new IpSecTransform(null, dummyConfig);

        // Even if underlying SocketImpl is not initalized, this should force the init, and
        // thereby succeed.
        mIpSecManager.applyTransportModeTransform(
                socket, IpSecManager.DIRECTION_IN, dummyTransform);

        // Check to make sure the FileDescriptor is non-null
        assertNotNull(socket.getFileDescriptor$());
    }

    @Test
    public void testRemoveTransportModeTransformsForcesSocketCreation() throws Exception {
        Socket socket = new Socket();

        // Even if underlying SocketImpl is not initalized, this should force the init, and
        // thereby succeed.
        mIpSecManager.removeTransportModeTransforms(socket);

        // Check to make sure the FileDescriptor is non-null
        assertNotNull(socket.getFileDescriptor$());
    }

    @Test
    public void testOpenEncapsulationSocketOnRandomPort() throws Exception {
        IpSecUdpEncapResponse udpEncapResp =