commit | fc332c1a61c0d65fdb74f3ee711e96bc5916cfe6 | [log] [tgz] |
---|---|---|
author | Erik Jensen <rkjnsn@chromium.org> | Wed Mar 13 23:15:50 2019 |
committer | Commit Bot <commit-bot@chromium.org> | Wed Mar 13 23:15:50 2019 |
tree | 48c685f23154cbf0bcdd763683ce213dd259bbcb | |
parent | 474d1ca30c56ceaa5229904399e1d3c2dd1d20f3 [diff] |
remoting: Invoke WebrtcDataStreamAdapter callbacks asynchronously. webrtc::DataChannelObserver methods are called synchronously by the WebRTC library, and may be invoked mid-operation. WebrtcDataStreamAdapter was then using them to invoke (again synchronously) the relevant MessagePipe::EventHandler callbacks. As a result, it was possible to end up with nested callstacks where an inner frame was deleting the WebrtcDataStreamAdapter while an outer frame was still waiting for a send operation to return. This change addresses the problem by always invoking callbacks asynchronously in WebrtcDataStreamAdapter, ensuring the stack has a chance to unwind. Bug: 941661 Change-Id: Ieef7726ae8caebe160e74fc14bd9b4721811406d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1521479 Commit-Queue: Erik Jensen <rkjnsn@chromium.org> Reviewed-by: Jamie Walch <jamiewalch@chromium.org> Cr-Commit-Position: refs/heads/master@{#640535}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .