Force creation of Socket upon Transform application
This change forces Socket and DatagramSocket to populate the SocketImpl, ensuring that the socket file descriptor can be retrieved when applying Transport mode Transforms This is done by calling getSoLinger(), triggering a getImpl(), which triggers setImpl() if needed. Bug: 77491294 Test: Added tests in IpSecManagerTest, ran on walleye Change-Id: I40da08b031357710eb794e0f866aec5660c79594
This commit is contained in:
@@ -37,6 +37,7 @@ import android.system.Os;
|
|||||||
import com.android.server.IpSecService;
|
import com.android.server.IpSecService;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.net.Socket;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -187,6 +188,33 @@ public class IpSecManagerTest {
|
|||||||
verify(mMockIpSecService).closeUdpEncapsulationSocket(DUMMY_RESOURCE_ID);
|
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
|
@Test
|
||||||
public void testOpenEncapsulationSocketOnRandomPort() throws Exception {
|
public void testOpenEncapsulationSocketOnRandomPort() throws Exception {
|
||||||
IpSecUdpEncapResponse udpEncapResp =
|
IpSecUdpEncapResponse udpEncapResp =
|
||||||
|
|||||||
Reference in New Issue
Block a user