| Index: ipc/ipc_channel_posix.cc
|
| diff --git a/ipc/ipc_channel_posix.cc b/ipc/ipc_channel_posix.cc
|
| index 878853290016620a1276ce2707ed52b8a7fa7f9b..e539d4f929caa746709b81b996c2e5e99bae71d2 100644
|
| --- a/ipc/ipc_channel_posix.cc
|
| +++ b/ipc/ipc_channel_posix.cc
|
| @@ -31,6 +31,7 @@
|
| #include "base/posix/global_descriptors.h"
|
| #include "base/process/process_handle.h"
|
| #include "base/rand_util.h"
|
| +#include "base/run_loop.h"
|
| #include "base/stl_util.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/synchronization/lock.h"
|
| @@ -327,7 +328,7 @@ bool Channel::ChannelImpl::CreatePipe(
|
|
|
| bool Channel::ChannelImpl::Connect() {
|
| if (server_listen_pipe_ == -1 && pipe_ == -1) {
|
| - DLOG(INFO) << "Channel creation failed: " << pipe_name_;
|
| + DLOG(WARNING) << "Channel creation failed: " << pipe_name_;
|
| return false;
|
| }
|
|
|
| @@ -515,6 +516,9 @@ bool Channel::ChannelImpl::Send(Message* message) {
|
| << " with type " << message->type()
|
| << " (" << output_queue_.size() << " in queue)";
|
|
|
| + if (!waiting_connect_ && pipe_ == -1)
|
| + return false;
|
| +
|
| #ifdef IPC_MESSAGE_LOG_ENABLED
|
| Logging::GetInstance()->OnSendMessage(message, "");
|
| #endif // IPC_MESSAGE_LOG_ENABLED
|
| @@ -522,7 +526,10 @@ bool Channel::ChannelImpl::Send(Message* message) {
|
| message->TraceMessageBegin();
|
| output_queue_.push(message);
|
| if (!is_blocked_on_write_ && !waiting_connect_) {
|
| - return ProcessOutgoingMessages();
|
| + if (!ProcessOutgoingMessages()) {
|
| + ClosePipeOnError();
|
| + return false;
|
| + }
|
| }
|
|
|
| return true;
|
| @@ -707,7 +714,11 @@ bool Channel::ChannelImpl::AcceptConnection() {
|
| // In server mode we will send a hello message when we receive one from a
|
| // client.
|
| waiting_connect_ = false;
|
| - return ProcessOutgoingMessages();
|
| + if (!ProcessOutgoingMessages()) {
|
| + ClosePipeOnError();
|
| + return false;
|
| + }
|
| + return true;
|
| } else if (mode_ & MODE_SERVER_FLAG) {
|
| waiting_connect_ = true;
|
| return true;
|
|
|