| 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;
 | 
| 
 |