diff options
Diffstat (limited to 'ipc/ipc_channel_win.cc')
-rw-r--r-- | ipc/ipc_channel_win.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/ipc/ipc_channel_win.cc b/ipc/ipc_channel_win.cc index e758d94..c04f0c6 100644 --- a/ipc/ipc_channel_win.cc +++ b/ipc/ipc_channel_win.cc @@ -161,7 +161,17 @@ void ChannelWin::FlushPrelimQueue() { while (!prelim_queue.empty()) { Message* m = prelim_queue.front(); - ProcessMessageForDelivery(m); + bool success = ProcessMessageForDelivery(m); + prelim_queue.pop(); + + if (!success) + break; + } + + // Delete any unprocessed messages. + while (!prelim_queue.empty()) { + Message* m = prelim_queue.front(); + delete m; prelim_queue.pop(); } } @@ -254,9 +264,9 @@ void ChannelWin::HandleInternalMessage(const Message& msg) { // Validation completed. validate_client_ = false; - FlushPrelimQueue(); - listener()->OnChannelConnected(claimed_pid); + + FlushPrelimQueue(); } base::ProcessId ChannelWin::GetSenderPID() { |