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

masaori335 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 e91ce44a5e Fix mismatched sINT/dINT log field types (#13223)
e91ce44a5e is described below

commit e91ce44a5ea336526b021970f4776c63db954b72
Author: Masaori Koshiba <[email protected]>
AuthorDate: Tue Jun 9 08:03:31 2026 +0900

    Fix mismatched sINT/dINT log field types (#13223)
    
    Seven boolean/counter fields were declared dINT, but their marshal
    functions write a single int, and proxy_protocol_version (ppv) was
    declared dINT while it actually marshals a string. The dINT type
    wrongly excludes these fields from log filters and aggregates, and
    the ppv mislabeling misrepresents variable-length string bytes as
    two fixed ints to any type-driven consumer. Retype the single-int
    fields as sINT and ppv as STRING so the declared type matches what
    each marshal function emits.
---
 include/proxy/logging/LogField.h |  8 ++++----
 src/proxy/logging/Log.cc         | 16 ++++++++--------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/include/proxy/logging/LogField.h b/include/proxy/logging/LogField.h
index d69f675034..27a1fb6b20 100644
--- a/include/proxy/logging/LogField.h
+++ b/include/proxy/logging/LogField.h
@@ -96,10 +96,10 @@ public:
   using VarUnmarshalFunc          = std::variant<decltype(nullptr), 
UnmarshalFunc, UnmarshalFuncWithSlice, UnmarshalFuncWithMap>;
 
   enum Type {
-    sINT = 0,
-    dINT,
-    STRING,
-    IP, ///< IP Address.
+    sINT = 0, ///< Single INT
+    dINT,     ///< Double INT
+    STRING,   ///< String
+    IP,       ///< IP Address
     N_TYPES
   };
 
diff --git a/src/proxy/logging/Log.cc b/src/proxy/logging/Log.cc
index e7fba83a04..646b9db07b 100644
--- a/src/proxy/logging/Log.cc
+++ b/src/proxy/logging/Log.cc
@@ -544,17 +544,17 @@ Log::init_fields()
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cqcl", field);
 
-  field = new LogField("client_req_tcp_reused", "cqtr", LogField::dINT, 
&LogAccess::marshal_client_req_tcp_reused,
+  field = new LogField("client_req_tcp_reused", "cqtr", LogField::sINT, 
&LogAccess::marshal_client_req_tcp_reused,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cqtr", field);
 
-  field = new LogField("client_req_is_ssl", "cqssl", LogField::dINT, 
&LogAccess::marshal_client_req_is_ssl,
+  field = new LogField("client_req_is_ssl", "cqssl", LogField::sINT, 
&LogAccess::marshal_client_req_is_ssl,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cqssl", field);
 
-  field = new LogField("client_req_ssl_reused", "cqssr", LogField::dINT, 
&LogAccess::marshal_client_req_ssl_reused,
+  field = new LogField("client_req_ssl_reused", "cqssr", LogField::sINT, 
&LogAccess::marshal_client_req_ssl_reused,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cqssr", field);
@@ -842,7 +842,7 @@ Log::init_fields()
   global_field_list.add(field, false);
   field_symbol_hash.emplace("pqssl", field);
 
-  field = new LogField("proxy_req_ssl_reused", "pqssr", LogField::dINT, 
&LogAccess::marshal_proxy_req_ssl_reused,
+  field = new LogField("proxy_req_ssl_reused", "pqssr", LogField::sINT, 
&LogAccess::marshal_proxy_req_ssl_reused,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("pqssr", field);
@@ -1023,17 +1023,17 @@ Log::init_fields()
   global_field_list.add(field, false);
   field_symbol_hash.emplace("ctid", field);
 
-  field = new LogField("cache_read_retry_attempts", "crra", LogField::dINT, 
&LogAccess::marshal_cache_read_retries,
+  field = new LogField("cache_read_retry_attempts", "crra", LogField::sINT, 
&LogAccess::marshal_cache_read_retries,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("crra", field);
 
-  field = new LogField("cache_write_retry_attempts", "cwra", LogField::dINT, 
&LogAccess::marshal_cache_write_retries,
+  field = new LogField("cache_write_retry_attempts", "cwra", LogField::sINT, 
&LogAccess::marshal_cache_write_retries,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cwra", field);
 
-  field = new LogField("cache_collapsed_connection_success", "cccs", 
LogField::dINT,
+  field = new LogField("cache_collapsed_connection_success", "cccs", 
LogField::sINT,
                        &LogAccess::marshal_cache_collapsed_connection_success, 
&LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("cccs", field);
@@ -1048,7 +1048,7 @@ Log::init_fields()
   global_field_list.add(field, false);
   field_symbol_hash.emplace("ctpd", field);
 
-  field = new LogField("proxy_protocol_version", "ppv", LogField::dINT, 
&LogAccess::marshal_proxy_protocol_version,
+  field = new LogField("proxy_protocol_version", "ppv", LogField::STRING, 
&LogAccess::marshal_proxy_protocol_version,
                        &LogAccess::unmarshal_str);
   global_field_list.add(field, false);
   field_symbol_hash.emplace("ppv", field);

Reply via email to