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,