summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_framer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/spdy/spdy_framer.cc')
-rw-r--r--net/spdy/spdy_framer.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc
index 65ef2e5..dc1f856 100644
--- a/net/spdy/spdy_framer.cc
+++ b/net/spdy/spdy_framer.cc
@@ -888,6 +888,24 @@ SpdyFrame* SpdyFramer::DuplicateFrame(const SpdyFrame* frame) {
return new_frame;
}
+bool SpdyFramer::IsCompressible(const SpdyFrame* frame) const {
+ // The important frames to compress are those which contain large
+ // amounts of compressible data - namely the headers in the SYN_STREAM
+ // and SYN_REPLY.
+ // TODO(mbelshe): Reconcile this with the spec when the spec is
+ // explicit about which frames compress and which do not.
+ if (frame->is_control_frame()) {
+ const SpdyControlFrame* control_frame =
+ reinterpret_cast<const SpdyControlFrame*>(frame);
+ return control_frame->type() == SYN_STREAM ||
+ control_frame->type() == SYN_REPLY;
+ }
+
+ const SpdyDataFrame* data_frame =
+ reinterpret_cast<const SpdyDataFrame*>(frame);
+ return (data_frame->flags() & DATA_FLAG_COMPRESSED) != 0;
+}
+
void SpdyFramer::set_enable_compression(bool value) {
enable_compression_ = value;
}