This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 8.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit d3bf55d993736c8731c4dcb23d62b676b458d7ed
Author: Valentin Gutierrez <[email protected]>
AuthorDate: Wed Aug 28 13:16:33 2019 +0800

    Allow disabling HTTP/2 priority frames limit
    
    (cherry picked from commit f2ebbcee400c3c91aa789382d7f7243797ed733c)
---
 doc/admin-guide/files/records.config.en.rst |  4 +++-
 proxy/http2/Http2ConnectionState.cc         | 11 ++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/doc/admin-guide/files/records.config.en.rst 
b/doc/admin-guide/files/records.config.en.rst
index f0d80c5..0049322 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -3623,7 +3623,9 @@ HTTP/2 Configuration
 
    Specifies how many number of PRIORITY frames |TS| receives for a minute at 
maximum.
    Clients exceeded this limit will be immediately disconnected with an error
-   code of ENHANCE_YOUR_CALM.
+   code of ENHANCE_YOUR_CALM. If this is set to 0, the limit logic is disabled.
+   This limit only will be enforced if 
:ts:cv:`proxy.config.http2.stream_priority_enabled`
+   is set to 1.
 
 .. ts:cv:: CONFIG proxy.config.http2.min_avg_window_update FLOAT 2560.0
    :reloadable:
diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 1ca1364..869e0ee 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -417,10 +417,15 @@ rcv_priority_frame(Http2ConnectionState &cstate, const 
Http2Frame &frame)
                       "PRIORITY frame depends on itself");
   }
 
+  if (!Http2::stream_priority_enabled) {
+    return Http2Error(Http2ErrorClass::HTTP2_ERROR_CLASS_NONE);
+  }
+
   // Update PRIORITY frame count per minute
   cstate.increment_received_priority_frame_count();
   // Close this conection if its priority frame count received exceeds a limit
-  if (cstate.get_received_priority_frame_count() > 
Http2::max_priority_frames_per_minute) {
+  if (Http2::max_priority_frames_per_minute != 0 &&
+      cstate.get_received_priority_frame_count() > 
Http2::max_priority_frames_per_minute) {
     
HTTP2_INCREMENT_THREAD_DYN_STAT(HTTP2_STAT_MAX_PRIORITY_FRAMES_PER_MINUTE_EXCEEDED,
 this_ethread());
     Http2StreamDebug(cstate.ua_session, stream_id,
                      "Observed too frequent priority changes: %u priority 
changes within a last minute",
@@ -429,10 +434,6 @@ rcv_priority_frame(Http2ConnectionState &cstate, const 
Http2Frame &frame)
                       "recv priority too frequent priority changes");
   }
 
-  if (!Http2::stream_priority_enabled) {
-    return Http2Error(Http2ErrorClass::HTTP2_ERROR_CLASS_NONE);
-  }
-
   Http2StreamDebug(cstate.ua_session, stream_id, "PRIORITY - dep: %d, weight: 
%d, excl: %d, tree size: %d",
                    priority.stream_dependency, priority.weight, 
priority.exclusive_flag, cstate.dependency_tree->size());
 

Reply via email to