сб, 16 апр. 2022 г. в 19:07, Willy Tarreau <[email protected]>: > Hi, > > HAProxy 2.6-dev6 was released on 2022/04/16. It added 150 new commits > after version 2.6-dev5. >
can we schedule those coverity findings before 2.6 ? src/haproxy.c: unintentional integer overflow suspected by coverity · Issue #1585 · haproxy/haproxy (github.com) <https://github.com/haproxy/haproxy/issues/1585> src/cfgparse.c: use after free suspected by coverity · Issue #1563 · haproxy/haproxy (github.com) <https://github.com/haproxy/haproxy/issues/1563> > > This release mostly focuses on integrating the second half of the merge > of the stream interface and conn_stream that I spoke about last week, and > it concludes this operation that was envisionned since the introduction of > the conn_stream in 1.8. While the change is very methodic, it touches many > places and there is a non-null risk that something was broken, hence the > reason for exposing this rework as soon as possible. There is no expected > change for users (aside a possible bug of course), but for developers it > will change the way to access the lower layers from the upper ones (it will > be simpler but for those like me who've used that since 1.4 or so, it will > take some time to get used to it). > > QUIC saw a small batch of fixes and improvements (some are still pending). > One visible part is that the SSL sample fetch functions now work on QUIC > connections (e.g. ssl_fc or ssl_f_serial etc) and that the source address > is now properly retrieved. The destination address is still inaccurate, > the listener's address is retrieved (but if it's bound to an exact address > instead of 0.0.0.0, the correct one will be reported). The reason is the > limited API to retrieve the destination address of an incoming datagram. > We've found a possibility to explore soon on Linux. > > A few TCP info sample fetch methods were enabled on MacOS. > > A few long-pending issues were addressed, and these fixes will be > backported > to affected versions, but there's nothing exceptional on this front. > > After some discussion with William and Emeric around the build trouble made > by OpenSSL engines in OpenSSL 3.0 that dumps a torrent of warnings that > hide > important ones, and the fact that users of engines usually build some or > all > parts themselves, it was decided that engines are not enabled by default > anymore, but that they may be enabled by passing "USE_ENGINE=1" to make. > As such we now have the two following options: > > - build with just USE_OPENSSL=1, engines are disabled, no warning should > be emitted. The SSL maintainers think it should be the default since > the future of engines in OpenSSL is uncertain due to the new > "providers" > API that might possibly change certain settings in the future anyway. > > - build with USE_OPENSSL=1 USE_ENGINE=1 to continue to enable engines. > In this case an extra option is passed to disable deprecation warnings > in OpenSSL so that the build should not emit any warning either, but > may also hide future deprecation warnings. > > My personal suspicion is that distros will build without engines since > there is none that we're aware of that works out of the box without having > at least to touch openssl a little bit, and that advanced users will > continue to build their own optimized packages with this option enabled. > Time will tell, as usual. > > Another improvement which is not related to the code, with the precious > help of Tim and Cyril, we could finally set up an automatic generation of > the HTML documentation. It's performed daily and published on github pages > at http://docs.haproxy.org. > > William has also set up a build system that's triggered by the CI and that > produces packages of the latest development version for various distros. > The goal is to help users deploy development versions to participate to > the testing and benefit early from new features, as we know that till now > it used to require particular efforts and that not everyone has enough > time to think about rebuilding packages often. I'll let William expand on > this point regarding what's covered and how to use this. > that's interesting. any links? > > Finally we've added links to remaining issues affecting the development > versions below (verified bugs, unqualified ones and automated code > reports). > These are just shortcuts for filters in the issue tracker, but it's > pleasant > to see that there are quite few left thus we're on a good trend. > > LAST MINUTE: > ------------ > The deployment on haproxy.org crashed during the typing of this message. > I've pushed a fix that seems to have fixed it but I'll double-check with > Christopher next week if I'm fixing the bug of just hiding it. Please do > not deploy it in production before we send the signal that it's OK (we'll > emit a new version then). > > Please find the usual URLs below : > Site index : http://www.haproxy.org/ > Documentation : http://docs.haproxy.org/ > Wiki : https://github.com/haproxy/wiki/wiki > Discourse : http://discourse.haproxy.org/ > Slack channel : https://slack.haproxy.org/ > Issue tracker : https://github.com/haproxy/haproxy/issues > Sources : http://www.haproxy.org/download/2.6/src/ > Git repository : http://git.haproxy.org/git/haproxy.git/ > Git Web browsing : http://git.haproxy.org/?p=haproxy.git > Changelog : http://www.haproxy.org/download/2.6/src/CHANGELOG > Pending bugs : http://www.haproxy.org/l/pending-bugs > Reviewed bugs : http://www.haproxy.org/l/reviewed-bugs > Code reports : http://www.haproxy.org/l/code-reports > > Willy > --- > Complete changelog : > Amaury Denoyelle (6): > BUG/MINOR: h3: fix build with DEBUG_H3 > BUG/MINOR: mux-quic: prevent a crash in session_free on mux.destroy > BUG/MINOR: quic-sock: do not double free session on conn init failure > BUG/MINOR: quic: fix return value for error in start > MINOR: quic: emit CONNECTION_CLOSE on app init error > BUG/MEDIUM: quic: properly clean frames on stream free > > Christopher Faulet (90): > BUG/MINOR: mux-h1: Don't release unallocated CS on error path > MINOR: applet: Make .init callback more generic > MINOR: conn-stream: Add flags to set the type of the endpoint > MEDIUM: applet: Set the appctx owner during allocation > MAJOR: conn-stream: Invert conn-stream endpoint and its context > REORG: Initialize the conn-stream by hand in cs_init() > MEDIUM: conn-stream: Add an endpoint structure in the conn-stream > MINOR: conn-stream: Move some CS flags to the endpoint > MEDIUM: conn-stream: Be able to pass endpoint to create a conn-stream > MEDIUM: conn-stream: Pre-allocate endpoint to create CS from muxes > and applets > REORG: applet: Uninline appctx_new function > MAJOR: conn-stream: Share endpoint struct between the CS and the > mux/applet > MEDIUM: conn-stream: Move remaning flags from CS to endpoint > MINOR: mux-pt: Rely on the endpoint instead of the conn-stream when > possible > MINOR: conn-stream: Add ISBACK conn-stream flag > MINOR: conn-stream: Add header file with util functions related to > conn-streams > MEDIUM: tree-wide: Use CS util functions instead of SI ones > MINOR: stream-int/txn: Move buffer for L7 retries in the HTTP > transaction > CLEANUP: http-ana: Remove http_alloc_txn() function > MINOR: stream-int/stream: Move conn_retries counter in the stream > MINOR: stream: Simplify retries counter calculation > MEDIUM: stream-int/conn-stream: Move src/dst addresses in the > conn-stream > MINOR: stream-int/conn-stream: Move half-close timeout in the > conn-stream > MEDIUM: stream-int/stream: Use connect expiration instead of SI > expiration > MINOR: stream-int/conn-stream: Report error to the CS instead of the > SI > MEDIUM: conn-stream: Use endpoint error instead of conn-stream error > MINOR: channel: Use conn-streams as channel producer and consumer > MINOR: stream-int: Remove SI_FL_KILL_CON to rely on conn-stream > endpoint only > MINOR: mux-h2/mux-fcgi: Fully rely on CS_EP_KILL_CONN > MINOR: stream-int: Remove SI_FL_NOLINGER/NOHALF to rely on CS flags > instead > MINOR: stream-int: Remove SI_FL_DONT_WAKE to rely on CS flags instead > MINOR: stream-int: Remove SI_FL_INDEP_STR to rely on CS flags instead > MINOR: stream-int: Remove SI_FL_SRC_ADDR to rely on stream flags > instead > CLEANUP: stream-int: Remove unused SI_FL_CLEAN_ABRT flag > MINOR: stream: Only save previous connection state for the server > side > MEDIUM: stream-int: Move SI err_type in the stream > MEDIUM: stream-int/conn-stream: Move stream-interface state in the > conn-stream > MINOR: stream-int/stream: Move si_retnclose() in the stream scope > MINOR: stream-int/backend: Move si_connect() in the backend scope > MINOR: stream-int/conn-stream: Move si_conn_ready() in the > conn-stream scope > MINOR: conn-stream/connection: Move SHR/SHW modes in the connection > scope > MEDIUM: conn-stream: Be prepared to fail to attach a cs to a mux > MEDIUM: stream-int/conn-stream: Handle I/O subscriptions in the > conn-stream > MINOR: conn-stream: Rename CS functions dedicated to connections > MINOR: stream-int/conn-stream: Move si_shut* and si_chk* in > conn-stream scope > MEDIUM: stream-int/conn-stream: Move si_ops in the conn-stream scope > MINOR: applet: Use the CS to register and release applets instead of > SI > MINOR: connection: unconst mux's get_fist_cs() callback function > MINOR: stream-int/connection: Move conn_si_send_proxy() in the > connection scope > REORG: stream-int: Export si_cs_recv(), si_cs_send() and > si_cs_process() > REORG: stream-int: Move si_is_conn_error() in the header file > REORG: conn-stream: Move cs_shut* and cs_chk* in cs_utils > REORG: conn-stream: Move cs_app_ops in conn_stream.c > MINOR: stream-int-conn-stream: Move si_update_* in conn-stream scope > MINOR: stream-int/stream: Move si_update_both in stream scope > MEDIUM: conn-stream/applet: Add a data callback for applets > MINOR: stream-int/conn-stream: Move stream_int_read0() in the > conn-stream scope > MINOR: stream-int/conn-stream: Move stream_int_notify() in the > conn-stream scope > MINOR: stream-int/conn-stream: Move si_cs_io_cb() in the conn-stream > scope > MINOR: stream-int/conn-stream: Move si_sync_recv/send() in > conn-stream scope > MINOR: conn-stream: Move si_conn_cb in the conn-stream scope > MINOR: stream-int/conn-stream Move si_is_conn_error() in the > conn-stream scope > MINOR: stream-int/conn-stream: Move si_alloc_ibuf() in the > conn-stream scope > CLEANUP: stream-int: Remove unused SI functions > MEDIUM: stream-int/conn-stream: Move blocking flags from SI to CS > MEDIUM: stream-int/conn-stream: Move I/O functions to conn-stream > REORG: stream-int/conn-stream: Move remaining functions to > conn-stream > MINOR: stream: Use conn-stream to report server error > MINOR: http-ana: Use CS to perform L7 retries > MEDIUM: stream: Don't use the stream-int anymore in process_stream() > MINOR: conn-stream: Remove the stream-interface from the conn-stream > DEV: flags: No longer dump SI flags > CLEANUP: tree-wide: Remove any ref to stream-interfaces > CLEANUP: conn-stream: Don't export internal functions > DOC: conn-stream: Add comments on functions of the new CS api > MEDIUM: check: Use a new conn-stream for each health-check run > CLEANUP: muxes: Remove MX_FL_CLEAN_ABRT flag > MINOR: conn-stream: Use a dedicated function to conditionally remove > a CS > CLEANUP: conn-stream: rename cs_register_applet() to > cs_applet_create() > MINOR: muxes: Improve show_fd callbacks to dump endpoint flags > MINOR: mux-h1: Rely on the endpoint instead of the conn-stream when > possible > MINOR: muxes: Don't expect to have a mux without connection in > destroy callback > MINOR: muxes: Don't handle proto upgrade for muxes not supporting it > MINOR: muxes: Don't expect to call release function with no mux > defined > MINOR: conn-stream: Use unsafe functions to get conn/appctx in > cs_detach_endp > BUG/MEDIUM: mux-h1: Don't request more room on partial trailers > BUILD: http-client: Avoid dead code when compiled without SSL support > BUG/MEDIUM: connection: Don't crush context pointer location if it > is a CS > BUG/MEDIUM: fcgi-app: Use http_msg flags to know if C-L header can > be added > BUG/MEDIUM: compression: Don't forget to update htx_sl and http_msg > flags > > David CARLIER (2): > MINOR: tcp_sample: clarifying samples support per os, for further > expansion. > MINOR: tcp_sample: extend support for get_tcp_info to macOs. > > Frédéric Lécaille (1): > BUG/MINOR: quic: Avoid starting the mux if no ALPN sent by the client > > Ilya Shipitsin (2): > DOC: adjust QUIC instruction in INSTALL > CI: cirrus: switch to FreeBSD-13.0 > > Tim Duesterhus (2): > CI: Update to actions/checkout@v3 > CI: Update to actions/cache@v3 > > William Lallemand (2): > BUILD: ssl: add USE_ENGINE and disable the openssl engine by default > CI: github actions: disable -Wno-deprecated > > Willy Tarreau (45): > CLEANUP: connection: reduce the with of the mux dump output > BUG/MINOR: stats: define the description' background color in dark > color scheme > BUILD: makefile: pass USE_ENGINE to cflags > BUILD: xprt-quic: replace ERR_func_error_string() with > ERR_peek_error_func() > DOC: install: document the fact that SSL engines are not enabled by > default > BUILD: makefile: silence unbearable OpenSSL deprecation warnings > MINOR: sock: check configured limits at the sock layer, not the > listener's > MINOR: connection: add a new flag CO_FL_FDLESS on fd-less connections > MINOR: connection: add conn_fd() to retrieve the FD only when it > exists > MINOR: stream: only dump connections' FDs when they are valid > MINOR: connection: use conn_fd() when displaying connection errors > MINOR: connection: skip FD-based syscalls for FD-less connections > MEDIUM: connection: panic when calling FD-specific functions on > FD-less conns > MINOR: mux-quic: properly set the flags and name fields > MINOR: connection: rearrange conn_get_src/dst to be a bit more > extensible > MINOR: protocol: add get_src() and get_dst() at the protocol level > MINOR: quic-sock: provide a pair of get_src/get_dst functions > MEDIUM: ssl: improve retrieval of ssl_sock_ctx and SSL detection > MEDIUM: ssl: stop using conn->xprt_ctx to access the ssl_sock_ctx > MEDIUM: xprt-quic: implement get_ssl_sock_ctx() > MEDIUM: quic: move conn->qc into conn->handle > BUILD: ssl: fix build warning with previous changes to ssl_sock_ctx > BUILD: ssl: add an unchecked version of __conn_get_ssl_sock_ctx() > MINOR: ssl: refine the error testing for fc_err and fc_err_str > BUG/MINOR: sock: do not double-close the accepted socket on the > error path > MINOR: log: add '~' to frontend when the transport layer provides SSL > BUILD/DEBUG: lru: fix printf format in debug code > BUILD: peers: adjust some printf format to silence cppcheck > BUILD/DEBUG: hpack-tbl: fix format string in standalone debug code > BUILD/DEBUG: hpack: use unsigned int in printf format in debug code > BUILD: halog: fix some incorrect signs in printf formats for integers > BUG/MINOR: mux-h2: do not send GOAWAY if SETTINGS were not sent > BUG/MINOR: cache: do not display expired entries in "show cache" > BUILD: debug: mark the __start_mem_stats/__stop_mem_stats symbols as > weak > BUILD: initcall: mark the __start_i_* symbols as weak, not global > BUG/MINOR: mux-h2: do not use timeout http-keep-alive on backend side > BUG/MINOR: mux-h2: use timeout http-request as a fallback for > http-keep-alive > BUILD: sched: workaround crazy and dangerous warning in Clang 14 > BUILD: compiler: use a more portable set of asm(".weak") statements > BUG/MEDIUM: stream: do not abort connection setup too early > CLEANUP: extcheck: do not needlessly preset the server's address/port > MINOR: extcheck: fill in the server's UNIX socket address when known > SCRIPTS: announce-release: update the doc's URL > DOC: lua: update a few doc URLs > SCRIPTS: announce-release: add shortened links to pending issues > > --- > >

