tree 66a3030a255e04d4b3593c0d1d5737ee8659bc13
parent 658e3cde33a74353ec520fa18ead7035821485f1
author Masakazu Kitajo <maskit@apache.org> 1627605195 +0900
committer GitHub <noreply@github.com> 1627605195 +0900
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJhA0jLCRBK7hj4Ov3rIwAAmyEIAAA1d2iuoWb4uGXpBhiT3UVM
 4eYVK3lK3XhW1aZi6UrD8u4SYa8Ip8OWycSi3xbFd/unilk5mzgs5etMY4taC237
 TR+UO/bn2D/aSI+E31D84e/BSpv+MRCMSQ1WOPLQKgiz9nxv08PP3Pd0jNMIDiRu
 T97CWmxUkpMCAPwKy4tXuj9kJENUTXvlPGGKFTsx8o7fQlivlspjjJxsEYdGoDdT
 isK2tBuF4A/sY/9ToEqjzPdtwDkOz203Tg9xJVUdh4OwaZq02zeYto4B4N7zQDC8
 kZvJQ/+JATLtWqb90o+lmSn/m5MGIyqqObHXifF6P8E6gf2OL5FBU5JckLSQXeU=
 =Fi9M
 -----END PGP SIGNATURE-----
 

Merge quic-latest into master (#8010)

Squashed commit of the following:

commit d232a12ec5ae461235f4a4d6f7c7644d05651aed
Merge: 837bd0e41 2edeae477
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Tue Jun 29 15:41:34 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      reuse multiple times (#7992)
      Test bad request behavior (#7884)
      Fix BoringSSL build (#8001)
      Update TSHttpTxnAborted API to distinguish client/server aborts (#7901)
      Enforce case for well known methods (#7886)
      Add null checks for http_load (#7995)

commit 837bd0e413c27b4f2132864c9a0a377a45fabaf5
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Mon Jun 28 15:11:03 2021 +0900

    Fix unit tests for QUICStreamState

commit c5bb9e0dd41cba2198c5632f85f89f9b343eee34
Merge: 0a63fa977 202b2505c
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Mon Jun 28 10:02:54 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Implement TLSBasicSupport for QUICNetVC (#7959)
      Reload server session inactivity timeout before placing a session into the pool (#7618)
      Use OpeSSL EVP API if SHA1 API is unavailable  (cache_promote) (#7447)
      Cleanup: Get rid of HTTP2_SESSION_EVENT_RECV (#7879)
      Timing and permissions update for regex_revalidate test (#7998)
      limit m_current_range to max value in RangeTransform (#4843)
      Allow to TLS handshake to error out on TSVConnReenable (#7994)
      Cleanup: Get rid of HTTP2_SESSION_EVENT_INIT (#7878)
      Add hook for loading certificate and key data from plugin  (#6609)
      Doc: Now's Minute invocation error (#7990)
      Fix typo in configure.ac (#7993)

commit 0a63fa977f97919143f45508f1f6c5b656324d80
Merge: 312cf393c bd93f2a40
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Fri Jun 25 14:34:55 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Don't rely on SSLNetVC when HttpSM gathers info about SSL (#7961)
      conf_remap: demote 'Invalid configuration' to warning (#7991)
      Cleans up the code bit, including milliseconds consistency (#7989)
      Pass through expect header and handle 100-continue response (#7962)
      Treat TRACE with body as bad request (#7905)
      Thread safe Mersenne Twister 64 using c++11 (#7859)
      ESI plugin documentation updates. (#7970)
      Add log name configuration and stderr/stdout support. (#7937)
      Cleanup: Constify MIMEHdr (#7949)
      Fixed compile error with Linux AIO unit test (#7958)
      Note YAML parser library bug, and work-around, in documentation. (#7963)
      Ensure that the content-length value is only digits (#7964)
      String the url fragment for outgoing requests (#7966)
      Fix for HTTP/2 frames (#7965)
      Improve parsing error messages for strategies.yaml. (#7948)
      fix the scheme of h2 0rtt tests (#7957)
      Fix double test flakiness due to EOS/TXN_CLOSE race (#7956)
      Use proxy.config.log.hostname for rotated log filenames (#7943)
      Fixed memory leak in the QUIC stream manager (#7951)
      Fixup TS_USE_LINUX_NATIVE_AIO AIO_MODE_NATIVE (#7832)
      Update GitHub stale action to auto close old PRs (#7952)
      Revert "Do not invalidate cached resources upon error responses to unsafe methods (#7864)" (#7954)
      regex_revalidate: add stats for miss/stale counts (#7950)
      Do not invalidate cached resources upon error responses to unsafe methods (#7864)
      Add an HTTP/2 304 "Not Modified" AuTest. (#7882)
      regex_revalidate: optionally retain rule epoch state across restarts (#7939)
      Fixed memory leak in QUIC ack frame unit test (#7947)
      cache_promote: Don't promote on uncacheable requests (#7942)
      Fix dynamic-stack-buffer-overflow of cachekey plugin (#7945)
      Compilation error fixes for QUIC unit tests (#7944)
      Adds bytes counting as a trigger to the cache_promote LRU (#7765)
      Add a JSON schema for strategies.yaml (#7932)
      Remove second call to TRANSACT_RETURN while handling cache write lock (#7873)
      Close connection after every bad request for HTTP/1.1 (#7885)
      Pin Sphinx to 3.x to unblock `make html` (#7940)
      Add support for Remap rule hit stats (#7936)
      Remove scrap log object dead code (#7935)
      Add STL forward iterators to DLL container. (#7934)
      Add log SQUID code testing to redirect.test.py Au test. (#7870)
      Fix race condition on server session state (#7921)
      regex_reval: bug where rule type is always reported as the first (#7928)
      Remove duplicate entry in overridable txn vars. (#7930)
      Satisfy ci/jenkins/bin/clang-format.sh (#7929)
      Add a basic Au test using strategies.yaml, with consistent hashing. (#7911)
      Add a chunked negative revalidating test. (#7907)
      Ensure that URL components are valid when alternate eviction is logged (#7924)
      fix grammar (#7927)
      AuTest: Enable h2spec generic test cases (#7926)
      Adjust vc read errors (#7923)
      Remove bucket search from IntrusiveHashMap::erase (#7848)
      Ensure TS_VCONN_CLOSE_HOOK hook is called during TS_EVENT_VCONN_CLOSE. (#7913)
      Update docs languages file to add 9.1.x for en and ja (#7917)
      * Adds a new peering ring mode to next hop selection strategies. (#7897)
      Add Au test for strategies.yaml, with consistent hashing, with fallover. (#7914)
      Make HttpSM server reference a Transaction instead of a Session (#7849)
      Set accept_options of Http1Transaction in Http1ClientSession::new_connection() (#7894)
      Reset Http1Transaction before adding vc to keep_alive_queue (#7892)
      Add dead server policy control and metric. Improve messages. (#7757)
      Ensure the HTTP protion of the protocol string is upper case (#7904)
      Fixed spelling mistakes in the docs (#7896)
      add MISS capability to the regex_revalidate plugin (#7899)
      docs: fix capitalization of Linux (#7898)
      Redirect - Make TS to honour the number_of_redirections configuration value (#7867)
      Clean up producer more regularly (#7386)
      Fix crash in open_close_h2 (#7586)
      Cleanup Http2ClientSession SessionHandler (#7876)
      Enforce HTTP parsing restrictions on HTTP versions supported (#7875)
      Do not delete the continuation twice (#7862)
      Cleanup: refer Http2ClientSession::mutex (#7853)
      Autest - Proxy Verifier Extension, add context template $-base string substitution in the replay file. (#7866)
      Fixed some spelling mistakes in comments (#7869)
      Fixed ASAN issues with MMH test (#7868)
      Cleanup: Move member functions defined inside of class definitions of Http2ConnectionState & Http2ConnectionSettings (#7854)
      Add URI Signing cdnistd Claim Implementation (#7822)
      Adds a new --enable-all-asserts configure option (#7858)
      Unifdef test code for MMH and moved it into its own test file (#7841)
      Clean up lua plugin doc for overridable configurations (#7844)
      Save and propagate epoll network error (#7809)
      Add method to write an IpAddr value to a sockaddr. (#7821)
      Add proxy.config.http.max_proxy_cycles (#7657)
      Update NextHop strategies so that unavailable server retry codes (#7837)
      generator: allow for POST requests (#7635)
      Fixed double declaration types for log buffer tracking (#7847)
      Extra braces for clang 5 / ubuntu 16.04 on array initialization (#7842)

     Conflicts:
    	iocore/net/quic/QUICStreamFactory.cc

commit 312cf393c170bbf1ee6c945907868137197afdfa
Merge: f90e8dde9 5cdc1459f
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Mon May 17 10:07:42 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Get rid of code for OpenSSL that has old QUIC API (#7599)
      Fixed warning in gcc 11 about array not being initalized (#7840)
      Don't call next next dup on destroyed mime field mloc. (#7833)
      build_h3_tools: use OpenSSL_1_1_1k+quic (#7836)
      Address assert on captive_action (#7807)
      Fix so EOS are delivered to sessions in the pool (#7828)
      Fix a format specifier for size_t (#7830)
      Fix stall on sending response for request with trailer header (#7831)
      Simplification dir_init_done (#7817)
      Remove unused member from HttpSM (#7835)
      AuTest: use exteneded help output to determin curl feature support (#7834)
      Apply fmt compile time argument checking to log functions (#7829)
      Adds new X-Cache-Info header to the xdebug plugin (#7784)
      Cleanup: Remove unused members of Http2Stream (#7813)
      Cleanup: unused functions of Http2ClientSession (#7812)
      Cancel cross_thread_event on clear_io_events (#7815)
      Cleanup: Remove a meaningless Http2Stream::do_io_close() call (#7814)
      Eliminate next dup call using stale mime field mloc is s3_auth plugin. (#7825)
      NetEvent cleanup - replace #define with constexpr (#7804)
      fix origin session related crashes (#7808)
      Update HTTP version info in HostDB on new outbound connection (#7816)
      Remove a redundant argument (#7811)
      SSL Cert lookup using PP dest ip when ProxyProtocol is enabled (#7802)
      Fix MLoc assert caused by s3auth (#7790)
      Fix cpu utilization problem in session cache (#7719)
      Fix to cookie_remap.cc tp avoid Intel compiler warning. (#7792)
      TSHttpTxnCacheDiskPathGet - tighten up the code a bit. (#7806)
      Doc: tcpinfo plugin table formatting (#7805)
      fix DNS spike issue for TCP_RETRY mode (#7307)
      Adds new TS API TSHttpTxnCacheDiskPathGet (#7783)
      tests: Fixes spelling (#7789)
      Traffic Dump: Add an HTTP/3 AuTest (#7758)
      use sendmsg and recvmsg (#7793)
      HTTP: clean up the http_hdr_describe format error (#7797)
      Fixes an issue where next hop unit tests crash when run on macOS. (#7787)
      Apply log throttling to HTTP/2 session error rate messages (#7772)
      Cleans up uninitialized warning in LogMessage.cc (#7788)
      Short circuit remap reload when a valid remap file is not specified (#7782)
      DNS: Clean up argument passing to DNS queries. (#7778)
      Remove extra verify-callback (#7540)
      Augment test cases for tls_verify_override test (#7736)
      Make when_to_revalidate setting available on HTTPS (#7753)
      Add traffic_server command line option for debugging in Au test. (#7762)
      Test: Update tls_partial_blind_tunnel to have a nameserver. (#7773)
      Test: update tls_forward_nonhttp to have a nameserver. (#7774)
      Test: add nameserver to log-filter test. (#7776)
      BWF: Add support for std::error_code. (#7777)
      Test: add nameserver to log-field test. (#7779)
      Test: add nameserver to regex_remap test. (#7775)
      Elevate privileges for traffic_manager during SSL cert reload (#7770)
      Clean up HTTP version processing (#7766)
      Remove proxy.config.http.down_server.abort_threshold (#7748)
      Remove undocumented keepalive_internal_vc setting (#7693)
      doc: header_rewrite random function not inclusive (#7760)
      Experimental Cache fill plugin (#7470)
      Remove references to removed options (#7756)
      Propagate TLS errors (#7714)
      AuTest extension: check for unrecognized configurations (#7752)
      Fixes errors in the strategies.yaml documentation. (#7745)
      Updates to Nexthop strategies to limit the number of simultaneous (#7744)
      Fixes Issue #7739 - Next hop strategy with bad 'to' URL causes TS crash. (#7749)
      header_rewrite: Various fixes for MaxMind support (#7746)
      Remove unused variable is_revalidation_necessary (#7747)
      Fix simple remapping in regex_remap plugin. (#7718)
      Adding DNS TTL AuTests. (#7742)
      Add a chunked disabled test. (#7743)
      Fix monitor threads in lib records to exit on system shutdown. (#7731)
      Add overload for memcpy to take a destination buffer and source string_view / TextView (#7732)
      Test: Add nameserver to TLS tunnel forward test. (#7733)
      AIO_NOT_IN_PROGRESS should not be 0 (#7734)
      if transaction status non-success, bypass intercept plugin (#7724)
      ink_utf8_to_latin1 is not defined, removing declaration (#7737)
      Fix build on FreeBSD 13 (#7730)
      Update VSCode CPP Standard (#7723)
      Updating to use Proxy Verifier 2.2.0 (#7729)
      header_rewrite: Allow for relative path to geo database files (#7727)
      Override proxy.config.ssl.client.sni_policy from sni.yaml (#7703)
      compress.test.py: Reference config file from Test.RunDirectory (#7725)
      Ran clang-tidy over the code (#7708)
      Deny unknown transfer encoding values (#7694)
      Fix doc for http2.no_activity_timeout_in (#7721)
      Add DynamicStats (#7704)
      header_rewrite: allow for use of maxminddb as source of geo truth (#7695)
      Include in parentselectdefs.h in install target (#7713)
      uri_signing: fix warning which affects ubuntu:20.04 builds (#7717)
      Increase the maximum slice block size from 32MB to 128MB (#7709)

commit f90e8dde99564ff4270f2ae63e8592b0948b6130
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Tue Jan 12 12:21:51 2021 +0900

    Add QUICStreamStateListener

commit f66646cb1907f7079eaf41aa81da9705934eff18
Merge: be9837c03 9f9594fd3
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Sat Apr 17 13:57:50 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Fix ALPN support on QUIC connections (#7593)
      fix mem leak in session cache (#7707)
      Parent Select Plugin (#7467)
      Add new TS API function TSUrlRawPortGet. (#7568)
      Add NixOS support (#7697)
      Remove support for --enable-remote-cov-commit (#7700)
      Remove configure-time loopback interface detection (#7702)
      Add sqpv log field for server protocol (#7680)
      Call do_io_close instead of HTTP2_SESSION_EVENT_FINI handler (#7594)
      Fix a bug in tspush that pushes corrupted content to cache (#7696)
      Automatically marks PRs and issues stale (#7675)
      New rate_limit plugin for simple resource limitations (#7623)
      Remove undefined method HttpSM::perform_nca_cache_action (#7692)
      Remove undefined method HttpSM::setup_client_header_nca (#7691)
      Scalar; Move "tag" struct to be inside the "ts" namespace to avoid collisions. (#7690)
      Rollback LAZY_BUF_ALLOC remove in HttpTunnel (#7583)
      Add class to normalize handling of pending action (#7667)
      Make HTTP/2 Curl AuTest gold files case insensitive (#7683)
      Add STL compliant field iteration to MIMEHdr. - rebase. (#7476)
      Fix use of -mcx16 flag - only use if it compiles cleanly. (#7684)
      Refine connection failure logging and messages and eliminate suprious connection errors (#7580)
      Add close header normalize openclose test (#7679)
      Fix has_consumer_besides_client to deal with no clients (#7685)
      create a new cache status RWW_HIT (#7670)
      Updating to AuTest 1.10.0 (#7682)
      sslheaders AuTest: Skip if plugin does not exist (#7678)
      Add AuTest for Background Fill (#7613)
      Do NOT kill tunnel if it has any consumer besides HT_HTTP_CLIENT (#7641)
      AuTest: address various permissions issues (#7668)
      Adding TCP Info header support to header rewrite (#7516)
      Refine Inline.cc carveout for arm64 darwin builds (#7662)
      Comment why log eviction isn't implemented via a log field. (#7648)
      Fixing Throttler.h for older clang and gcc compilers (#7651)
      Update -with-profile and add some profiling documentation (#7601)
      Use correct default value for verify.server.policy (#7636)
      Update server_response_body_bytes when background fill worked (#7621)
      Remove erroneous manager.log mesg with remap include file reload (#7646)
      Change ROUNDUP from function-like macro to function template. (#7614)
      Document http.default_buffer_water_mark (#7612)
      Add proxy.config.cache.log.alternate.eviction (#7629)
      Fix HttpSessionManager::acquireSession from previous rebase error (#7631)
      Fix tls_client_versions and tls_hooks18 tests (#7645)
      Updating documentation for negative_revalidating_lifetime (#7633)
      Remove reference to client.verify.server from tests and other bits (#7639)
      Add pooled_server_connections metric (#7627)
      Expose URL element methods through HTTPHdr (#7628)
      Add default implementation for allow_half_open (#7630)
      Add thread yeield to avoid busy waiting in LogObject::_checkout_write(). (#7576)
      Add proxy.process.http.background_fill_total_count (#7625)
      statichit: misc. fixes (#7634)
      Remove unused variables (#7626)
      Adding negative revalidating AuTests. (#7620)
      Add failed state to hostdb to better track failing origins (#7291)
      Use standard isdigit library function (#7619)
      Typo in output when forcing kqueue for configure (#7617)
      Implement log throttling (#7279)
      Increase Proxy Verifier caching delay. (#7616)
      Set pcre_malloc/free function pointers in core main() only. (#7608)

commit be9837c03219f2cb9efbd4981d13dbc78294ce51
Merge: 99ff68fa3 d4fc16f64
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Mar 17 09:38:59 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Fix the connection limit crash while using parents (#7604)
      Remove inline for detail::cache::CacheData::idAddr (#7592)
      Remove UnixNetVConnection::startEvent - not actually called. (#7596)
      Use return values to fix ubuntu release build error (#7591)
      Fix double destuct on Http2Stream termination (#7600)
      Add pointer/reference upcast function that is checked in debug builds. (#7582)
      Call constructors and destructors for H1/2 Session/Transaction via ClassAllocator (#7584)
      Add gold test for remap config .include directive. (#7589)
      Change the default value for verify.server.policy (#7587)
      Build the test library for tls_engine consistently (#7588)
      Generalize ALPN logic (#7555)
      Fix the final consumer write size from unchunked to chunked tunnel (#7577)
      Reactivate accept_no_activity_timeout (#7408)
      Tidy up session/transaction destruction process (#7571)
      Remove ProxyTransaction::set_proxy_ssn (#7567)
      Introduce TLSBasicSupport interface (#7556)
      Cleanup: Rename IOBufferReader of Http2ClientSession (#7569)
      Add a check for compress response, if from server and 304, then check cache for headers instead of the 304 response (#7564)
      Updates the STATUS file with all recent releases (#7566)
      Make Allocator.h less silly (no creepy "proto" object). (#6241)
      Cleanup: Remove unused member of Http2ClientSession (#7570)
      enable origin server session cache by default (#7537)
      Add tscontdestroy when transaction is closed and pacing rate is reset (#7572)
      Remove reference to CoreUtils (#7557)
      Remove unused enums from YamlSNIConfig struct. (#7565)
      Removes deprecated sni.yaml option: disable_h2 (#7547)
      This PR updates parent selection to limit the number of simultaneous (#7485)
      Fix KA header not checking strategy (#7483)
      Get rid of kruft LogObject copy constructor. (#7553)
      For TSHttpHdrEffectiveUrlBufGet(), include scheme for request to server URL. (#7545)
      Adding lower_ support to stats and bonding_slave data points for port status (#7560)
      Change cookie_remap plugin to allow use of pre-remap URL (and components). (#7519)
      check verify policy and properties (#7559)
      Fix parent.config to 504 not 502 on timeout (#7558)
      use SSL_CTX address as part of the lookup key (#7552)
      Add ALPN support on TLS Partial Blind Tunnel (#7511)
      Add server_name option to proxy.config.ssl.client.sni_policy (#7533)
      Fix a crash on origin session reuse (#7543)
      Removes the test plugins from the .spec file / RPM (#7551)
      Convert the inactive_client_timeout test to use Proxy Verifier (#7535)
      Fix ja3_fingerprint configure syntax (#7550)
      Fix asserts in multiplexer plugin. (#7532)
      parse expiration time and reload config at time out (#7281)
      Fix origin_session_reuse test (#7542)
      Fix tls_session_reuse test (#7541)
      Split SSL_CTX initialization logic into small functions (#7434)
      Remove dependency for SSL stuff from P_Net.h (#7531)
      Unify all the connect timeouts into one (#7335)
      Fix lua_states_stats Au test. (#7232)
      origin session reuse (#7479)
      Updating to use Proxy Verifier 2.1.0 (#7534)
      update the session reuse tests (#7529)

commit 99ff68fa395a6e3f8ab2e27e98049ceb00a0a7c8
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Feb 17 11:14:40 2021 +0900

    Fix link error

commit c4ad0c071d53fb888d8b2ffac34b848524f4fe68
Merge: c40d95a91 cd33010ff
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Feb 17 09:56:25 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Select lua context per thread (#7465)
      Fix out of bounds access error in jtest (#7526)
      Disable compiling Inline.cc on macOS (#7389)
      Makes sure the types are correct, avoiding compiler warnings (#7523)
      Move has_request_body to ProxyTransaction (#7499)
      Make the H3 build script work properly on Debian platforms (#7522)
      slice/handleFirstServerHeader: return sooner on requested range errors (#7486)
      Add new log field for negotiated ALPN Protocol ID with the client (#7491)
      Add Outbound PROXY Protocol (v1/v2) Support (#7446)
      Updates the Dockerfile for debian (#7518)
      Disable client inactivity timeout while server is processing POST request (#7309)
      Upgrade Catch.hpp to v2.13.4 (#7464)
      Move reopen_moved_log_files to log flushing thread (#7450)
      replace psutil.pid() with psutil.process_iter() for safer execution (#7515)
      Fix spacing in clang-analyzer.sh script (#7480)
      Fix out of bounds access error in ats_base64_decode (#7490)
      Updated to build lastest versions of Fedora and CentOS docker images (#7505)
      Fix QUIC unit tests build issue on GNU ld (#7496)
      Fix QUIC unit test failures (#7497)
      Fixed build issues with Fedora 34 (#7506)
      Fixing DNS local_ipv* config option (#7507)
      traffic_dump: AuTests to use Proxy Verifier. (#7502)
      Disable ja3 plugin when building with boringssl (#7500)
      Avoid -Warray-bounds on PROXY Protocol Builder (#7488)
      AuTest: Upgrade to Proxy Verifier 2.0.2 (#7493)
      fix certs (#7494)
      Add zlib1g-dev to Debian dependencies in README (#7495)
      Unit Test -  Increase openssl's key size. Place test certs into a common test folder. (#7451)
      Add basic type aliases for std::chrono types to ink_time.h for future use. (#7482)
      traffic_ctl - Fix lookup key for run-root option (#7484)
      update thread config tests (#7370)
      Perf: Replace casecmp with memcmp in HPACK static table lookup (#6521)
      Add PROXY Protocol Builder (#7445)
      Adjust so transfer-encoding header can be treated hop-by-hop (#7473)
      Convert auxkey form 2 uint32_t to 1 uint64_t. (#7350)
      Remove the queuing option from proxy.config.http.per_server.connection (#7302)
      Remove unused function ink_microseconds. (#7481)
      use std::unordered_map to store sessions (#7405)
      drop use of BIO_f_base64 and EVP_PKEY_new_mac_key (#7106)
      Do not write to the cache if the plugin decides not to write to the cache (#7461)
      API to retrieve NoStore set by plugins (#7439)
      Update AuTest version update directions for pipenv (#7469)
      Add command line utility to help convert remap plugin usage to ATS9. (#7426)
      Cleanup: Get rid of MIMEFieldWrapper from HPACK encoding (#6520)
      Proxy Verifier: Making use of delay directives for caching tests. (#7468)
      Cleanup: Add SNIRoutingType (#7453)
      Updating to Proxy Verifier v2.0.0 (#7454)
      Adjust to actually try a server address more than once (#7288)
      Change atoi to atol, causing obvious issues on what needs to be int64's (#7466)
      Cleans up duplicated TSOutboundConnectionMatchType definition (#7090)
      Fixing compress expectation for new microserver (#7463)
      Update to the new MicroServer 1.0.6 release (#7460)
      CacheRead: clear dir entry if doc is found to be truncated (#7064)
      Do not provide a stale negative cache (#7422)
      Generalize SNI support (#6870)
      Add synchronization between UDPNetProcessor::UDPBind in main Thread and initialize_thread_for_udp_net in ET_UDP Thread (#7407)
      Fix heap use after free in DNSProcessor::getby() (#3871)
      Fix comment in include/tscore/Filenames.h. (#7457)
      Fix Makefile target for creating changelogs (#7455)
      Change squid log code for self looping (#7443)
      Enhancements for compress plugin (#7416)
      Add incoming PROXY Protocol v2 support (#7340)
      Cleanup: Remove unused members of NextHopProperty (#7436)
      Small fix to regex_remap PR # 7347. (#7437)
      PoolableSession (#6828)
      option to disable compression for range request's response (#7287)
      Make TSUrlSchemeGet() return scheme implied by URL type when there is no explicit scheme. (#7262)

commit c40d95a912166224e517b07d6dc3ffd273907fc9
Merge: 573035c60 ecd70df36
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Jan 20 09:39:34 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Fix a link error on traffi_quic command (#7433)
      Fix stall on outbound TLS handshake (#7432)
      Fix the Proxy Verifier AuTest extension to handle cert paths correctly (#7415)
      Update documentation for TSSslSessionInsert (#7420)
      Improve zlib detection logic (#7430)
      Fix parent connect fail segfault (#7429)

commit 573035c606fa088349420de35f0cdabe38649f5e
Merge: 5704095ba 95b8d575a
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Fri Jan 15 23:24:29 2021 +0900

    Merge branch 'master' into quic-latest

    * master:
      Doc: Fix typo in negative_revalidating_lifetime (#7427)
      Change comment handling for long lines in url_sig plugin (#7421)
      Add unit tests for PROXY Protocol v1 parser (#7332)
      LGTM: Remove superfluous const qualifier in return type (#7412)
      Fix issue with unavailable server retry codes (#7410)
      Remove the warning statement (#7414)
      default to throttling and subsequently simplify the transfer code (#7257)
      Improvement to lua plugin (#7413)
      Make places to bind/unbind SSL object with/from NetVC (#7399)
      traffic_ctl - plugin msg  now require only the tag as mandatory field data field is now optional. (#7364)
      API - Add new api function TSHttpTxnServerSsnTransactionCount() to retrieve the number of transactions between TS proxy and the origin server from a single session. (#7387)
      Fix clang compiler complaint about an unused parameter in SNIAction. (#7409)
      Add compression support to stats_over_http (#7393)
      Doc: Fix INPUT tag of Doxyfile (#7404)
      Remove unneeded variables in UnixNetVConnection (#7403)
      Correctly pass back errno to HttpSM (#7402)
      Reverting to old negative_caching conditional behavior (#7401)
      Remove unused MAYBE_ABORT state (#7400)
      traffic_manager should not retry on disk failure (#7397)
      Eliminate dangling pointer into stack space. (#7392)
      This PR aims to address some of the lock contention found and (#7377)
      Remove a special treatment for SSLNetVC in migrateToCurrentThread() (#7384)
      Replace ::exit() with _exit() to avoid secondary cleanup cores (#7395)
      [Doc] Fix build warnings (#7391)
      Clear call_sm on tunnel reset (#7352)
      Unused code: HostDBContinuation::removeEvent (#7383)
      Traffic Dump: Fix stream-id printing after first transaction. (#7311)
      Add comments to ink_queue.h. (#7376)
      Cleanup incoming PROXY Protocol v1 (#7331)
      In CI, only run autopep8 on branches that enforce autopep8 (#7270)
      Fix FreeBSD 12 link issue in test_libhttp2. (#7367)
      Adjust flags to ensure tunnel producer is cleaned up (#7336)
      Cleanup: Remove SSL Wire Trace releated code in UnixNetVConnection (#7368)
      Use EVP MAC API if available (#7363)
      Use EVP API instead of MD5_Init/Update/Final (secure_link plugin) (#7355)
      Use ERR_get_error_all if available (#7354)
      Use OpeSSL EVP API instead of SHA256_Init/Update/Final (#7342)
      Cleanup: Get rid of NetVConnection::outstanding() (#7366)
      Cleanup: Remove unused functions (#7365)
      Add a post case to the conn_timeout test (#7334)
      Fix sni ip_allow and host_sni_policy (#7349)
      AuTest for Split DNS (#7325)
      Make reloading client certificate configuration more reliable (#7313)
      Add negative caching tests and fixes. (#7361)
      ESI: Ensure gzip header is always initialized (#7360)
      Allow for regex_remap of pristine URL. (#7347)
      Set thread mutex to the DNSHandler mutex of SplitDNS (#7321)
      Fix lookup split dns rule with fast path (#7320)
      Add note to background fetch about include/exclude (#7343)
      AuTest for incoming PROXY Protocol v1 (#7326)
      Fix vc close migration race condition (#7337)
      TLS Session Reuse: Downgrade add_session messages to debug (#7345)
      TLS Session Reuse: Downgrade noisy log to debug (#7344)
      Remove the last remnants of the enable_url_expandomatic (#7276)
      Remove unnecessary cast from ReverseProxy. (#7329)
      Updates the Dockerfile with more packages (#7323)
      fixup in HttpSM to only set [TS_MILESTONE_SERVER_CLOSE if TS_MILESTONE_SERVER_CONNECT has been set (#7259)
      Add option for hybrid global and thread session pools (#6978)
      Get appropriate locks on SSN_START hook delays (#7295)
      s3_auth: demote noisy errors around configuration that doesn't affect plugin usability (#7306)
      Follow the comments in I_Thread.h, add an independent ink_thread_key for EThread. (#6288)
      Reduce the number of write operation on H2 (#7282)

commit 5704095ba63316e672d9fae67d2757fff084e03c
Merge: 882a79d87 0c88b24a0
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Oct 28 21:06:11 2020 +0900

    Merge branch 'master' into quic-latest

    * master:
      Adds a shell script to help build the H3 toolchains (#7299)
      Remove unfinished h2c support (#7286)
      Allow disabling SO_MARK and IP_TOS usage (#7292)
      Enable all h2spec test (#7289)
      Fix bad HTTP/2 post client causing stuck HttpSM (#7237)
      Sticky server does not work with H2 client (#7261)
      7096: Synchronize Server Session Management and Network I/O (#7278)
      HostDB: remove unused field in HostDBApplicationInfo, and update remaining types in http_data to fix broken padding. (#7264)
      Add support for a new (TSMgmtDataTypeGet) mgmt API function to retrieve the record data type (#7221)
      Fix example in default sni.yaml configuration. (#7277)
      Fix proxy.process.http.current_client_transactions (#7258)
      Add AuTest for HTTP/2 Graceful Shutdown (#7271)
      Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
      url_sig add 'ignore_expiry = true' option for log replay testing (#7231)
      Respecting default rolling_enabled in plugins. (#7275)
      gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)
      Removes commented out code from esi plugin (#7273)
      Allow initial // in request targets. (#7266)
      Document external log rotation support via SIGUSR2 (#7265)
      Let Dedicated EThreads use `EThread::schedule` (#7228)
      HostDB: Fix cache data version checking to use full version, not major version. (#7263)
      Bugfix: set a default inactivity timeout only if a read or write I/O operation was set (#7226)
      Treat objects with negative max-age CC directives as stale. (#7260)
      Remove some usless defines, which just obsfucates code (#7252)
      Remove useless if for port set assertion. (#7250)
      Fix test_error_page_selection memory leaks and logic errors (#7248)
      [multiplexer] option to skip post/put requests (#7233)
      Incorporates the latest CI build changes (#7251)
      Add support for server protocol stack API (#7239)
      Fix for plugins ASAN suppression file (#7249)
      RolledLogDeleter: do not sort on each candidate consideration. (#7243)
      Make double Au test more reliable. (#7216)
      Ensure that ca override does not get lost (#7219)
      Stop crash on disk failure (#7218)
      Do not cache Transfer-Encoding header (#7234)
      clean up body factory tests (#7236)
      Revert "Create an explicit runroot.yaml for AuTests (#7177)" (#7235)
      New option to dead server to not retry during dead period (#7142)
      Increment ssl_error_syscall only if not EOF (#7225)
      Fix renamed setting in default config (#7224)
      Log config reload: use new config for initialization (#7215)
      Introduce proxy-verifier to AuTests (#7211)
      Follow redirection responses when refreshing stale cache objects. (#7213)
      Create an explicit runroot.yaml for AuTests (#7177)
      Support external log rotation tools via SIGUSR2 (#6806)
      Add support for TS API for Note, Status, Warning, Alert (#7208)
      If the weight is 0, the SRV record should be selected from the highest priority group (#7206)
      Cleanup: remove unnecessary memset() within dns_process() (#7209)
      Docs cleanup (#7210)
      Strip whitespaces after field-name and before the colon in headers from the origin (#7202)
      Adds new plugin: statichit (#7173)
      Add duplicate header field processing when creating outgoing response (#7207)

commit 882a79d87126a27482b2d1dc5a172ef042acad6b
Merge: 2a9887f4c bb5c39086
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Fri Sep 18 10:01:14 2020 +0900

    Merge branch 'master' into quic-latest

    * master:
      Rename ambiguous log variable (#7199)
      KWF useless member function HttpSM::kill_this_async_hook(). (#7198)
      Fix the active_timeout test to work without quic enabled (#7197)
      Remove obsolete cdn_ HttpTransact vars (#7182)
      Remove unused HttpUpdate mechanism (#7194)
      Updates the list of supported / linked Docs versions (#7152)
      Make custom xdebug HTTP header name available to other plugins. (#7193)
      Update sni outbound policy to allow directly setting the outbound SNI. (#7188)

commit 2a9887f4c4c5a9259cdd64bf24c76b1618d78d29
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Wed Sep 16 17:54:01 2020 +0900

    Avoid unnecessary QUIC CID randomization

commit 42e8898aafbdb8f17fefb1da99d7ae7cdc019a19
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Tue Sep 15 12:41:28 2020 +0900

    Simplify interface between H3 and QUIC, and remove memcopy between them

commit 112fc71a324397a590c1cad6a4b2cfed27a551c2
Merge: ac31adaa8 b09096481
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Tue Sep 15 09:21:25 2020 +0900

    Merge branch 'master' into quic-latest

    * master:
      Add an autest testcase for HTTP3 (#7063)
      Fix TSHttpTxnServerPacket* API's to correctly update existing server connections (#7175)
      Do not lose original inactivity timeout on disable (#7134)
      Emits log when OCSP fails to connect to server (#7183)
      autopep8: avoid running on non-tracked files. (#7186)
      TextView: Add additional constructor tests. (#7189)
      Remove duplicate code (#7180)
      TextView: add constructor size values to enable strlen even for null pointers. (#7185)
      Add virtual destructor to QUICRTTProvider. (#7184)
      AuTest: Reuse venv if it exists already (#7178)
      TS_API for Note,Status,Warning,Alert,Fatal (#7181)
      Traffic Dump: Record HTTP/2 priority. (#7149)
      leaks in logs (#7172)
      Additions to enable loading qat_engine (#7150)
      Removes references to non-existent function handle_conditional_headers (#7162)
      Fix #7164 Chaning Warning to Debug and creating a stat for inserting duplicates to pending dns (#7166)
      Fix #7167, make autopep8 failure (#7168)
      MicroDNS Extension: handle different 'default' types (#7159)
      Traffic Dump documentation for post_process.py (#7161)
      Fix memory leaks in multiplexer plugin (#7160)
      rc: fixes systemd unit file stopping (#7157)
      Fix lua plugin mem leak problem (#7158)
      Don't make an error on duplicated RETIRE_CONNECTION frames (#7131)
      URL::parse fixes for empty paths (#7119)
      Replace ACTION_RESULT_NONE with nullptr (#7135)
      Add metric tracking async job pauses (#7153)
      PluginFactory - Remove unused code that was left from last PluginFactory change(TSPluginDSOReloadEnable) (#7155)
      Fix stale pointer due to SSL config reload (#7148)
      slice: check if vio is still valid before calling TSVIODone* on shutdown (#7147)
      Deprecate cqhv field (#7143)
      Don't return QUIC frame if the size exceeds maximum frame size (#7121)
      Check VIO availability before acquiring a lock for it (#7145)
      Fix #7116, skip the insertion of the same continuation to pending dns (#7117)
      Allow override of CA certs for cert from client based on SNI server name sent by client. (#7130)
      Fix typo in cache docs (#7144)
      remove useless shortopt (#7138)
      Protect TSActionCancel from null INKContInternal actions (#7128)
      Check VIO availability before checking whether the VIO has data (#7120)
      Accept NAT rebinding on a QUIC connection (#7123)
      Fixes garbled logs when using %<vbn> log tag (#7140)
      Removes duplicated listing of files in same Makefile target (#7137)
      Updated gdb mutex script to get process file for Fedora 32 (#7133)
      SSLConfig mem leak fix (#7125)
      Replaces "smart" quotes with ASCII equivalents (#7126)
      Comment out a wrong assertion in QUIC Loss Detection logic (#7129)
      Add member initialization to the Errata class. (#7132)
      Cancel active/inactive timeout on closing Http2Stream (#7111)
      Add modsecurity lua script to example (#7105)
      Expose remap config file callback (#7073)
      Make tls_hooks tests more likely to pass (#7122)

commit ac31adaa82f9271f902de2f45c071e328f620271
Merge: 4d579f49a e904dbcef
Author: Masakazu Kitajo <maskit@apache.org>
Date:   Mon Aug 17 09:14:14 2020 +0900

    Merge branch 'master' into quic-latest

    * master:
      Backing out my update of our jenkin's autest file. (#7118)
      Don't send image/webp responses from cache to broswers that don't support it (#7104)
      Updating our autest suite to require Python3.6 (#7113)
      Squashed commit of the following: (#7110)
      Supporting out of source builds for AuTests. (#7109)
      Fixes uninitialized variables found by Xcode (#7100)
      Add cross references between server session sharing match and upstream connection tracking match. (#7038)