[RELEASE] Released version 2.4-dev17
Released version 2.4-dev17 with the following main changes :
- MINOIR: mux-pt/trace: Register a new trace source with its events
- BUG/MINOR: mux-pt: Fix a possible UAF because of traces in mux_pt_io_cb
- CI: travis: Drastically clean up .travis.yml
- CLEANUP: pattern: make all pattern tables read-only
- MINOR: trace: replace the trace() inline function with an equivalent macro
- MINOR: initcall: uniformize the section names between MacOS and other unixes
- CLEANUP: initcall: rename HA_SECTION to HA_INIT_SECTION
- MINOR: compiler: add macros to declare section names
- CLEANUP: initcall: rely on HA_SECTION_* instead of defining its own
- MINOR: global: declare a read_mostly section
- MINOR: fd: move a few read-mostly variables to their own section
- MINOR: epoll: move epoll_fd to read_mostly
- MINOR: kqueue: move kqueue_fd to read_mostly
- MINOR: pool: move pool declarations to read_mostly
- MINOR: threads: mark all_threads_mask as read_mostly
- MINOR: server: move idle_conn_task to read_mostly
- MINOR: protocol: move __protocol_by_family to read_mostly
- MINOR: pattern: make the pat_lru_seed read_mostly
- MINOR: trace: make trace sources read_mostly
- MINOR: freq_ctr: add a generic function to report the total value
- MEDIUM: freq_ctr: make read_freq_ctr_period() use freq_ctr_total()
- MEDIUM: freq_ctr: reimplement freq_ctr_remain_period() from freq_ctr_total()
- MINOR: freq_ctr: add the missing next_event_delay_period()
- MINOR: freq_ctr: unify freq_ctr and freq_ctr_period into freq_ctr
- MEDIUM: freq_ctr: replace the per-second counters with the generic ones
- MINOR: freq_ctr: add cpu_relax in the rotation loop of update_freq_ctr_period()
- MINOR: freq_ctr: simplify and improve the update function
- CLEANUP: time: remove the now unused ms_left_scaled
- MINOR: time: move the time initialization out of tv_update_date()
- MINOR: time: remove useless variable copies in tv_update_date()
- MINOR: time: change the global timeval and the the global tick at once
- MEDIUM: time: make the clock offset global and no per-thread
- MINOR: atomic: reimplement the relaxed version of x86 BTS/BTR
- MINOR: trace: Add the checks as a possible trace source
- MINOIR: checks/trace: Register a new trace source with its events
- MINOR: hlua: Add function to release a lua function
- BUG/MINOR: hlua: Fix memory leaks on error path when registering a task
- BUG/MINOR: hlua: Fix memory leaks on error path when registering a converter
- BUG/MINOR: hlua: Fix memory leaks on error path when registering a fetch
- BUG/MINOR: hlua: Fix memory leaks on error path when parsing a lua action
- BUG/MINOR: hlua: Fix memory leaks on error path when registering an action
- BUG/MINOR: hlua: Fix memory leaks on error path when registering a service
- BUG/MINOR: hlua: Fix memory leaks on error path when registering a cli keyword
- BUG/MINOR: cfgparse/proxy: Fix some leaks during proxy section parsing
- BUG/MINOR: listener: Handle allocation error when allocating a new bind_conf
- BUG/MINOR: cfgparse/proxy: Hande allocation errors during proxy section parsing
- MINOR: cfgparse/proxy: Group alloc error handling during proxy section parsing
- DOC: internals: update the SSL architecture schema
- BUG/MEDIUM: sample: Fix adjusting size in field converter
- MINOR: sample: add ub64dec and ub64enc converters
- CLEANUP: sample: align samples list in sample.c
- MINOR: ist: Add `istclear(struct ist*)`
- CI: cirrus: install "pcre" package
- MINOR: opentracing: correct calculation of the number of arguments in the args[]
- MINOR: opentracing: transfer of context names without prefix
- MINOR: sample: converter: Add mjson library.
- MINOR: sample: converter: Add json_query converter
- CI: travis-ci: enable weekly graviton2 builds
- DOC: ssl: Certificate hot update only works on fronted certificates
- DOC: ssl: Certificate hot update works on server certificates
- BUG/MEDIUM: threads: Ignore current thread to end its harmless period
- MINOR: threads: Only consider running threads to end a thread harmeless period
- BUG/MINOR: checks: Set missing id to the dummy checks frontend
- MINOR: logs: Add support of checks as session origin to format lf strings
- BUG/MINOR: connection: Fix fc_http_major and bc_http_major for TCP connections
- MINOR: connection: Make bc_http_major compatible with tcp-checks
- BUG/MINOR: ssl-samples: Fix ssl_bc_* samples when called from a health-check
- BUG/MINOR: http-fetch: Make method smp safe if headers were already forwarded
- MINOR: tcp_samples: Add samples to get src/dst info of the backend connection
- MINOR: tcp_samples: Be able to call bc_src/bc_dst from the health-checks
- BUG/MINOR: http_htx: Remove BUG_ON() from http_get_stline() function
- BUG/MINOR: logs: Report the true number of retries if there was no connection
- BUILD: makefile: Redirect stderr to /dev/null when probing options
- MINOR: uri_normalizer: Add uri_normalizer module
- MINOR: uri_normalizer: Add `enum uri_normalizer_err`
- MINOR: uri_normalizer: Add `http-request normalize-uri`
- MINOR: uri_normalizer: Add a `merge-slashes` normalizer to http-request normalize-uri
- MINOR: uri_normalizer: Add a `dotdot` normalizer to http-request normalize-uri
- MINOR: uri_normalizer: Add support for supressing leading `../` for dotdot normalizer
- MINOR: uri_normalizer: Add a `sort-query` normalizer
- MINOR: uri_normalizer: Add a `percent-upper` normalizer
- MEDIUM: http_act: Rename uri-normalizers
- DOC: Add introduction to http-request normalize-uri
- DOC: Note that URI normalization is experimental
- BUG/MINOR: pools: maintain consistent ->allocated count on alloc failures
- BUG/MINOR: pools/buffers: make sure to always reserve the required buffers
- MINOR: pools: drop the unused static history of artificially failed allocs
- CLEANUP: pools: remove unused arguments to pool_evict_from_cache()
- MEDIUM: pools: move the cache into the pool header
- MINOR: pool: remove the size field from pool_cache_head
- MINOR: pools: rename CONFIG_HAP_LOCAL_POOLS to CONFIG_HAP_POOLS
- MINOR: pools: enable the fault injector in all allocation modes
- MINOR: pools: make the basic pool_refill_alloc()/pool_free() update needed_avg
- MEDIUM: pools: unify pool_refill_alloc() across all models
- CLEANUP: pools: re-merge pool_refill_alloc() and __pool_refill_alloc()
- MINOR: pools: call pool_alloc_nocache() out of the pool's lock
- CLEANUP: pools: move the lock to the only __pool_get_first() that needs it
- CLEANUP: pools: rename __pool_get_first() to pool_get_from_shared_cache()
- CLEANUP: pools: rename pool_*_{from,to}_cache() to *_local_cache()
- CLEANUP: pools: rename __pool_free() to pool_put_to_shared_cache()
- MINOR: tools: add statistical_prng_range() to get a random number over a range
- MINOR: pools: use cheaper randoms for fault injections
- MINOR: pools: move the fault injector to __pool_alloc()
- MINOR: pools: split the OS-based allocator in two
- MINOR: pools: always use atomic ops to maintain counters
- MINOR: pools: move pool_free_area() out of the lock in the locked version
- MINOR: pools: factor the release code into pool_put_to_os()
- MEDIUM: pools: make CONFIG_HAP_POOLS control both local and shared pools
- MINOR: pools: create unified pool_{get_from,put_to}_cache()
- MINOR: pools: evict excess objects using pool_evict_from_local_cache()
- MEDIUM: pools: make pool_put_to_cache() always call pool_put_to_local_cache()
- CLEANUP: pools: make the local cache allocator fall back to the shared cache
- CLEANUP: pools: merge pool_{get_from,put_to}_local_caches with generic ones
- CLEANUP: pools: uninline pool_put_to_cache()
- CLEANUP: pools: declare dummy pool functions to remove some ifdefs
- BUILD: pools: fix build with DEBUG_FAIL_ALLOC
- BUG/MINOR: server: make srv_alloc_lb() allocate lb_nodes for consistent hash
- CONTRIB: mod_defender: import the minimal number of includes
- CONTRIB: mod_defender: make the code build with the embedded includes
- CONTRIB: modsecurity: import the minimal number of includes
- CONTRIB: modsecurity: make the code build with the embedded includes
- CLEANUP: sample: Improve local variables in sample_conv_json_query
- CLEANUP: sample: Explicitly handle all possible enum values from mjson
- CLEANUP: sample: Use explicit return for successful `json_query`s
- CLEANUP: lists/tree-wide: rename some list operations to avoid some confusion
- CONTRIB: move spoa_example out of the tree
- BUG/MINOR: server: free srv.lb_nodes in free_server
- BUG/MINOR: logs: free logsrv.conf.file on exit
- BUG/MEDIUM: server: ensure thread-safety of server runtime creation
- MINOR: server: add log on dynamic server creation
- MINOR: server: implement delete server cli command
- CONTRIB: move spoa_server out of the tree
- CONTRIB: move modsecurity out of the tree
- BUG/MINOR: server: fix potential null gcc error in delete server
- BUG/MAJOR: mux-h2: Properly detect too large frames when decoding headers
- BUG/MEDIUM: mux-h2: Fix dfl calculation when merging CONTINUATION frames
- BUG/MINOR: uri_normalizer: Use delim parameter when building the sorted query in uri_normalizer_query_sort
- CLEANUP: uri_normalizer: Remove trailing whitespace
- MINOR: uri_normalizer: Add a `strip-dot` normalizer
- CONTRIB: move mod_defender out of the tree
- CLEANUP: contrib: remove the last references to the now dead contrib/ directory
- BUG/MEDIUM: config: fix cpu-map notation with both process and threads
- MINOR: config: add a diag for invalid cpu-map statement
- BUG/MINOR: mworker/init: don't reset nb_oldpids in non-mworker cases
- BUG/MINOR: mworker: don't use oldpids[] anymore for reload
- BUILD: makefile: fix the "make clean" target on strict bourne shells
- IMPORT: slz: import slz into the tree
- BUILD: compression: switch SLZ from out-of-tree to in-tree
- CI: github: do not build libslz any more
- CLEANUP: compression: remove calls to SLZ init functions
- BUG/MEDIUM: mux-h2: Properly handle shutdowns when received with data
- MINOR: cpuset: define a platform-independent cpuset type
- MINOR: cfgparse: use hap_cpuset for parse_cpu_set
- MEDIUM: config: use platform independent type hap_cpuset for cpu-map
- MINOR: thread: implement the detection of forced cpu affinity
- MINOR: cfgparse: support the comma separator on parse_cpu_set
- MEDIUM: cfgparse: detect numa and set affinity if needed
- MINOR: global: add option to disable numa detection
- BUG/MINOR: haproxy: fix compilation on macOS
- BUG/MINOR: cpuset: fix compilation on platform without cpu affinity
- MINOR: time: avoid unneeded updates to now_offset
- MINOR: time: avoid overwriting the same values of global_now
- CLEANUP: time: use __tv_to_ms() in tv_update_date() instead of open-coding
- MINOR: time: avoid u64 needlessly expensive computations for the 32-bit now_ms
- BUG/MINOR: peers: remove useless table check if initial resync is finished
- BUG/MEDIUM: peers: re-work connection to new process during reload.
- BUG/MEDIUM: peers: re-work refcnt on table to protect against flush
- BUG/MEDIUM: config: fix missing initialization in numa_detect_topology()
diff --git a/CHANGELOG b/CHANGELOG
index a3141d4..e3e7e4f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,176 @@
ChangeLog :
===========
+2021/04/23 : 2.4-dev17
+ - MINOIR: mux-pt/trace: Register a new trace source with its events
+ - BUG/MINOR: mux-pt: Fix a possible UAF because of traces in mux_pt_io_cb
+ - CI: travis: Drastically clean up .travis.yml
+ - CLEANUP: pattern: make all pattern tables read-only
+ - MINOR: trace: replace the trace() inline function with an equivalent macro
+ - MINOR: initcall: uniformize the section names between MacOS and other unixes
+ - CLEANUP: initcall: rename HA_SECTION to HA_INIT_SECTION
+ - MINOR: compiler: add macros to declare section names
+ - CLEANUP: initcall: rely on HA_SECTION_* instead of defining its own
+ - MINOR: global: declare a read_mostly section
+ - MINOR: fd: move a few read-mostly variables to their own section
+ - MINOR: epoll: move epoll_fd to read_mostly
+ - MINOR: kqueue: move kqueue_fd to read_mostly
+ - MINOR: pool: move pool declarations to read_mostly
+ - MINOR: threads: mark all_threads_mask as read_mostly
+ - MINOR: server: move idle_conn_task to read_mostly
+ - MINOR: protocol: move __protocol_by_family to read_mostly
+ - MINOR: pattern: make the pat_lru_seed read_mostly
+ - MINOR: trace: make trace sources read_mostly
+ - MINOR: freq_ctr: add a generic function to report the total value
+ - MEDIUM: freq_ctr: make read_freq_ctr_period() use freq_ctr_total()
+ - MEDIUM: freq_ctr: reimplement freq_ctr_remain_period() from freq_ctr_total()
+ - MINOR: freq_ctr: add the missing next_event_delay_period()
+ - MINOR: freq_ctr: unify freq_ctr and freq_ctr_period into freq_ctr
+ - MEDIUM: freq_ctr: replace the per-second counters with the generic ones
+ - MINOR: freq_ctr: add cpu_relax in the rotation loop of update_freq_ctr_period()
+ - MINOR: freq_ctr: simplify and improve the update function
+ - CLEANUP: time: remove the now unused ms_left_scaled
+ - MINOR: time: move the time initialization out of tv_update_date()
+ - MINOR: time: remove useless variable copies in tv_update_date()
+ - MINOR: time: change the global timeval and the the global tick at once
+ - MEDIUM: time: make the clock offset global and no per-thread
+ - MINOR: atomic: reimplement the relaxed version of x86 BTS/BTR
+ - MINOR: trace: Add the checks as a possible trace source
+ - MINOIR: checks/trace: Register a new trace source with its events
+ - MINOR: hlua: Add function to release a lua function
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering a task
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering a converter
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering a fetch
+ - BUG/MINOR: hlua: Fix memory leaks on error path when parsing a lua action
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering an action
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering a service
+ - BUG/MINOR: hlua: Fix memory leaks on error path when registering a cli keyword
+ - BUG/MINOR: cfgparse/proxy: Fix some leaks during proxy section parsing
+ - BUG/MINOR: listener: Handle allocation error when allocating a new bind_conf
+ - BUG/MINOR: cfgparse/proxy: Hande allocation errors during proxy section parsing
+ - MINOR: cfgparse/proxy: Group alloc error handling during proxy section parsing
+ - DOC: internals: update the SSL architecture schema
+ - BUG/MEDIUM: sample: Fix adjusting size in field converter
+ - MINOR: sample: add ub64dec and ub64enc converters
+ - CLEANUP: sample: align samples list in sample.c
+ - MINOR: ist: Add `istclear(struct ist*)`
+ - CI: cirrus: install "pcre" package
+ - MINOR: opentracing: correct calculation of the number of arguments in the args[]
+ - MINOR: opentracing: transfer of context names without prefix
+ - MINOR: sample: converter: Add mjson library.
+ - MINOR: sample: converter: Add json_query converter
+ - CI: travis-ci: enable weekly graviton2 builds
+ - DOC: ssl: Certificate hot update only works on fronted certificates
+ - DOC: ssl: Certificate hot update works on server certificates
+ - BUG/MEDIUM: threads: Ignore current thread to end its harmless period
+ - MINOR: threads: Only consider running threads to end a thread harmeless period
+ - BUG/MINOR: checks: Set missing id to the dummy checks frontend
+ - MINOR: logs: Add support of checks as session origin to format lf strings
+ - BUG/MINOR: connection: Fix fc_http_major and bc_http_major for TCP connections
+ - MINOR: connection: Make bc_http_major compatible with tcp-checks
+ - BUG/MINOR: ssl-samples: Fix ssl_bc_* samples when called from a health-check
+ - BUG/MINOR: http-fetch: Make method smp safe if headers were already forwarded
+ - MINOR: tcp_samples: Add samples to get src/dst info of the backend connection
+ - MINOR: tcp_samples: Be able to call bc_src/bc_dst from the health-checks
+ - BUG/MINOR: http_htx: Remove BUG_ON() from http_get_stline() function
+ - BUG/MINOR: logs: Report the true number of retries if there was no connection
+ - BUILD: makefile: Redirect stderr to /dev/null when probing options
+ - MINOR: uri_normalizer: Add uri_normalizer module
+ - MINOR: uri_normalizer: Add `enum uri_normalizer_err`
+ - MINOR: uri_normalizer: Add `http-request normalize-uri`
+ - MINOR: uri_normalizer: Add a `merge-slashes` normalizer to http-request normalize-uri
+ - MINOR: uri_normalizer: Add a `dotdot` normalizer to http-request normalize-uri
+ - MINOR: uri_normalizer: Add support for supressing leading `../` for dotdot normalizer
+ - MINOR: uri_normalizer: Add a `sort-query` normalizer
+ - MINOR: uri_normalizer: Add a `percent-upper` normalizer
+ - MEDIUM: http_act: Rename uri-normalizers
+ - DOC: Add introduction to http-request normalize-uri
+ - DOC: Note that URI normalization is experimental
+ - BUG/MINOR: pools: maintain consistent ->allocated count on alloc failures
+ - BUG/MINOR: pools/buffers: make sure to always reserve the required buffers
+ - MINOR: pools: drop the unused static history of artificially failed allocs
+ - CLEANUP: pools: remove unused arguments to pool_evict_from_cache()
+ - MEDIUM: pools: move the cache into the pool header
+ - MINOR: pool: remove the size field from pool_cache_head
+ - MINOR: pools: rename CONFIG_HAP_LOCAL_POOLS to CONFIG_HAP_POOLS
+ - MINOR: pools: enable the fault injector in all allocation modes
+ - MINOR: pools: make the basic pool_refill_alloc()/pool_free() update needed_avg
+ - MEDIUM: pools: unify pool_refill_alloc() across all models
+ - CLEANUP: pools: re-merge pool_refill_alloc() and __pool_refill_alloc()
+ - MINOR: pools: call pool_alloc_nocache() out of the pool's lock
+ - CLEANUP: pools: move the lock to the only __pool_get_first() that needs it
+ - CLEANUP: pools: rename __pool_get_first() to pool_get_from_shared_cache()
+ - CLEANUP: pools: rename pool_*_{from,to}_cache() to *_local_cache()
+ - CLEANUP: pools: rename __pool_free() to pool_put_to_shared_cache()
+ - MINOR: tools: add statistical_prng_range() to get a random number over a range
+ - MINOR: pools: use cheaper randoms for fault injections
+ - MINOR: pools: move the fault injector to __pool_alloc()
+ - MINOR: pools: split the OS-based allocator in two
+ - MINOR: pools: always use atomic ops to maintain counters
+ - MINOR: pools: move pool_free_area() out of the lock in the locked version
+ - MINOR: pools: factor the release code into pool_put_to_os()
+ - MEDIUM: pools: make CONFIG_HAP_POOLS control both local and shared pools
+ - MINOR: pools: create unified pool_{get_from,put_to}_cache()
+ - MINOR: pools: evict excess objects using pool_evict_from_local_cache()
+ - MEDIUM: pools: make pool_put_to_cache() always call pool_put_to_local_cache()
+ - CLEANUP: pools: make the local cache allocator fall back to the shared cache
+ - CLEANUP: pools: merge pool_{get_from,put_to}_local_caches with generic ones
+ - CLEANUP: pools: uninline pool_put_to_cache()
+ - CLEANUP: pools: declare dummy pool functions to remove some ifdefs
+ - BUILD: pools: fix build with DEBUG_FAIL_ALLOC
+ - BUG/MINOR: server: make srv_alloc_lb() allocate lb_nodes for consistent hash
+ - CONTRIB: mod_defender: import the minimal number of includes
+ - CONTRIB: mod_defender: make the code build with the embedded includes
+ - CONTRIB: modsecurity: import the minimal number of includes
+ - CONTRIB: modsecurity: make the code build with the embedded includes
+ - CLEANUP: sample: Improve local variables in sample_conv_json_query
+ - CLEANUP: sample: Explicitly handle all possible enum values from mjson
+ - CLEANUP: sample: Use explicit return for successful `json_query`s
+ - CLEANUP: lists/tree-wide: rename some list operations to avoid some confusion
+ - CONTRIB: move spoa_example out of the tree
+ - BUG/MINOR: server: free srv.lb_nodes in free_server
+ - BUG/MINOR: logs: free logsrv.conf.file on exit
+ - BUG/MEDIUM: server: ensure thread-safety of server runtime creation
+ - MINOR: server: add log on dynamic server creation
+ - MINOR: server: implement delete server cli command
+ - CONTRIB: move spoa_server out of the tree
+ - CONTRIB: move modsecurity out of the tree
+ - BUG/MINOR: server: fix potential null gcc error in delete server
+ - BUG/MAJOR: mux-h2: Properly detect too large frames when decoding headers
+ - BUG/MEDIUM: mux-h2: Fix dfl calculation when merging CONTINUATION frames
+ - BUG/MINOR: uri_normalizer: Use delim parameter when building the sorted query in uri_normalizer_query_sort
+ - CLEANUP: uri_normalizer: Remove trailing whitespace
+ - MINOR: uri_normalizer: Add a `strip-dot` normalizer
+ - CONTRIB: move mod_defender out of the tree
+ - CLEANUP: contrib: remove the last references to the now dead contrib/ directory
+ - BUG/MEDIUM: config: fix cpu-map notation with both process and threads
+ - MINOR: config: add a diag for invalid cpu-map statement
+ - BUG/MINOR: mworker/init: don't reset nb_oldpids in non-mworker cases
+ - BUG/MINOR: mworker: don't use oldpids[] anymore for reload
+ - BUILD: makefile: fix the "make clean" target on strict bourne shells
+ - IMPORT: slz: import slz into the tree
+ - BUILD: compression: switch SLZ from out-of-tree to in-tree
+ - CI: github: do not build libslz any more
+ - CLEANUP: compression: remove calls to SLZ init functions
+ - BUG/MEDIUM: mux-h2: Properly handle shutdowns when received with data
+ - MINOR: cpuset: define a platform-independent cpuset type
+ - MINOR: cfgparse: use hap_cpuset for parse_cpu_set
+ - MEDIUM: config: use platform independent type hap_cpuset for cpu-map
+ - MINOR: thread: implement the detection of forced cpu affinity
+ - MINOR: cfgparse: support the comma separator on parse_cpu_set
+ - MEDIUM: cfgparse: detect numa and set affinity if needed
+ - MINOR: global: add option to disable numa detection
+ - BUG/MINOR: haproxy: fix compilation on macOS
+ - BUG/MINOR: cpuset: fix compilation on platform without cpu affinity
+ - MINOR: time: avoid unneeded updates to now_offset
+ - MINOR: time: avoid overwriting the same values of global_now
+ - CLEANUP: time: use __tv_to_ms() in tv_update_date() instead of open-coding
+ - MINOR: time: avoid u64 needlessly expensive computations for the 32-bit now_ms
+ - BUG/MINOR: peers: remove useless table check if initial resync is finished
+ - BUG/MEDIUM: peers: re-work connection to new process during reload.
+ - BUG/MEDIUM: peers: re-work refcnt on table to protect against flush
+ - BUG/MEDIUM: config: fix missing initialization in numa_detect_topology()
+
2021/04/09 : 2.4-dev16
- CLEANUP: dev/flags: remove useless test in the stdin number parser
- MINOR: No longer rely on deprecated sample fetches for predefined ACLs