commit | ea197352de19b2b6e9a6a3153d40372202f1111f | [log] [tgz] |
---|---|---|
author | QUICHE team <quiche-dev@google.com> | Tue Jul 16 16:54:52 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Jul 16 20:32:31 2019 -0700 |
tree | 668ca8baae21c5bfc2aece0f50868913d17fe07e | |
parent | 1e21575c0e11d43319d56e529eedb4cce20161ba [diff] |
Don't split sent messages on MemSlice boundaries. NOTE: Merging this change to chromium will require updating the implementation of QuicMemSliceStorage. The required changes are fairly trivial. Instead of enqueueing a QueuedMessage with a single MemSlice for each slice in the span representing an outgoing message, QuartcSession should enqueue a single message containing all MemSlices that are part of that message, so that they are all sent together, as part of a single datagram frame. This requires a way to build a QuicMemSliceSpan from multiple QuicMemSlices, since QuartcSession must construct a QuicMemSliceSpan from its queued message to pass the message to SendMessage. QuicMemSliceStorage can do this, but currently requires copies to get MemSlices into the MemSliceStorage. This change adds an Append() function to QuicMemSliceStorage, which allows callers to move MemSlices into storage without copies. QuartcSession now consumes all the MemSlices for a single message into a single QuicMemSliceStorage. When the message is sent, that storage is converted to a span and passed to QuicSession::SendMessage as a single unit. gfe-relnote: n/a (Quartc only) PiperOrigin-RevId: 258468175 Change-Id: I4bab1e8da1db77a5ba1068cc8fe6303032ad81c7
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects.
The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.