From b31a85addb8bab0ee489b202700aed86dfc580ce Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Wed, 8 Feb 2023 15:03:27 +0900 Subject: [PATCH] Minor simplification to IpSecService#bindToRandomPort. Make the caller pass in localAddr as well. Bug: 259001350 Test: atest FrameworksNetTests Change-Id: I978f0944ac1824169a800bda35a261ed168eeeaa --- service-t/src/com/android/server/IpSecService.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/service-t/src/com/android/server/IpSecService.java b/service-t/src/com/android/server/IpSecService.java index 1a51e91c19..a884840b77 100644 --- a/service-t/src/com/android/server/IpSecService.java +++ b/service-t/src/com/android/server/IpSecService.java @@ -1221,16 +1221,16 @@ public class IpSecService extends IIpSecService.Stub { * and re-binding, during which the system could *technically* hand that port out to someone * else. */ - private int bindToRandomPort(FileDescriptor sockFd, int family) throws IOException { - final InetAddress any = (family == AF_INET6) ? IN6ADDR_ANY : INADDR_ANY; + private int bindToRandomPort(FileDescriptor sockFd, int family, InetAddress localAddr) + throws IOException { for (int i = MAX_PORT_BIND_ATTEMPTS; i > 0; i--) { try { FileDescriptor probeSocket = Os.socket(family, SOCK_DGRAM, IPPROTO_UDP); - Os.bind(probeSocket, any, 0); + Os.bind(probeSocket, localAddr, 0); int port = ((InetSocketAddress) Os.getsockname(probeSocket)).getPort(); Os.close(probeSocket); Log.v(TAG, "Binding to port " + port); - Os.bind(sockFd, any, port); + Os.bind(sockFd, localAddr, port); return port; } catch (ErrnoException e) { // Someone miraculously claimed the port just after we closed probeSocket. @@ -1322,7 +1322,7 @@ public class IpSecService extends IIpSecService.Stub { Log.v(TAG, "Binding to port " + port); Os.bind(pFd.getFileDescriptor(), localAddr, port); } else { - port = bindToRandomPort(pFd.getFileDescriptor(), family); + port = bindToRandomPort(pFd.getFileDescriptor(), family, localAddr); } userRecord.mEncapSocketRecords.put(