Skip to content

7.0.10

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Jul 13:54
4926b85

Changed

  • ccf::http::ParsedQuery (in include/ccf/http_query.h), returned by ccf::http::parse_query(), is now a std::multimap<std::string, std::string, std::less<>> that owns its decoded keys and values, rather than a std::multimap<std::string_view, std::string_view> pointing into the source query string. Owned storage is required because each key and value is now URL-decoded individually after splitting, which produces bytes not present in the original query. Application code that consumed the previous std::string_view keys/values may need to be updated (#8024).
  • ccf::RpcContext::get_request_query() (C++) and request.query (JavaScript apps) now return the raw, still percent-encoded query string, instead of a whole-string URL-decoded copy. This is what allows escaped separators to be preserved. Callers must decode each parameter after splitting: use ccf::http::parse_query()/ccf::http::get_query_value() (C++) or parse_request_query() (JS), or ccf::http::decode_query_component() to decode a whole query string (#8024).

Fixed

  • HTTP query parameters are now split before URL-decoding, so escaped ampersands in query parameter names and values are preserved correctly (#8024).
  • HTTP messages (requests or replies) whose Content-Length header advertises a body larger than the configured maximum body size are now rejected as soon as the headers have been parsed, rather than after enough body chunks have been received to exceed the limit (#8045).
  • The thread-identifier helpers used by ccf/ds/logger.h (ccf::threading::get_current_thread_id, set_current_thread_id, and reset_thread_id_generator) have moved out of libccf into a new standalone ccf_threading static library, which find_package(ccf) exports automatically. This removes a long-standing implicit circular dependency (#7977).
  • Build-graph change for consumers that link CCF component libraries directly. ccfcrypto now links the new ccf_threading library, and ccf_tasks and ccf_kv link ccf_threading directly instead of ccfcrypto. Downstream targets that linked ccf_tasks or ccf_kv directly and relied on them transitively supplying CCF cryptography must now link ccfcrypto explicitly. Applications built with add_ccf_app (which link ccf and ccf_launcher) are unaffected (#7977).
  • As a temporary workaround for a Linux CIFS client kernel bug present in Confidential Azure Container Instances, uncommitted recovery ledger chunks are closed before their .recovery suffix is removed and reopened afterwards. This preserves the SMB write-caching lease on Azure Files, avoiding synchronous round trips for subsequent ledger writes. The workaround should be reverted once the Confidential Azure Container Instances platform upgrades to a kernel containing upstream fix 2c7d399e551c (#8072).