Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package haproxy for openSUSE:Factory checked in at 2025-07-09 17:29:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/haproxy (Old) and /work/SRC/openSUSE:Factory/.haproxy.new.7373 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "haproxy" Wed Jul 9 17:29:29 2025 rev:163 rq:1291449 version:3.2.3+git0.1844da7c6 Changes: -------- --- /work/SRC/openSUSE:Factory/haproxy/haproxy.changes 2025-07-02 17:30:58.111397575 +0200 +++ /work/SRC/openSUSE:Factory/.haproxy.new.7373/haproxy.changes 2025-07-09 17:30:06.919822613 +0200 @@ -1,0 +2,17 @@ +Wed Jul 09 09:19:41 UTC 2025 - Marcus Rueckert <mrueck...@suse.de> + +- Update to version 3.2.3+git0.1844da7c6: + * [RELEASE] Released version 3.2.3 + * BUILD/MEDIUM: deviceatlas: fix when installed in custom locations. + * BUG/MINOR: http-act: Fix parsing of the expression argument for pause action + * BUG/MINOR: ssl: crash in ssl_sock_io_cb() with SSL traces and idle connections + * BUG/MINOR: ssl/ocsp: fix definition discrepancies with ocsp_update_init() + * BUG/MINOR: quic: Missing TLS 1.3 QUIC cipher suites and groups inits (OpenSSL 3.5 QUIC API) + * CI: github: update to OpenSSL 3.5.1 + * BUG/MEDIUM: quic: SSL/TCP handshake failures with OpenSSL 3.5 + * BUILD: quic: QUIC build against OpenSSL 3.5 broken + * CI: github: update the stable CI to ubuntu-24.04 + * CI: github: add an OpenSSL 3.5.0 job + * CI: enable USE_QUIC=1 for OpenSSL versions >= 3.5.0 + +------------------------------------------------------------------- Old: ---- haproxy-3.2.2+git0.a55102f09.tar.gz New: ---- haproxy-3.2.3+git0.1844da7c6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ haproxy.spec ++++++ --- /var/tmp/diff_new_pack.NEdB2O/_old 2025-07-09 17:30:10.651978336 +0200 +++ /var/tmp/diff_new_pack.NEdB2O/_new 2025-07-09 17:30:10.667979004 +0200 @@ -72,7 +72,7 @@ %endif Name: haproxy -Version: 3.2.2+git0.a55102f09 +Version: 3.2.3+git0.1844da7c6 Release: 0 # Summary: The Reliable, High Performance TCP/HTTP Load Balancer ++++++ _service ++++++ --- /var/tmp/diff_new_pack.NEdB2O/_old 2025-07-09 17:30:11.135998532 +0200 +++ /var/tmp/diff_new_pack.NEdB2O/_new 2025-07-09 17:30:11.159999533 +0200 @@ -6,7 +6,7 @@ <param name="versionformat">@PARENT_TAG@+git@TAG_OFFSET@.%h</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> - <param name="revision">v3.2.2</param> + <param name="revision">v3.2.3</param> <param name="changesgenerate">enable</param> </service> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.NEdB2O/_old 2025-07-09 17:30:11.280004540 +0200 +++ /var/tmp/diff_new_pack.NEdB2O/_new 2025-07-09 17:30:11.320006209 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">http://git.haproxy.org/git/haproxy-3.2.git/</param> - <param name="changesrevision">a55102f095b9fa9cc02e29207740d9ca7ac72af0</param> + <param name="changesrevision">1844da7c65c5655d93c79925ed2244ca8cda9822</param> </service> </servicedata> (No newline at EOF) ++++++ haproxy-3.2.2+git0.a55102f09.tar.gz -> haproxy-3.2.3+git0.1844da7c6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/.github/matrix.py new/haproxy-3.2.3+git0.1844da7c6/.github/matrix.py --- old/haproxy-3.2.2+git0.a55102f09/.github/matrix.py 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/.github/matrix.py 2025-07-09 10:25:50.000000000 +0200 @@ -125,7 +125,7 @@ # Ubuntu if "haproxy-" in ref_name: - os = "ubuntu-22.04" # stable branch + os = "ubuntu-24.04" # stable branch else: os = "ubuntu-24.04" # development branch @@ -218,6 +218,7 @@ "stock", "OPENSSL_VERSION=1.0.2u", "OPENSSL_VERSION=1.1.1s", + "OPENSSL_VERSION=3.5.1", "QUICTLS=yes", "WOLFSSL_VERSION=5.7.0", "AWS_LC_VERSION=1.39.0", @@ -232,8 +233,6 @@ for ssl in ssl_versions: flags = ["USE_OPENSSL=1"] - if ssl == "BORINGSSL=yes" or ssl == "QUICTLS=yes" or "LIBRESSL" in ssl or "WOLFSSL" in ssl or "AWS_LC" in ssl: - flags.append("USE_QUIC=1") if "WOLFSSL" in ssl: flags.append("USE_OPENSSL_WOLFSSL=1") if "AWS_LC" in ssl: @@ -246,6 +245,15 @@ if "OPENSSL" in ssl and "latest" in ssl: ssl = determine_latest_openssl(ssl) + openssl_supports_quic = False + try: + openssl_supports_quic = version.Version(ssl.split("OPENSSL_VERSION=",1)[1]) >= version.Version("3.5.0") + except: + pass + + if ssl == "BORINGSSL=yes" or ssl == "QUICTLS=yes" or "LIBRESSL" in ssl or "WOLFSSL" in ssl or "AWS_LC" in ssl or openssl_supports_quic: + flags.append("USE_QUIC=1") + matrix.append( { "name": "{}, {}, ssl={}".format(os, CC, clean_ssl(ssl)), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/CHANGELOG new/haproxy-3.2.3+git0.1844da7c6/CHANGELOG --- old/haproxy-3.2.2+git0.a55102f09/CHANGELOG 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/CHANGELOG 2025-07-09 10:25:50.000000000 +0200 @@ -1,6 +1,19 @@ ChangeLog : =========== +2025/07/09 : 3.2.3 + - CI: enable USE_QUIC=1 for OpenSSL versions >= 3.5.0 + - CI: github: add an OpenSSL 3.5.0 job + - CI: github: update the stable CI to ubuntu-24.04 + - BUILD: quic: QUIC build against OpenSSL 3.5 broken + - BUG/MEDIUM: quic: SSL/TCP handshake failures with OpenSSL 3.5 + - CI: github: update to OpenSSL 3.5.1 + - BUG/MINOR: quic: Missing TLS 1.3 QUIC cipher suites and groups inits (OpenSSL 3.5 QUIC API) + - BUG/MINOR: ssl/ocsp: fix definition discrepancies with ocsp_update_init() + - BUG/MINOR: ssl: crash in ssl_sock_io_cb() with SSL traces and idle connections + - BUG/MINOR: http-act: Fix parsing of the expression argument for pause action + - BUILD/MEDIUM: deviceatlas: fix when installed in custom locations. + 2025/07/02 : 3.2.2 - BUG/MINOR: config/server: reject QUIC addresses - BUG/MINOR: http-ana: Properly handle keep-query redirect option if no QS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/VERDATE new/haproxy-3.2.3+git0.1844da7c6/VERDATE --- old/haproxy-3.2.2+git0.a55102f09/VERDATE 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/VERDATE 2025-07-09 10:25:50.000000000 +0200 @@ -1,2 +1,2 @@ $Format:%ci$ -2025/07/02 +2025/07/09 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/VERSION new/haproxy-3.2.3+git0.1844da7c6/VERSION --- old/haproxy-3.2.2+git0.a55102f09/VERSION 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/VERSION 2025-07-09 10:25:50.000000000 +0200 @@ -1 +1 @@ -3.2.2 +3.2.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/addons/deviceatlas/Makefile.inc new/haproxy-3.2.3+git0.1844da7c6/addons/deviceatlas/Makefile.inc --- old/haproxy-3.2.2+git0.a55102f09/addons/deviceatlas/Makefile.inc 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/addons/deviceatlas/Makefile.inc 2025-07-09 10:25:50.000000000 +0200 @@ -5,7 +5,8 @@ CXXLIB := -lstdc++ ifeq ($(DEVICEATLAS_SRC),) -OPTIONS_LDFLAGS += -lda +OPTIONS_CFLAGS += -I$(DEVICEATLAS_INC) +OPTIONS_LDFLAGS += -Wl,-rpath,$(DEVICEATLAS_LIB) -L$(DEVICEATLAS_LIB) -lda else DEVICEATLAS_INC = $(DEVICEATLAS_SRC) DEVICEATLAS_LIB = $(DEVICEATLAS_SRC) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/doc/configuration.txt new/haproxy-3.2.3+git0.1844da7c6/doc/configuration.txt --- old/haproxy-3.2.2+git0.a55102f09/doc/configuration.txt 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/doc/configuration.txt 2025-07-09 10:25:50.000000000 +0200 @@ -3,7 +3,7 @@ Configuration Manual ---------------------- version 3.2 - 2025/07/02 + 2025/07/09 This document covers the configuration language as implemented in the version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/include/haproxy/openssl-compat.h new/haproxy-3.2.3+git0.1844da7c6/include/haproxy/openssl-compat.h --- old/haproxy-3.2.2+git0.a55102f09/include/haproxy/openssl-compat.h 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/include/haproxy/openssl-compat.h 2025-07-09 10:25:50.000000000 +0200 @@ -63,6 +63,9 @@ ssl_encryption_application }; +#else +/* QUIC TLS API */ +#define HAVE_OPENSSL_QUICTLS #endif #endif /* USE_QUIC_OPENSSL_COMPAT */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/src/http_act.c new/haproxy-3.2.3+git0.1844da7c6/src/http_act.c --- old/haproxy-3.2.2+git0.a55102f09/src/http_act.c 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/src/http_act.c 2025-07-09 10:25:50.000000000 +0200 @@ -1822,8 +1822,12 @@ memprintf(err, "null value is not valid for a 'pause' rule"); return ACT_RET_PRS_ERR; } + else { + /* a time volue was successfully parsed */ + cur_arg++; + } - *orig_arg = cur_arg + 1; + *orig_arg = cur_arg; return ACT_RET_PRS_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/src/quic_ssl.c new/haproxy-3.2.3+git0.1844da7c6/src/quic_ssl.c --- old/haproxy-3.2.2+git0.a55102f09/src/quic_ssl.c 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/src/quic_ssl.c 2025-07-09 10:25:50.000000000 +0200 @@ -11,6 +11,14 @@ #include <haproxy/trace.h> DECLARE_POOL(pool_head_quic_ssl_sock_ctx, "quic_ssl_sock_ctx", sizeof(struct ssl_sock_ctx)); +const char *quic_ciphers = "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384" + ":TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_SHA256"; +#ifdef HAVE_OPENSSL_QUIC +const char *quic_groups = "X25519:P-256:P-384:P-521:X25519MLKEM768"; +#else +const char *quic_groups = "X25519:P-256:P-384:P-521"; +#endif + /* Set the encoded version of the transport parameter into the TLS * stack depending on <ver> QUIC version and <server> boolean which must @@ -558,7 +566,6 @@ { int ret = 0; struct quic_conn *qc = SSL_get_ex_data(ssl, ssl_qc_app_data_index); - struct listener *l = objt_listener(qc->target); TRACE_ENTER(QUIC_EV_TRANSP_PARAMS, qc); @@ -567,7 +574,7 @@ QUIC_EV_TRANSP_PARAMS, qc); ret = 1; } - else if (!quic_transport_params_store(qc, !l, params, params + params_len)) { + else if (!quic_transport_params_store(qc, 0, params, params + params_len)) { goto err; } @@ -718,6 +725,26 @@ SSL_CTX_set_mode(ctx, SSL_MODE_RELEASE_BUFFERS); SSL_CTX_set_min_proto_version(ctx, TLS1_3_VERSION); SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION); + if (SSL_CTX_set_ciphersuites(ctx, quic_ciphers) != 1) { + ha_warning("Binding [%s:%d] for %s %s: default QUIC cipher" + " suites setting failed.\n", + bind_conf->file, bind_conf->line, + proxy_type_str(bind_conf->frontend), + bind_conf->frontend->id); + cfgerr++; + } + +#ifndef HAVE_OPENSSL_QUICTLS + /* TODO: this should also work with QUICTLS */ + if (SSL_CTX_set1_groups_list(ctx, quic_groups) != 1) { + ha_warning("Binding [%s:%d] for %s %s: default QUIC cipher" + " groups setting failed.\n", + bind_conf->file, bind_conf->line, + proxy_type_str(bind_conf->frontend), + bind_conf->frontend->id); + cfgerr++; + } +#endif if (bind_conf->ssl_conf.early_data) { #if !defined(HAVE_SSL_0RTT_QUIC) @@ -1023,6 +1050,12 @@ /* Simple helper to set the specifig OpenSSL/quictls QUIC API callbacks */ int quic_ssl_set_tls_cbs(SSL *ssl) { + struct quic_conn *qc = SSL_get_ex_data(ssl, ssl_qc_app_data_index); + + /* Ignore the TCP connections */ + if (!qc) + return 1; + #ifdef HAVE_OPENSSL_QUIC return SSL_set_quic_tls_cbs(ssl, ha_quic_dispatch, NULL); #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/src/ssl_ocsp.c new/haproxy-3.2.3+git0.1844da7c6/src/ssl_ocsp.c --- old/haproxy-3.2.2+git0.a55102f09/src/ssl_ocsp.c 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/src/ssl_ocsp.c 2025-07-09 10:25:50.000000000 +0200 @@ -2070,7 +2070,7 @@ return 0; } -int ocsp_update_init(void *value, char *buf, struct ckch_data *d, int cli, char **err) +int ocsp_update_init(void *value, char *buf, struct ckch_data *d, int cli, char *filename, int linenum, char **err) { int ocsp_update_mode = *(int *)value; int ret = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-3.2.2+git0.a55102f09/src/ssl_sock.c new/haproxy-3.2.3+git0.1844da7c6/src/ssl_sock.c --- old/haproxy-3.2.2+git0.a55102f09/src/ssl_sock.c 2025-07-02 11:58:27.000000000 +0200 +++ new/haproxy-3.2.3+git0.1844da7c6/src/ssl_sock.c 2025-07-09 10:25:50.000000000 +0200 @@ -5759,13 +5759,11 @@ struct task *ssl_sock_io_cb(struct task *t, void *context, unsigned int state) { struct tasklet *tl = (struct tasklet *)t; - struct ssl_sock_ctx *ctx = context; + struct ssl_sock_ctx *ctx; struct connection *conn; int conn_in_list; int ret = 0; - TRACE_ENTER(SSL_EV_CONN_IO_CB, ctx->conn); - if (state & TASK_F_USR1) { /* the tasklet was idling on an idle connection, it might have * been stolen, let's be careful! @@ -5776,16 +5774,20 @@ tasklet_free(tl); return NULL; } + ctx = context; conn = ctx->conn; conn_in_list = conn->flags & CO_FL_LIST_MASK; if (conn_in_list) conn_delete_from_tree(conn); HA_SPIN_UNLOCK(IDLE_CONNS_LOCK, &idle_conns[tid].idle_conns_lock); } else { + ctx = context; conn = ctx->conn; conn_in_list = 0; } + TRACE_ENTER(SSL_EV_CONN_IO_CB, ctx->conn); + /* First if we're doing an handshake, try that */ if (ctx->conn->flags & CO_FL_SSL_WAIT_HS) { ssl_sock_handshake(ctx->conn, CO_FL_SSL_WAIT_HS);