| Index: ipc/ipc_channel_posix.cc
|
| diff --git a/ipc/ipc_channel_posix.cc b/ipc/ipc_channel_posix.cc
|
| index aac7e795257a4f0933e3ede563b5b989eedd01cd..a76ef8ae0fc88513e9753277310b8646bd50c568 100644
|
| --- a/ipc/ipc_channel_posix.cc
|
| +++ b/ipc/ipc_channel_posix.cc
|
| @@ -247,19 +247,6 @@ bool ChannelPosix::CreatePipe(
|
| if (channel_handle.socket.fd != -1) {
|
| // Case 1 from comment above.
|
| local_pipe.reset(channel_handle.socket.fd);
|
| -#if defined(IPC_USES_READWRITE)
|
| - // Test the socket passed into us to make sure it is nonblocking.
|
| - // We don't want to call read/write on a blocking socket.
|
| - int value = fcntl(local_pipe.get(), F_GETFL);
|
| - if (value == -1) {
|
| - PLOG(ERROR) << "fcntl(F_GETFL) " << pipe_name_;
|
| - return false;
|
| - }
|
| - if (!(value & O_NONBLOCK)) {
|
| - LOG(ERROR) << "Socket " << pipe_name_ << " must be O_NONBLOCK";
|
| - return false;
|
| - }
|
| -#endif // IPC_USES_READWRITE
|
| } else if (mode_ & MODE_NAMED_FLAG) {
|
| #if defined(OS_NACL_NONSFI)
|
| LOG(FATAL)
|
| @@ -333,20 +320,6 @@ bool ChannelPosix::CreatePipe(
|
| }
|
| }
|
|
|
| -#if defined(IPC_USES_READWRITE)
|
| - // Create a dedicated socketpair() for exchanging file descriptors.
|
| - // See comments for IPC_USES_READWRITE for details.
|
| - if (mode_ & MODE_CLIENT_FLAG) {
|
| - int fd_pipe_fd = 1, remote_fd_pipe_fd = -1;
|
| - if (!SocketPair(&fd_pipe_fd, &remote_fd_pipe_fd)) {
|
| - return false;
|
| - }
|
| -
|
| - fd_pipe_.reset(fd_pipe_fd);
|
| - remote_fd_pipe_.reset(remote_fd_pipe_fd);
|
| - }
|
| -#endif // IPC_USES_READWRITE
|
| -
|
| if ((mode_ & MODE_SERVER_FLAG) && (mode_ & MODE_NAMED_FLAG)) {
|
| #if defined(OS_NACL_NONSFI)
|
| LOG(FATAL) << "IPC channels in nacl_helper_nonsfi "
|
| @@ -466,40 +439,11 @@ bool ChannelPosix::ProcessOutgoingMessages() {
|
| // DCHECK_LE above already checks that
|
| // num_fds < kMaxDescriptorsPerMessage so no danger of overflow.
|
| msg->header()->num_fds = static_cast<uint16>(num_fds);
|
| -
|
| -#if defined(IPC_USES_READWRITE)
|
| - if (!IsHelloMessage(*msg)) {
|
| - // Only the Hello message sends the file descriptor with the message.
|
| - // Subsequently, we can send file descriptors on the dedicated
|
| - // fd_pipe_ which makes Seccomp sandbox operation more efficient.
|
| - struct iovec fd_pipe_iov = { const_cast<char *>(""), 1 };
|
| - msgh.msg_iov = &fd_pipe_iov;
|
| - fd_written = fd_pipe_.get();
|
| - bytes_written =
|
| - HANDLE_EINTR(sendmsg(fd_pipe_.get(), &msgh, MSG_DONTWAIT));
|
| - msgh.msg_iov = &iov;
|
| - msgh.msg_controllen = 0;
|
| - if (bytes_written > 0) {
|
| - CloseFileDescriptors(msg);
|
| - }
|
| - }
|
| -#endif // IPC_USES_READWRITE
|
| }
|
|
|
| if (bytes_written == 1) {
|
| fd_written = pipe_.get();
|
| -#if defined(IPC_USES_READWRITE)
|
| - if ((mode_ & MODE_CLIENT_FLAG) && IsHelloMessage(*msg)) {
|
| - DCHECK_EQ(msg->attachment_set()->size(), 1U);
|
| - }
|
| - if (!msgh.msg_controllen) {
|
| - bytes_written =
|
| - HANDLE_EINTR(write(pipe_.get(), out_bytes, amt_to_write));
|
| - } else
|
| -#endif // IPC_USES_READWRITE
|
| - {
|
| - bytes_written = HANDLE_EINTR(sendmsg(pipe_.get(), &msgh, MSG_DONTWAIT));
|
| - }
|
| + bytes_written = HANDLE_EINTR(sendmsg(pipe_.get(), &msgh, MSG_DONTWAIT));
|
| }
|
| if (bytes_written > 0)
|
| CloseFileDescriptors(msg);
|
| @@ -616,10 +560,6 @@ void ChannelPosix::ResetToAcceptingConnectionState() {
|
| read_watcher_.StopWatchingFileDescriptor();
|
| write_watcher_.StopWatchingFileDescriptor();
|
| ResetSafely(&pipe_);
|
| -#if defined(IPC_USES_READWRITE)
|
| - fd_pipe_.reset();
|
| - remote_fd_pipe_.reset();
|
| -#endif // IPC_USES_READWRITE
|
|
|
| while (!output_queue_.empty()) {
|
| Message* m = output_queue_.front();
|
| @@ -798,16 +738,6 @@ void ChannelPosix::QueueHelloMessage() {
|
| if (!msg->WriteInt(GetHelloMessageProcId())) {
|
| NOTREACHED() << "Unable to pickle hello message proc id";
|
| }
|
| -#if defined(IPC_USES_READWRITE)
|
| - scoped_ptr<Message> hello;
|
| - if (remote_fd_pipe_.is_valid()) {
|
| - if (!msg->WriteAttachment(
|
| - new internal::PlatformFileAttachment(remote_fd_pipe_.get()))) {
|
| - NOTREACHED() << "Unable to pickle hello message file descriptors";
|
| - }
|
| - DCHECK_EQ(msg->attachment_set()->size(), 1U);
|
| - }
|
| -#endif // IPC_USES_READWRITE
|
| output_queue_.push(msg.release());
|
| }
|
|
|
| @@ -828,16 +758,9 @@ ChannelPosix::ReadState ChannelPosix::ReadData(
|
|
|
| // recvmsg() returns 0 if the connection has closed or EAGAIN if no data
|
| // is waiting on the pipe.
|
| -#if defined(IPC_USES_READWRITE)
|
| - if (fd_pipe_.is_valid()) {
|
| - *bytes_read = HANDLE_EINTR(read(pipe_.get(), buffer, buffer_len));
|
| - msg.msg_controllen = 0;
|
| - } else
|
| -#endif // IPC_USES_READWRITE
|
| - {
|
| - msg.msg_controllen = sizeof(input_cmsg_buf_);
|
| - *bytes_read = HANDLE_EINTR(recvmsg(pipe_.get(), &msg, MSG_DONTWAIT));
|
| - }
|
| + msg.msg_controllen = sizeof(input_cmsg_buf_);
|
| + *bytes_read = HANDLE_EINTR(recvmsg(pipe_.get(), &msg, MSG_DONTWAIT));
|
| +
|
| if (*bytes_read < 0) {
|
| if (errno == EAGAIN) {
|
| return READ_PENDING;
|
| @@ -868,28 +791,6 @@ ChannelPosix::ReadState ChannelPosix::ReadData(
|
| return READ_SUCCEEDED;
|
| }
|
|
|
| -#if defined(IPC_USES_READWRITE)
|
| -bool ChannelPosix::ReadFileDescriptorsFromFDPipe() {
|
| - char dummy;
|
| - struct iovec fd_pipe_iov = { &dummy, 1 };
|
| -
|
| - struct msghdr msg = { 0 };
|
| - msg.msg_iov = &fd_pipe_iov;
|
| - msg.msg_iovlen = 1;
|
| - msg.msg_control = input_cmsg_buf_;
|
| - msg.msg_controllen = sizeof(input_cmsg_buf_);
|
| - ssize_t bytes_received =
|
| - HANDLE_EINTR(recvmsg(fd_pipe_.get(), &msg, MSG_DONTWAIT));
|
| -
|
| - if (bytes_received != 1)
|
| - return true; // No message waiting.
|
| -
|
| - if (!ExtractFileDescriptorsFromMsghdr(&msg))
|
| - return false;
|
| - return true;
|
| -}
|
| -#endif
|
| -
|
| // On Posix, we need to fix up the file descriptors before the input message
|
| // is dispatched.
|
| //
|
| @@ -905,12 +806,7 @@ bool ChannelPosix::WillDispatchInputMessage(Message* msg) {
|
| if (header_fds > input_fds_.size()) {
|
| // The message has been completely received, but we didn't get
|
| // enough file descriptors.
|
| -#if defined(IPC_USES_READWRITE)
|
| - if (!ReadFileDescriptorsFromFDPipe())
|
| - return false;
|
| - if (header_fds > input_fds_.size())
|
| -#endif // IPC_USES_READWRITE
|
| - error = "Message needs unreceived descriptors";
|
| + error = "Message needs unreceived descriptors";
|
| }
|
|
|
| if (header_fds > MessageAttachmentSet::kMaxDescriptorsPerMessage)
|
| @@ -1017,19 +913,6 @@ void ChannelPosix::HandleInternalMessage(const Message& msg) {
|
| if (!iter.ReadInt(&pid))
|
| NOTREACHED();
|
|
|
| -#if defined(IPC_USES_READWRITE)
|
| - if (mode_ & MODE_SERVER_FLAG) {
|
| - // With IPC_USES_READWRITE, the Hello message from the client to the
|
| - // server also contains the fd_pipe_, which will be used for all
|
| - // subsequent file descriptor passing.
|
| - DCHECK_EQ(msg.attachment_set()->size(), 1U);
|
| - scoped_refptr<MessageAttachment> attachment;
|
| - if (!msg.ReadAttachment(&iter, &attachment)) {
|
| - NOTREACHED();
|
| - }
|
| - fd_pipe_.reset(attachment->TakePlatformFile());
|
| - }
|
| -#endif // IPC_USES_READWRITE
|
| peer_pid_ = pid;
|
| listener()->OnChannelConnected(pid);
|
| break;
|
| @@ -1129,7 +1012,6 @@ std::string Channel::GenerateVerifiedChannelID(const std::string& prefix) {
|
| return id.append(GenerateUniqueRandomChannelID());
|
| }
|
|
|
| -
|
| bool Channel::IsNamedServerInitialized(
|
| const std::string& channel_id) {
|
| return ChannelPosix::IsNamedServerInitialized(channel_id);
|
|
|