| Index: ipc/ipc_channel_posix.h
|
| diff --git a/ipc/ipc_channel_posix.h b/ipc/ipc_channel_posix.h
|
| index 645a1303713116f188b037c5f537bee272444607..1e587c13eb0d02e8737db4d6c088659356656e3e 100644
|
| --- a/ipc/ipc_channel_posix.h
|
| +++ b/ipc/ipc_channel_posix.h
|
| @@ -10,6 +10,7 @@
|
| #include <sys/socket.h> // for CMSG macros
|
|
|
| #include <queue>
|
| +#include <set>
|
| #include <string>
|
| #include <vector>
|
|
|
| @@ -80,6 +81,8 @@ class Channel::ChannelImpl : public internal::ChannelReader,
|
| void ClosePipeOnError();
|
| int GetHelloMessageProcId();
|
| void QueueHelloMessage();
|
| + void CloseFileDescriptors(Message* msg);
|
| + void QueueCloseFDMessage(int fd, int hops);
|
|
|
| // ChannelReader implementation.
|
| virtual ReadState ReadData(char* buffer,
|
| @@ -87,7 +90,7 @@ class Channel::ChannelImpl : public internal::ChannelReader,
|
| int* bytes_read) OVERRIDE;
|
| virtual bool WillDispatchInputMessage(Message* msg) OVERRIDE;
|
| virtual bool DidEmptyInputBuffers() OVERRIDE;
|
| - virtual void HandleHelloMessage(const Message& msg) OVERRIDE;
|
| + virtual void HandleInternalMessage(const Message& msg) OVERRIDE;
|
|
|
| #if defined(IPC_USES_READWRITE)
|
| // Reads the next message from the fd_pipe_ and appends them to the
|
| @@ -184,6 +187,13 @@ class Channel::ChannelImpl : public internal::ChannelReader,
|
| // implementation!
|
| std::vector<int> input_fds_;
|
|
|
| +#if defined(OS_MACOSX)
|
| + // On OSX, sent FDs must not be closed until we get an ack.
|
| + // Keep track of sent FDs here to make sure the remote is not
|
| + // trying to bamboozle us.
|
| + std::set<int> fds_to_close_;
|
| +#endif
|
| +
|
| // True if we are responsible for unlinking the unix domain socket file.
|
| bool must_unlink_;
|
|
|
|
|