diff options
author | 2022-11-15 11:42:34 +0000 | |
---|---|---|
committer | 2022-11-15 11:42:34 +0000 | |
commit | ec020bd54dbb9c619eb11c9751fe597b0abc369a (patch) | |
tree | fc50da84a66752c5c0e94d72ae8cb3e29c5127da | |
parent | c4e1c0b3abdbdebbf64bf0c5697b694de3c61f70 (diff) | |
parent | 440eb8fd17de12a6f5ad9948f7e7a1b129d658f2 (diff) |
Merge "[rpc_binder][test] Merge unixBootstrapFd and socketFd in binderRpcTest" am: a8c0dd747c am: 440eb8fd17
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2301757
Change-Id: I333325d75f5baa72fe89e87c18958b2369154487
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libs/binder/tests/BinderRpcTestServerConfig.aidl | 3 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTest.cpp | 17 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcTestService.cpp | 6 |
3 files changed, 13 insertions, 13 deletions
diff --git a/libs/binder/tests/BinderRpcTestServerConfig.aidl b/libs/binder/tests/BinderRpcTestServerConfig.aidl index aac4b04dae..b2e0ef21c7 100644 --- a/libs/binder/tests/BinderRpcTestServerConfig.aidl +++ b/libs/binder/tests/BinderRpcTestServerConfig.aidl @@ -21,7 +21,6 @@ parcelable BinderRpcTestServerConfig { int rpcSecurity; int serverVersion; int vsockPort; - int unixBootstrapFd; // Inherited from parent - int socketFd; + int socketFd; // Inherited from the parent process. @utf8InCpp String addr; } diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 79bd9d4993..68a827bb3e 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -252,17 +252,19 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc( singleThreaded ? "_single_threaded" : "", noKernel ? "_no_kernel" : ""); - base::unique_fd bootstrapClientFd, bootstrapServerFd, socketFd; - // Do not set O_CLOEXEC, bootstrapServerFd needs to survive fork/exec. - // This is because we cannot pass ParcelFileDescriptor over a pipe. - if (!base::Socketpair(SOCK_STREAM, &bootstrapClientFd, &bootstrapServerFd)) { - int savedErrno = errno; - LOG(FATAL) << "Failed socketpair(): " << strerror(savedErrno); - } + base::unique_fd bootstrapClientFd, socketFd; + auto addr = allocateSocketAddress(); // Initializes the socket before the fork/exec. if (socketType == SocketType::UNIX_RAW) { socketFd = initUnixSocket(addr); + } else if (socketType == SocketType::UNIX_BOOTSTRAP) { + // Do not set O_CLOEXEC, bootstrapServerFd needs to survive fork/exec. + // This is because we cannot pass ParcelFileDescriptor over a pipe. + if (!base::Socketpair(SOCK_STREAM, &bootstrapClientFd, &socketFd)) { + int savedErrno = errno; + LOG(FATAL) << "Failed socketpair(): " << strerror(savedErrno); + } } auto ret = std::make_unique<LinuxProcessSession>( @@ -280,7 +282,6 @@ std::unique_ptr<ProcessSession> BinderRpc::createRpcTestSocketServerProcessEtc( serverConfig.serverVersion = serverVersion; serverConfig.vsockPort = allocateVsockPort(); serverConfig.addr = addr; - serverConfig.unixBootstrapFd = bootstrapServerFd.get(); serverConfig.socketFd = socketFd.get(); for (auto mode : options.serverSupportedFileDescriptorTransportModes) { serverConfig.serverSupportedFileDescriptorTransportModes.push_back( diff --git a/libs/binder/tests/binderRpcTestService.cpp b/libs/binder/tests/binderRpcTestService.cpp index cc40995a52..995e761ec6 100644 --- a/libs/binder/tests/binderRpcTestService.cpp +++ b/libs/binder/tests/binderRpcTestService.cpp @@ -42,7 +42,7 @@ int main(int argc, const char* argv[]) { server->setSupportedFileDescriptorTransportModes(serverSupportedFileDescriptorTransportModes); unsigned int outPort = 0; - base::unique_fd unixBootstrapFd(serverConfig.unixBootstrapFd); + base::unique_fd socketFd(serverConfig.socketFd); switch (socketType) { case SocketType::PRECONNECTED: @@ -52,10 +52,10 @@ int main(int argc, const char* argv[]) { << serverConfig.addr; break; case SocketType::UNIX_BOOTSTRAP: - CHECK_EQ(OK, server->setupUnixDomainSocketBootstrapServer(std::move(unixBootstrapFd))); + CHECK_EQ(OK, server->setupUnixDomainSocketBootstrapServer(std::move(socketFd))); break; case SocketType::UNIX_RAW: - CHECK_EQ(OK, server->setupRawSocketServer(base::unique_fd(serverConfig.socketFd))); + CHECK_EQ(OK, server->setupRawSocketServer(std::move(socketFd))); break; case SocketType::VSOCK: CHECK_EQ(OK, server->setupVsockServer(serverConfig.vsockPort)); |