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

maskit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 7b84ec5c03 Fix an assertion failure on QPACK (#11054)
7b84ec5c03 is described below

commit 7b84ec5c0319cc6dad0ffe220bc543e949e3c82c
Author: Masakazu Kitajo <mas...@apache.org>
AuthorDate: Wed Feb 7 13:13:43 2024 -0700

    Fix an assertion failure on QPACK (#11054)
    
    * Fix an assertion failure on QPACK
    
    * Fix a logic error in the previous commit
---
 src/proxy/hdrs/XPACK.cc  | 1 +
 src/proxy/http3/QPACK.cc | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/proxy/hdrs/XPACK.cc b/src/proxy/hdrs/XPACK.cc
index 6cb775c097..e5eb070bd5 100644
--- a/src/proxy/hdrs/XPACK.cc
+++ b/src/proxy/hdrs/XPACK.cc
@@ -453,6 +453,7 @@ XpackDynamicTable::is_empty() const
 uint32_t
 XpackDynamicTable::largest_index() const
 {
+  // This function can return a meaningful value only if there is at least one 
entry on the table.
   ink_assert(!this->is_empty());
   return this->_entries_inserted - 1;
 }
diff --git a/src/proxy/http3/QPACK.cc b/src/proxy/http3/QPACK.cc
index 1d316b10e0..dc32d7a171 100644
--- a/src/proxy/http3/QPACK.cc
+++ b/src/proxy/http3/QPACK.cc
@@ -267,7 +267,7 @@ QPACK::decode(uint64_t stream_id, const uint8_t 
*header_block, size_t header_blo
   }
   uint16_t largest_reference = tmp;
 
-  if (this->_dynamic_table.largest_index() < largest_reference) {
+  if (this->_dynamic_table.is_empty() || this->_dynamic_table.largest_index() 
< largest_reference) {
     // Blocked
     if (this->_add_to_blocked_list(
           new DecodeRequest(largest_reference, thread, cont, stream_id, 
header_block, header_block_len, hdr))) {

Reply via email to