From 69a0c998716f736d3a55dd1997d65b377babd8dd Mon Sep 17 00:00:00 2001 From: Frederick Mayle Date: Thu, 26 May 2022 20:38:39 +0000 Subject: binder: Add FD support to RPC Binder Bug: 185909244 Test: TH Change-Id: Ic4fc1b1edfe9d69984e785553cd1aaca97a07da3 --- libs/binder/RpcSession.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'libs/binder/RpcSession.cpp') diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp index 7ba08edec4..41842a7d84 100644 --- a/libs/binder/RpcSession.cpp +++ b/libs/binder/RpcSession.cpp @@ -129,6 +129,14 @@ std::optional RpcSession::getProtocolVersion() { return mProtocolVersion; } +void RpcSession::setFileDescriptorTransportMode(FileDescriptorTransportMode mode) { + mFileDescriptorTransportMode = mode; +} + +RpcSession::FileDescriptorTransportMode RpcSession::getFileDescriptorTransportMode() { + return mFileDescriptorTransportMode; +} + status_t RpcSession::setupUnixDomainClient(const char* path) { return setupSocketClient(UnixSocketAddress(path)); } @@ -606,6 +614,7 @@ status_t RpcSession::initAndAddConnection(unique_fd fd, const std::vector(mFileDescriptorTransportMode), .sessionIdSize = static_cast(sessionId.size()), }; @@ -614,8 +623,8 @@ status_t RpcSession::initAndAddConnection(unique_fd fd, const std::vectorinterruptableWriteFully(mShutdownTrigger.get(), &headerIov, 1, std::nullopt); + auto sendHeaderStatus = server->interruptableWriteFully(mShutdownTrigger.get(), &headerIov, 1, + std::nullopt, nullptr); if (sendHeaderStatus != OK) { ALOGE("Could not write connection header to socket: %s", statusToString(sendHeaderStatus).c_str()); @@ -625,8 +634,9 @@ status_t RpcSession::initAndAddConnection(unique_fd fd, const std::vector 0) { iovec sessionIov{const_cast(static_cast(sessionId.data())), sessionId.size()}; - auto sendSessionIdStatus = server->interruptableWriteFully(mShutdownTrigger.get(), - &sessionIov, 1, std::nullopt); + auto sendSessionIdStatus = + server->interruptableWriteFully(mShutdownTrigger.get(), &sessionIov, 1, + std::nullopt, nullptr); if (sendSessionIdStatus != OK) { ALOGE("Could not write session ID ('%s') to socket: %s", base::HexString(sessionId.data(), sessionId.size()).c_str(), -- cgit v1.2.3-59-g8ed1b