You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2015/12/01 10:53:21 UTC

trafficserver git commit: TS-3986: Cleanup code related to HTTP/2 frame flags validation

Repository: trafficserver
Updated Branches:
  refs/heads/master cb8382a64 -> f8621492a


TS-3986: Cleanup code related to HTTP/2 frame flags validation

1. Rename http2_are_frame_flags_valid to http2_frame_flags_are_valid
2. Move list of masks to HTTP2.h from HTTP2.cc

This closes #354


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f8621492
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f8621492
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f8621492

Branch: refs/heads/master
Commit: f8621492a725db05f5e5f87998f4f90dc7a59941
Parents: cb8382a
Author: Masaori Koshiba <ma...@apache.org>
Authored: Tue Dec 1 18:51:07 2015 +0900
Committer: Masaori Koshiba <ma...@apache.org>
Committed: Tue Dec 1 18:51:07 2015 +0900

----------------------------------------------------------------------
 proxy/http2/HTTP2.cc | 14 ++++----------
 proxy/http2/HTTP2.h  |  6 ++++++
 2 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f8621492/proxy/http2/HTTP2.cc
----------------------------------------------------------------------
diff --git a/proxy/http2/HTTP2.cc b/proxy/http2/HTTP2.cc
index 195b9e1..a9b0e2b 100644
--- a/proxy/http2/HTTP2.cc
+++ b/proxy/http2/HTTP2.cc
@@ -105,27 +105,21 @@ memcpy_and_advance(uint8_t(&dst), byte_pointer &src)
 }
 
 static bool
-http2_are_frame_flags_valid(uint8_t ftype, uint8_t fflags)
+http2_frame_flags_are_valid(uint8_t ftype, uint8_t fflags)
 {
-  static const uint8_t mask[HTTP2_FRAME_TYPE_MAX] = {
-    HTTP2_FLAGS_DATA_MASK,          HTTP2_FLAGS_HEADERS_MASK,      HTTP2_FLAGS_PRIORITY_MASK, HTTP2_FLAGS_RST_STREAM_MASK,
-    HTTP2_FLAGS_SETTINGS_MASK,      HTTP2_FLAGS_PUSH_PROMISE_MASK, HTTP2_FLAGS_PING_MASK,     HTTP2_FLAGS_GOAWAY_MASK,
-    HTTP2_FLAGS_WINDOW_UPDATE_MASK, HTTP2_FLAGS_CONTINUATION_MASK,
-  };
-
   if (ftype >= HTTP2_FRAME_TYPE_MAX) {
     // Skip validation for Unkown frame type - [RFC 7540] 5.5. Extending HTTP/2
     return true;
   }
 
   // The frame flags are valid for this frame if nothing outside the defined bits is set.
-  return (fflags & ~mask[ftype]) == 0;
+  return (fflags & ~HTTP2_FRAME_FLAGS_MASKS[ftype]) == 0;
 }
 
 bool
 http2_frame_header_is_valid(const Http2FrameHeader &hdr, unsigned max_frame_size)
 {
-  if (!http2_are_frame_flags_valid(hdr.type, hdr.flags)) {
+  if (!http2_frame_flags_are_valid(hdr.type, hdr.flags)) {
     return false;
   }
 
@@ -869,7 +863,7 @@ REGRESSION_TEST(HTTP2_FRAME_FLAGS)(RegressionTest *t, int, int *pstatus)
   box = REGRESSION_TEST_PASSED;
 
   for (unsigned int i = 0; i < sizeof(http2_frame_flags_test_case) / sizeof(http2_frame_flags_test_case[0]); ++i) {
-    box.check(http2_are_frame_flags_valid(http2_frame_flags_test_case[i].ftype, http2_frame_flags_test_case[i].fflags) ==
+    box.check(http2_frame_flags_are_valid(http2_frame_flags_test_case[i].ftype, http2_frame_flags_test_case[i].fflags) ==
                 http2_frame_flags_test_case[i].valid,
               "Validation of frame flags (type: %d, flags: %d) are expected %d, but not", http2_frame_flags_test_case[i].ftype,
               http2_frame_flags_test_case[i].fflags, http2_frame_flags_test_case[i].valid);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f8621492/proxy/http2/HTTP2.h
----------------------------------------------------------------------
diff --git a/proxy/http2/HTTP2.h b/proxy/http2/HTTP2.h
index 9120d7c..ba322db 100644
--- a/proxy/http2/HTTP2.h
+++ b/proxy/http2/HTTP2.h
@@ -201,6 +201,12 @@ enum Http2FrameFlagsContinuation {
   HTTP2_FLAGS_CONTINUATION_MASK = 0x04,
 };
 
+static const uint8_t HTTP2_FRAME_FLAGS_MASKS[HTTP2_FRAME_TYPE_MAX] = {
+  HTTP2_FLAGS_DATA_MASK,          HTTP2_FLAGS_HEADERS_MASK,      HTTP2_FLAGS_PRIORITY_MASK, HTTP2_FLAGS_RST_STREAM_MASK,
+  HTTP2_FLAGS_SETTINGS_MASK,      HTTP2_FLAGS_PUSH_PROMISE_MASK, HTTP2_FLAGS_PING_MASK,     HTTP2_FLAGS_GOAWAY_MASK,
+  HTTP2_FLAGS_WINDOW_UPDATE_MASK, HTTP2_FLAGS_CONTINUATION_MASK,
+};
+
 // [RFC 7540] 6.5.2. Defined SETTINGS Parameters
 enum Http2SettingsIdentifier {
   HTTP2_SETTINGS_HEADER_TABLE_SIZE = 1,