Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Unified Diff: net/spdy/spdy_protocol.h

Issue 199843005: Implement padding for SPDY4/HTTP2 DATA frames. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nullptr => NULL & discard padding at SpdySession visitor call. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_framer_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_protocol.h
diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h
index 095718d3444870b1f5acdc08eaec3200b14d927a..fd1351a487e48b3f8eb7f774689881325c7434a5 100644
--- a/net/spdy/spdy_protocol.h
+++ b/net/spdy/spdy_protocol.h
@@ -291,8 +291,11 @@ enum SpdyFrameType {
// Flags on data packets.
enum SpdyDataFlags {
- DATA_FLAG_NONE = 0,
- DATA_FLAG_FIN = 1,
+DATA_FLAG_NONE = 0x00,
+ DATA_FLAG_FIN = 0x01,
+ DATA_FLAG_END_SEGMENT = 0x02,
+ DATA_FLAG_PAD_LOW = 0x10,
+ DATA_FLAG_PAD_HIGH = 0x20
};
// Flags on control packets
@@ -483,6 +486,29 @@ class NET_EXPORT_PRIVATE SpdyDataIR
base::StringPiece data() const { return data_; }
+ bool pad_low() const { return pad_low_; }
+
+ bool pad_high() const { return pad_high_; }
+
+ int padding_payload_len() const { return padding_payload_len_; }
+
+ void set_padding_len(int padding_len) {
+ // The padding_len should be in (0, 65535 + 2].
+ // Note that SpdyFramer::GetDataFrameMaximumPayload() enforces the overall
+ // payload size later so we actually can't pad more than 16375 bytes.
+ DCHECK_GT(padding_len, 0);
+ DCHECK_LT(padding_len, 65537);
+
+ if (padding_len <= 256) {
+ pad_low_ = true;
+ --padding_len;
+ } else {
+ pad_low_ = pad_high_ = true;
+ padding_len -= 2;
+ }
+ padding_payload_len_ = padding_len;
+ }
+
// Deep-copy of data (keep private copy).
void SetDataDeep(const base::StringPiece& data) {
data_store_.reset(new std::string(data.data(), data.length()));
@@ -502,6 +528,11 @@ class NET_EXPORT_PRIVATE SpdyDataIR
scoped_ptr<std::string> data_store_;
base::StringPiece data_;
+ bool pad_low_;
+ bool pad_high_;
+ // padding_payload_len_ = desired padding length - len(padding length field).
+ int padding_payload_len_;
+
DISALLOW_COPY_AND_ASSIGN(SpdyDataIR);
};
« no previous file with comments | « net/spdy/spdy_framer_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698