Changes since version 1.9-dev8 : Baptiste Assmann (1): BUG/MINOR: ssl: ssl_sock_parse_clienthello ignores session id Christopher Faulet (40): BUG/MINOR: proto_htx: only mark connections private if NTLM is detected BUG/MINOR: cfgparse: Fix transition between 2 sections with the same name BUG/MINOR: http: Use out buffer instead of trash to display error snapshot BUG/MINOR: htx: Fix block size calculation when a start-line is added/replaced BUG/MINOR: mux-h1: Fix processing of "Connection: " header on outgoing messages BUG/MEDIUM: mux-h1: Reset the H1 parser when an outgoing message is processed BUG/MINOR: proto_htx: Send outgoing data to client to start response processing BUG/MINOR: htx: Stop a header or a start line lookup on the first EOH or EOM MEDIUM: conn_stream: Add a way to get mux's info on a CS from the upper layer MINOR: mux-h1: Implement get_cs_info() callback MINOR: stream: Rely on CS's info if it exists and fallback on session's ones MINOR: proto_htx: Use conn_stream's info to set t_idle duration when possible MINOR: mux-h1: Don't rely on the stream anymore in h1_set_srv_conn_mode() MINOR: mux-h1: Write last chunk and trailers if not found in the HTX message MINOR: mux-h1: Be prepare to fail when EOM is added during trailers parsing MINOR: mux-h1: Subscribe to send in h1_snd_buf() when not all data have been sent MINOR: mux-h1: Consume channel's data in a loop in h1_snd_buf() MEDIUM: mux-h1: Add keep-alive outgoing connections in connections list MINOR: htx: Add function to add an HTX block just before another one MINOR: htx: Add function to iterate on an HTX message using HTX blocks MINOR: htx: Add a function to find the HTX block corresponding to a data offset MINOR: stats: Don't add end-of-data marker and trailers in the HTX response MEDIUM: htx: Change htx_sl to be a struct instead of an union MINOR: htx: Add the start-line offset for the HTX message in the HTX structure MEDIUM: htx: Don't rely on h1_sl anymore except during H1 header parsing MINOR: proto-htx: Use the start-line flags to set the HTTP messsage ones MINOR: htx: Add BODYLESS flags on the HTX start-line and the HTTP message MINOR: proto_htx: Use full HTX messages to send 100-Continue responses MINOR: proto_htx: Use full HTX messages to send 103-Early-Hints responses MINOR: proto_htx: Use full HTX messages to send 401 and 407 responses MINOR: proto_htx: Send valid HTX message when redir mode is enabled on a server MINOR: proto_htx: Send valid HTX message to send 30x responses MEDIUM: proto_htx: Convert all HTTP error messages into HTX MINOR: mux-h1: Process conn_mode on the EOH when no connection header is found MINOR: mux-h1: Change client conn_mode on an explicit close for the response MINOR: mux-h1: Capture bad H1 messages MAJOR: filters: Adapt filters API to be compatible with the HTX represenation MEDIUM: proto_htx/filters: Add data filtering during the forwarding MINOR: flt_trace: Adapt to be compatible with the HTX representation MEDIUM: compression: Adapt to be compatible with the HTX representation Frédéric Lécaille (2): REGTEST: Add a basic test for the cache. REGTEST: Fix several issues. Lukas Tribus (2): BUILD/MINOR: ssl: fix build with non-alpn/non-npn libssl MINOR: ssl: free ctx when libssl doesn't support NPN Olivier Houchard (20): BUILD: Makefile: Disable -Wcast-function-type if it exists. BUG/MEDIUM: h2: Don't bogusly error if the previous stream was closed. BUG/MEDIUM: mux_pt: Don't forget to unsubscribe() on attach. BUG/MEDIUM: connections: Wake the stream once the mux is chosen. BUG/MEDIUM: connections: Don't forget to detach the connection from the SI. BUG/MEDIUM: stream_interface: Don't check if the handshake is done. BUG/MEDIUM: stream_interface: Make sure we read all the data available. BUG/MEDIUM: h2: Call h2_process() if there's an error on the connection. BUG/MEDIUM: session: Remove the session from the session_list in session_free. BUG/MEDIUM: streams: Don't assume we have a CS in sess_update_st_con_tcp. BUG/MEDIUM: connections: Don't assume we have a mux in connect_server(). BUG/MEDIUM: connections: Remove the connection from the idle list before destroy. BUG/MEDIUM: session: properly clean the outgoing connection before freeing. BUG/MEDIUM: mux_pt: Don't try to send if handshake is not done. MEDIUM: connections: Put H2 connections in the idle list if http-reuse always. MEDIUM: h2: Destroy a connection with no stream if it has no owner. MAJOR: sessions: Store multiple outgoing connections in the session. MEDIUM: session: Steal owner-less connections on end of transaction. MEDIUM: server: Be smarter about deciding to reuse the last server. BUG/MEDIUM: Special-case http_proxy when dealing with outgoing connections. PiBa-NL (2): REGTEST/MINOR: script: add run-regtests.sh script REGTEST: lua: check socket functionality from a lua-task Tim Duesterhus (2): BUG/MINOR: mworker: Do not attempt to close(2) fd -1 CLEANUP: http: Fix typo in init_http's comment William Lallemand (4): BUG/MEDIUM: mworker: fix FD leak upon reload BUG/MEDIUM: mworker: avoid leak of client socket REORG: mworker: declare master variable in global.h BUG/MEDIUM: listeners: CLOEXEC flag is not correctly set Willy Tarreau (29): BUILD: compression: fix build error with DEFAULT_MAXZLIBMEM MINOR: compression: always create the compression pool BUILD: htx: fix fprintf format inconsistency on 32-bit platforms BUILD: buffers: buf.h requires unistd to get ssize_t on libmusl MINOR: initcall: introduce a way to register init functions to call at boot MINOR: init: process all initcalls in order at boot time MEDIUM: init: convert all trivial registration calls to initcalls MINOR: thread: provide a set of lock initialisers MINOR: threads: add new macros to declare self-initializing locks MEDIUM: init: use self-initializing spinlocks and rwlocks MINOR: initcall: apply initcall to all register_build_opts() calls MINOR: initcall: use initcalls for most post_{check,deinit} and per_thread* MINOR: initcall: use initcalls for section parsers MINOR: memory: add a callback function to create a pool MEDIUM: init: use initcall for all fixed size pool creations MEDIUM: memory: use pool_destroy_all() to destroy all pools on deinit() MEDIUM: initcall: use initcalls for a few initialization functions MEDIUM: memory: make the pool cache an array and not a thread_local MINOR: h2: make struct h2_ops static BUG/MINOR: connection: report mux modes when HTX is supported MINOR: htx: add a function to cut the beginning of a DATA block MINOR: h2: implement H2->HTX request header frame transcoding MEDIUM: mux-h2: register mux for both HTTP and HTX modes MEDIUM: mux-h2: make h2_rcv_buf() support HTX transfers MEDIUM: mux-h2: make h2_snd_buf() HTX-aware MEDIUM: mux-h2: add basic H2->HTX transcoding support for headers MEDIUM: mux-h2: implement emission of H2 headers frames from HTX blocks MEDIUM: mux-h2: implement the emission of DATA frames from HTX DATA blocks MEDIUM: mux-h2: support passing H2 DATA frames to HTX blocks