| Index: base/posix/unix_domain_socket_linux_unittest.cc
|
| diff --git a/base/posix/unix_domain_socket_linux_unittest.cc b/base/posix/unix_domain_socket_linux_unittest.cc
|
| index d3082d315713d6906da5ed9dbd4a06b2f29e5a57..7b2e2af23328fb8184b024afcfaf44d6f4c0cc5c 100644
|
| --- a/base/posix/unix_domain_socket_linux_unittest.cc
|
| +++ b/base/posix/unix_domain_socket_linux_unittest.cc
|
| @@ -134,6 +134,28 @@ TEST(UnixDomainSocketTest, RecvPidWithMaxDescriptors) {
|
| ASSERT_EQ(getpid(), sender_pid);
|
| }
|
|
|
| +// Check that RecvMsgWithPid doesn't DCHECK fail when reading EOF from a
|
| +// disconnected socket.
|
| +TEST(UnixDomianSocketTest, RecvPidDisconnectedSocket) {
|
| + int fds[2];
|
| + ASSERT_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
|
| + base::ScopedFD recv_sock(fds[0]);
|
| + base::ScopedFD send_sock(fds[1]);
|
| +
|
| + ASSERT_TRUE(UnixDomainSocket::EnableReceiveProcessId(recv_sock.get()));
|
| +
|
| + send_sock.reset();
|
| +
|
| + char ch;
|
| + base::ProcessId sender_pid;
|
| + ScopedVector<base::ScopedFD> recv_fds;
|
| + const ssize_t nread = UnixDomainSocket::RecvMsgWithPid(
|
| + recv_sock.get(), &ch, sizeof(ch), &recv_fds, &sender_pid);
|
| + ASSERT_EQ(0, nread);
|
| + ASSERT_EQ(-1, sender_pid);
|
| + ASSERT_EQ(0U, recv_fds.size());
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace base
|
|
|