openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2024
- 1 participants
- 1629 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openQA for openSUSE:Factory checked in at 2024-05-28 17:30:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
and /work/SRC/openSUSE:Factory/.openQA.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA"
Tue May 28 17:30:26 2024 rev:581 rq:1177333 version:4.6.1716874663.ccc6eb0d
Changes:
--------
openQA-devel-test.changes: same change
openQA-test.changes: same change
openQA-worker-test.changes: same change
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2024-05-27 12:03:41.943187407 +0200
+++ /work/SRC/openSUSE:Factory/.openQA.new.24587/openQA.changes 2024-05-28 17:31:36.690136245 +0200
@@ -1,0 +2,10 @@
+Tue May 28 12:13:51 UTC 2024 - okurz(a)suse.com
+
+- Update to version 4.6.1716874663.ccc6eb0d:
+ * Add GRU task to update DISTRI and NEEDLES_DIR from git if needed
+ * Make warning about partial rescheduling more clear
+ * Overhaul info panel on job details page
+ * Bump ace-builds from 1.34.1 to 1.34.2
+ * Cleanup download job gru task enqueuement
+
+-------------------------------------------------------------------
Old:
----
openQA-4.6.1716566379.3b8eb1f6.obscpio
New:
----
openQA-4.6.1716874663.ccc6eb0d.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.530166963 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.530166963 +0200
@@ -18,7 +18,7 @@
%define short_name openQA-client
Name: %{short_name}-test
-Version: 4.6.1716566379.3b8eb1f6
+Version: 4.6.1716874663.ccc6eb0d
Release: 0
Summary: Test package for %{short_name}
License: GPL-2.0-or-later
++++++ openQA-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.558167987 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.558167987 +0200
@@ -18,7 +18,7 @@
%define short_name openQA-devel
Name: %{short_name}-test
-Version: 4.6.1716566379.3b8eb1f6
+Version: 4.6.1716874663.ccc6eb0d
Release: 0
Summary: Test package for %{short_name}
License: GPL-2.0-or-later
++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.602169596 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.602169596 +0200
@@ -18,7 +18,7 @@
%define short_name openQA
Name: %{short_name}-test
-Version: 4.6.1716566379.3b8eb1f6
+Version: 4.6.1716874663.ccc6eb0d
Release: 0
Summary: Test package for openQA
License: GPL-2.0-or-later
++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.630170620 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.634170766 +0200
@@ -18,7 +18,7 @@
%define short_name openQA-worker
Name: %{short_name}-test
-Version: 4.6.1716566379.3b8eb1f6
+Version: 4.6.1716874663.ccc6eb0d
Release: 0
Summary: Test package for %{short_name}
License: GPL-2.0-or-later
++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.666171936 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.666171936 +0200
@@ -78,7 +78,7 @@
%define devel_requires %devel_no_selenium_requires chromedriver
Name: openQA
-Version: 4.6.1716566379.3b8eb1f6
+Version: 4.6.1716874663.ccc6eb0d
Release: 0
Summary: The openQA web-frontend, scheduler and tools
License: GPL-2.0-or-later
++++++ node_modules.obscpio ++++++
/work/SRC/openSUSE:Factory/openQA/node_modules.obscpio /work/SRC/openSUSE:Factory/.openQA.new.24587/node_modules.obscpio differ: char 401600, line 1449
++++++ node_modules.spec.inc ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.738174569 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.742174715 +0200
@@ -13,7 +13,7 @@
Source1012: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-f…
Source1013: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-f…
Source1014: https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz#/@pkgr-core-0.1.1.tgz
-Source1015: https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.1.tgz#/ace-builds-1…
+Source1015: https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.2.tgz#/ace-builds-1…
Source1016: https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#/acorn-8.11.3.tgz
Source1017: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2…
Source1018: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
++++++ openQA-4.6.1716566379.3b8eb1f6.obscpio -> openQA-4.6.1716874663.ccc6eb0d.obscpio ++++++
/work/SRC/openSUSE:Factory/openQA/openQA-4.6.1716566379.3b8eb1f6.obscpio /work/SRC/openSUSE:Factory/.openQA.new.24587/openQA-4.6.1716874663.ccc6eb0d.obscpio differ: char 50, line 1
++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.OJhrXj/_old 2024-05-28 17:31:37.790176471 +0200
+++ /var/tmp/diff_new_pack.OJhrXj/_new 2024-05-28 17:31:37.794176617 +0200
@@ -1,5 +1,5 @@
name: openQA
-version: 4.6.1716566379.3b8eb1f6
-mtime: 1716566379
-commit: 3b8eb1f6127a114b415c19111ade9eddbd1f2359
+version: 4.6.1716874663.ccc6eb0d
+mtime: 1716874663
+commit: ccc6eb0d93c6a779320461e8b0d7241d32e42db0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ART for openSUSE:Factory checked in at 2024-05-28 17:30:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ART (Old)
and /work/SRC/openSUSE:Factory/.ART.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ART"
Tue May 28 17:30:24 2024 rev:19 rq:1177324 version:1.22
Changes:
--------
--- /work/SRC/openSUSE:Factory/ART/ART.changes 2024-04-11 19:41:50.523289763 +0200
+++ /work/SRC/openSUSE:Factory/.ART.new.24587/ART.changes 2024-05-28 17:31:30.161897523 +0200
@@ -1,0 +2,28 @@
+Mon May 27 16:10:40 UTC 2024 - Joshua Smith <smolsheep(a)opensuse.org>
+
+- Update to 1.22:
+ * brush mask: added ctrl-z / ctrl-shift-z for undo/undo all
+ during brush editing
+ * cmake: do not link against mimalloc when using ASAN
+ * colortemp.h: added missing "#include <array>"
+ * CTL: take into account the CTL_MODULE_PATH env var when loading
+ modules
+ * file browser: show the number of selected files when >1
+ * metadata: explicitly handle the case of exiftool not found
+ * procparams: disable histmatching when loading arp files with an
+ already-computed tone curve
+ * rawimage: properly extract the raw optical black for bayer
+ sensors when using libraw
+ * rawimage: simple workaround for libraw issue with some xtrans
+ DNG files produced by dnglab
+ * smoothing: added simple halation
+ * spot removal: fixed bad preview when denoise is enabled
+ * subprocess: fixed freeze happening when fork/exec failed in
+ subprocess::popen
+ * updated camera matrices
+ * updated translations
+ * updated WB presets
+ * white balance: improved robustness in "extreme" situations
+ (e.g. UV)
+
+-------------------------------------------------------------------
Old:
----
ART-1.21.3.tar.xz
ART-1.21.3.tar.xz.asc
New:
----
ART-1.22.tar.xz
ART-1.22.tar.xz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ART.spec ++++++
--- /var/tmp/diff_new_pack.oIqVzf/_old 2024-05-28 17:31:30.661915808 +0200
+++ /var/tmp/diff_new_pack.oIqVzf/_new 2024-05-28 17:31:30.665915954 +0200
@@ -21,7 +21,7 @@
%endif
Name: ART
-Version: 1.21.3
+Version: 1.22
Release: 0
Summary: Rawtherapee fork with masks and simplified UI
License: GPL-3.0-only
@@ -112,7 +112,8 @@
%fdupes %{buildroot}/%{_prefix}
%files
-%{_bindir}/*
+%{_bindir}/ART
+%{_bindir}/ART-cli
%{_libdir}/librtengine.so
%{_datadir}/%{name}/
%{_datadir}/icons/hicolor/*/apps/*
++++++ ART-1.21.3.tar.xz -> ART-1.22.tar.xz ++++++
/work/SRC/openSUSE:Factory/ART/ART-1.21.3.tar.xz /work/SRC/openSUSE:Factory/.ART.new.24587/ART-1.22.tar.xz differ: char 26, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package squid for openSUSE:Factory checked in at 2024-05-28 17:30:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/squid (Old)
and /work/SRC/openSUSE:Factory/.squid.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "squid"
Tue May 28 17:30:23 2024 rev:121 rq:1177317 version:6.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/squid/squid.changes 2024-03-06 23:06:33.721733021 +0100
+++ /work/SRC/openSUSE:Factory/.squid.new.24587/squid.changes 2024-05-28 17:31:25.537728429 +0200
@@ -1,0 +2,17 @@
+Tue May 28 08:39:49 UTC 2024 - Adam Majer <adam.majer(a)suse.de>
+
+- update to 6.9
+ - Regression Bug 5349: basic_nis_auth build error: unterminated #ifndef
+ - Bug 5069: Keep listening after getsockname() error
+ - Bug 5360: FwdState::noteDestinationsEnd() assertion "err"
+ - Reduce stale errno usage
+ - Plug memory leak in handling cache manager requests
+ - Fix error: template-id not allowed for constructor in C++20
+ - Improve release packaging automation
+
+- header_fixups.patch: upstreamed, removed
+- 9be86d8db5e8f40829374d26334d0bb5272c1afd.patch: upstreamed, removed
+- CVE-2024-33427.patch: fixes possible buffer overread leading to
+ denial of service (bsc#1225417, CVE-2024-33427)
+
+-------------------------------------------------------------------
Old:
----
9be86d8db5e8f40829374d26334d0bb5272c1afd.patch
header_fixups.patch
squid-6.8.tar.xz
squid-6.8.tar.xz.asc
New:
----
CVE-2024-33427.patch
squid-6.9.tar.xz
squid-6.9.tar.xz.asc
BETA DEBUG BEGIN:
Old:- header_fixups.patch: upstreamed, removed
- 9be86d8db5e8f40829374d26334d0bb5272c1afd.patch: upstreamed, removed
- CVE-2024-33427.patch: fixes possible buffer overread leading to
Old:
- header_fixups.patch: upstreamed, removed
- 9be86d8db5e8f40829374d26334d0bb5272c1afd.patch: upstreamed, removed
BETA DEBUG END:
BETA DEBUG BEGIN:
New:- 9be86d8db5e8f40829374d26334d0bb5272c1afd.patch: upstreamed, removed
- CVE-2024-33427.patch: fixes possible buffer overread leading to
denial of service (bsc#1225417, CVE-2024-33427)
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ squid.spec ++++++
--- /var/tmp/diff_new_pack.JhmBl5/_old 2024-05-28 17:31:26.197752564 +0200
+++ /var/tmp/diff_new_pack.JhmBl5/_new 2024-05-28 17:31:26.201752711 +0200
@@ -24,7 +24,7 @@
%define squidhelperdir %{_sbindir}
%endif
Name: squid
-Version: 6.8
+Version: 6.9
Release: 0
Summary: Caching and forwarding HTTP web proxy
License: GPL-2.0-or-later
@@ -51,8 +51,7 @@
Patch1: missing_installs.patch
Patch2: old_nettle_compat.patch
Patch3: harden_squid.service.patch
-Patch4: header_fixups.patch
-Patch5: 9be86d8db5e8f40829374d26334d0bb5272c1afd.patch
+Patch4: CVE-2024-33427.patch
BuildRequires: cppunit-devel
BuildRequires: expat
BuildRequires: fdupes
@@ -109,8 +108,7 @@
%setup -q
cp %{SOURCE10} .
%patch -P 3 -p1
-%patch -P4 -p1
-%patch -P5 -p1
+%patch -P 4 -p1
# upstream patches after RELEASE
perl -p -i -e 's|%{_prefix}/local/bin/perl|%{_bindir}/perl|' `find -name "*.pl"`
++++++ CVE-2024-33427.patch ++++++
Index: squid-6.9/src/ConfigParser.cc
===================================================================
--- squid-6.9.orig/src/ConfigParser.cc
+++ squid-6.9/src/ConfigParser.cc
@@ -181,7 +181,7 @@ ConfigParser::UnQuote(const char *token,
*d = '\0';
// We are expecting a separator after quoted string, space or one of "()#"
- if (*(s + 1) != '\0' && !strchr(w_space "()#", *(s + 1)) && !errorStr) {
+ if (!errorStr && *(s + 1) != '\0' && !strchr(w_space "()#", *(s + 1))) {
errorStr = "Expecting space after the end of quoted token";
errorPos = token;
}
++++++ squid-6.8.tar.xz -> squid-6.9.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/ChangeLog new/squid-6.9/ChangeLog
--- old/squid-6.8/ChangeLog 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/ChangeLog 2024-04-08 07:02:07.000000000 +0200
@@ -1,3 +1,12 @@
+Changes in squid-6.9 (7 Apr 2024)
+ - Regression Bug 5349: basic_nis_auth build error: unterminated #ifndef
+ - Bug 5069: Keep listening after getsockname() error
+ - Bug 5360: FwdState::noteDestinationsEnd() assertion "err"
+ - Reduce stale errno usage
+ - Plug memory leak in handling cache manager requests
+ - Fix error: template-id not allowed for constructor in C++20
+ - Improve release packaging automation
+
Changes in squid-6.8 (4 Mar 2024)
- Bug 5344: mgr:config segfaults without logformat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/RELEASENOTES.html new/squid-6.9/RELEASENOTES.html
--- old/squid-6.8/RELEASENOTES.html 2024-03-04 07:02:37.000000000 +0100
+++ new/squid-6.9/RELEASENOTES.html 2024-04-08 08:05:38.000000000 +0200
@@ -3,10 +3,10 @@
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.82">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <TITLE>Squid 6.8 release notes</TITLE>
+ <TITLE>Squid 6.9 release notes</TITLE>
</HEAD>
<BODY>
-<H1>Squid 6.8 release notes</H1>
+<H1>Squid 6.9 release notes</H1>
<H2>Squid Developers</H2>
<P>
@@ -59,7 +59,7 @@
<HR>
<H2><A NAME="s1">1.</A> <A HREF="#toc1">Notice</A></H2>
-<P>The Squid Team are pleased to announce the release of Squid-6.8 for testing.</P>
+<P>The Squid Team are pleased to announce the release of Squid-6.9 for testing.</P>
<P>This new release is available for download from
<A HREF="http://www.squid-cache.org/Versions/v6/">http://www.squid-cache.org/Versions/v6/</A> or the
<A HREF="http://www.squid-cache.org/Download/http-mirrors.html">mirrors</A>.</P>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/configure new/squid-6.9/configure
--- old/squid-6.8/configure 2024-03-04 06:50:28.000000000 +0100
+++ new/squid-6.9/configure 2024-04-08 07:54:08.000000000 +0200
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Revision.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for Squid Web Proxy 6.8.
+# Generated by GNU Autoconf 2.71 for Squid Web Proxy 6.9.
#
# Report bugs to <https://bugs.squid-cache.org/>.
#
@@ -626,8 +626,8 @@
# Identity of this package.
PACKAGE_NAME='Squid Web Proxy'
PACKAGE_TARNAME='squid'
-PACKAGE_VERSION='6.8'
-PACKAGE_STRING='Squid Web Proxy 6.8'
+PACKAGE_VERSION='6.9'
+PACKAGE_STRING='Squid Web Proxy 6.9'
PACKAGE_BUGREPORT='https://bugs.squid-cache.org/'
PACKAGE_URL=''
@@ -1695,7 +1695,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Squid Web Proxy 6.8 to adapt to many kinds of systems.
+\`configure' configures Squid Web Proxy 6.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1766,7 +1766,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Squid Web Proxy 6.8:";;
+ short | recursive ) echo "Configuration of Squid Web Proxy 6.9:";;
esac
cat <<\_ACEOF
@@ -2186,7 +2186,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Squid Web Proxy configure 6.8
+Squid Web Proxy configure 6.9
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -3199,7 +3199,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Squid Web Proxy $as_me 6.8, which was
+It was created by Squid Web Proxy $as_me 6.9, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -4691,7 +4691,7 @@
# Define the identity of the package.
PACKAGE='squid'
- VERSION='6.8'
+ VERSION='6.9'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -56708,7 +56708,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Squid Web Proxy $as_me 6.8, which was
+This file was extended by Squid Web Proxy $as_me 6.9, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -56776,7 +56776,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-Squid Web Proxy config.status 6.8
+Squid Web Proxy config.status 6.9
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/configure.ac new/squid-6.9/configure.ac
--- old/squid-6.8/configure.ac 2024-03-04 06:50:28.000000000 +0100
+++ new/squid-6.9/configure.ac 2024-04-08 07:54:08.000000000 +0200
@@ -5,7 +5,7 @@
## Please see the COPYING and CONTRIBUTORS files for details.
##
-AC_INIT([Squid Web Proxy],[6.8],[https://bugs.squid-cache.org/],[squid]
+AC_INIT([Squid Web Proxy],[6.9],[https://bugs.squid-cache.org/],[squid]
AC_PREREQ(2.61)
AC_CONFIG_HEADERS([include/autoconf.h])
AC_CONFIG_AUX_DIR(cfgaux)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/doc/release-notes/release-6.html new/squid-6.9/doc/release-notes/release-6.html
--- old/squid-6.8/doc/release-notes/release-6.html 2024-03-04 07:02:37.000000000 +0100
+++ new/squid-6.9/doc/release-notes/release-6.html 2024-04-08 08:05:38.000000000 +0200
@@ -3,10 +3,10 @@
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.82">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <TITLE>Squid 6.8 release notes</TITLE>
+ <TITLE>Squid 6.9 release notes</TITLE>
</HEAD>
<BODY>
-<H1>Squid 6.8 release notes</H1>
+<H1>Squid 6.9 release notes</H1>
<H2>Squid Developers</H2>
<P>
@@ -59,7 +59,7 @@
<HR>
<H2><A NAME="s1">1.</A> <A HREF="#toc1">Notice</A></H2>
-<P>The Squid Team are pleased to announce the release of Squid-6.8 for testing.</P>
+<P>The Squid Team are pleased to announce the release of Squid-6.9 for testing.</P>
<P>This new release is available for download from
<A HREF="http://www.squid-cache.org/Versions/v6/">http://www.squid-cache.org/Versions/v6/</A> or the
<A HREF="http://www.squid-cache.org/Download/http-mirrors.html">mirrors</A>.</P>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/include/splay.h new/squid-6.9/include/splay.h
--- old/squid-6.8/include/splay.h 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/include/splay.h 2024-04-08 07:02:07.000000000 +0200
@@ -23,7 +23,7 @@
typedef void SPLAYWALKEE(Value const & nodedata, void *state);
static void DefaultFree (Value &aValue) {delete aValue;}
- SplayNode<V> (Value const &);
+ SplayNode(const Value &);
Value data;
mutable SplayNode<V> *left;
mutable SplayNode<V> *right;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/include/version.h new/squid-6.9/include/version.h
--- old/squid-6.8/include/version.h 2024-03-04 06:50:28.000000000 +0100
+++ new/squid-6.9/include/version.h 2024-04-08 07:54:08.000000000 +0200
@@ -10,7 +10,7 @@
#define SQUID_INCLUDE_VERSION_H
#ifndef SQUID_RELEASE_TIME
-#define SQUID_RELEASE_TIME 1709531399
+#define SQUID_RELEASE_TIME 1712555627
#endif
/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/FwdState.cc new/squid-6.9/src/FwdState.cc
--- old/squid-6.8/src/FwdState.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/FwdState.cc 2024-04-08 07:02:07.000000000 +0200
@@ -657,7 +657,13 @@
}
// destinationsFound, but none of them worked, and we were waiting for more
- assert(err);
+ debugs(17, 7, "no more destinations to try after " << n_tries << " failed attempts");
+ if (!err) {
+ const auto finalError = new ErrorState(ERR_CANNOT_FORWARD, Http::scBadGateway, request, al);
+ static const auto d = MakeNamedErrorDetail("REFORWARD_TO_NONE");
+ finalError->detailError(d);
+ fail(finalError);
+ } // else use actual error from last forwarding attempt
stopAndDestroy("all found paths have failed");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/HttpHeader.cc new/squid-6.9/src/HttpHeader.cc
--- old/squid-6.8/src/HttpHeader.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/HttpHeader.cc 2024-04-08 07:02:07.000000000 +0200
@@ -1040,15 +1040,14 @@
}
void
-HttpHeader::putCc(const HttpHdrCc * cc)
+HttpHeader::putCc(const HttpHdrCc &cc)
{
- assert(cc);
/* remove old directives if any */
delById(Http::HdrType::CACHE_CONTROL);
/* pack into mb */
MemBuf mb;
mb.init();
- cc->packInto(&mb);
+ cc.packInto(&mb);
/* put */
addEntry(new HttpHeaderEntry(Http::HdrType::CACHE_CONTROL, SBuf(), mb.buf));
/* cleanup */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/HttpHeader.h new/squid-6.9/src/HttpHeader.h
--- old/squid-6.8/src/HttpHeader.h 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/HttpHeader.h 2024-04-08 07:02:07.000000000 +0200
@@ -137,7 +137,7 @@
void putTime(Http::HdrType id, time_t htime);
void putStr(Http::HdrType id, const char *str);
void putAuth(const char *auth_scheme, const char *realm);
- void putCc(const HttpHdrCc * cc);
+ void putCc(const HttpHdrCc &cc);
void putContRange(const HttpHdrContRange * cr);
void putRange(const HttpHdrRange * range);
void putSc(HttpHdrSc *sc);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/HttpReply.cc new/squid-6.9/src/HttpReply.cc
--- old/squid-6.8/src/HttpReply.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/HttpReply.cc 2024-04-08 07:02:07.000000000 +0200
@@ -148,7 +148,8 @@
rv->header.addEntry(e->clone());
}
- rv->putCc(cache_control);
+ if (cache_control)
+ rv->putCc(*cache_control);
/* rv->body */
return rv;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/acl/external/SQL_session/ext_sql_session_acl.8 new/squid-6.9/src/acl/external/SQL_session/ext_sql_session_acl.8
--- old/squid-6.8/src/acl/external/SQL_session/ext_sql_session_acl.8 2024-03-04 07:02:50.000000000 +0100
+++ new/squid-6.9/src/acl/external/SQL_session/ext_sql_session_acl.8 2024-04-08 08:05:44.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EXT_SQL_SESSION_ACL 8"
-.TH EXT_SQL_SESSION_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH EXT_SQL_SESSION_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/acl/external/delayer/ext_delayer_acl.8 new/squid-6.9/src/acl/external/delayer/ext_delayer_acl.8
--- old/squid-6.8/src/acl/external/delayer/ext_delayer_acl.8 2024-03-04 07:02:48.000000000 +0100
+++ new/squid-6.9/src/acl/external/delayer/ext_delayer_acl.8 2024-04-08 08:05:44.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EXT_DELAYER_ACL 8"
-.TH EXT_DELAYER_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH EXT_DELAYER_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 new/squid-6.9/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8
--- old/squid-6.8/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 2024-03-04 07:02:49.000000000 +0100
+++ new/squid-6.9/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 2024-04-08 08:05:44.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EXT_KERBEROS_SID_GROUP_ACL 8"
-.TH EXT_KERBEROS_SID_GROUP_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH EXT_KERBEROS_SID_GROUP_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 new/squid-6.9/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8
--- old/squid-6.8/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 2024-03-04 07:02:50.000000000 +0100
+++ new/squid-6.9/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 2024-04-08 08:05:44.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EXT_WBINFO_GROUP_ACL 8"
-.TH EXT_WBINFO_GROUP_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH EXT_WBINFO_GROUP_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/auth/basic/DB/basic_db_auth.8 new/squid-6.9/src/auth/basic/DB/basic_db_auth.8
--- old/squid-6.8/src/auth/basic/DB/basic_db_auth.8 2024-03-04 07:02:55.000000000 +0100
+++ new/squid-6.9/src/auth/basic/DB/basic_db_auth.8 2024-04-08 08:05:46.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BASIC_DB_AUTH 8"
-.TH BASIC_DB_AUTH 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH BASIC_DB_AUTH 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/auth/basic/NIS/nis_support.h new/squid-6.9/src/auth/basic/NIS/nis_support.h
--- old/squid-6.8/src/auth/basic/NIS/nis_support.h 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/auth/basic/NIS/nis_support.h 2024-04-08 07:02:07.000000000 +0200
@@ -8,9 +8,6 @@
#ifndef SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H
#define SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H
-#ifndef SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H
-#define SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H
-
extern char * get_nis_password(char *user, char *nisdomain, char *nismap);
#endif /* SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/auth/basic/POP3/basic_pop3_auth.8 new/squid-6.9/src/auth/basic/POP3/basic_pop3_auth.8
--- old/squid-6.8/src/auth/basic/POP3/basic_pop3_auth.8 2024-03-04 07:02:56.000000000 +0100
+++ new/squid-6.9/src/auth/basic/POP3/basic_pop3_auth.8 2024-04-08 08:05:47.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BASIC_POP3_AUTH 8"
-.TH BASIC_POP3_AUTH 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH BASIC_POP3_AUTH 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/cache_manager.cc new/squid-6.9/src/cache_manager.cc
--- old/squid-6.8/src/cache_manager.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/cache_manager.cc 2024-04-08 07:02:07.000000000 +0200
@@ -484,13 +484,13 @@
response.header.putExt("Access-Control-Expose-Headers", "Server");
}
- std::unique_ptr<HttpHdrCc> cc(new HttpHdrCc());
+ HttpHdrCc cc;
// this is honored by more caches but allows pointless revalidation;
// revalidation will always fail because we do not support it (yet?)
- cc->noCache(String());
+ cc.noCache(String());
// this is honored by fewer caches but prohibits pointless revalidation
- cc->noStore(true);
- response.putCc(cc.release());
+ cc.noStore(true);
+ response.putCc(cc);
}
CacheManager*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/comm/TcpAcceptor.cc new/squid-6.9/src/comm/TcpAcceptor.cc
--- old/squid-6.8/src/comm/TcpAcceptor.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/comm/TcpAcceptor.cc 2024-04-08 07:02:07.000000000 +0200
@@ -381,7 +381,10 @@
if (getsockname(sock, gai->ai_addr, &gai->ai_addrlen) != 0) {
int xerrno = errno;
Ip::Address::FreeAddr(gai);
- throw TextException(ToSBuf("getsockname() failed to locate local-IP on ", details, ": ", xstrerr(xerrno)), Here());
+ debugs(50, DBG_IMPORTANT, "ERROR: Closing accepted TCP connection after failing to obtain its local IP address" <<
+ Debug::Extra << "accepted connection: " << details <<
+ Debug::Extra << "getsockname(2) error: " << xstrerr(xerrno));
+ return false;
}
details->local = *gai;
Ip::Address::FreeAddr(gai);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/comm.cc new/squid-6.9/src/comm.cc
--- old/squid-6.8/src/comm.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/comm.cc 2024-04-08 07:02:07.000000000 +0200
@@ -378,7 +378,7 @@
debugs(50, 3, "comm_openex: Attempt open socket for: " << addr );
new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol);
- int xerrno = errno;
+ const auto firstErrNo = errno;
/* under IPv6 there is the possibility IPv6 is present but disabled. */
/* try again as IPv4-native if possible */
@@ -391,6 +391,8 @@
AI->ai_protocol = proto;
debugs(50, 3, "Attempt fallback open socket for: " << addr );
new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol);
+ // TODO: Report failures of this second socket() call.
+ // if both socket() calls fail, we use firstErrNo
debugs(50, 2, "attempt open " << note << " socket on: " << addr);
}
@@ -399,16 +401,16 @@
* are failing because the open file table is full. This
* limits the number of simultaneous clients */
- if (limitError(errno)) {
- debugs(50, DBG_IMPORTANT, MYNAME << "socket failure: " << xstrerr(xerrno));
+ if (limitError(firstErrNo)) {
+ debugs(50, DBG_IMPORTANT, MYNAME << "socket failure: " << xstrerr(firstErrNo));
fdAdjustReserved();
} else {
- debugs(50, DBG_CRITICAL, MYNAME << "socket failure: " << xstrerr(xerrno));
+ debugs(50, DBG_CRITICAL, MYNAME << "socket failure: " << xstrerr(firstErrNo));
}
Ip::Address::FreeAddr(AI);
- errno = xerrno; // restore for caller
+ errno = firstErrNo; // restore for caller
return -1;
}
@@ -434,7 +436,9 @@
// XXX transition only. prevent conn from closing the new FD on function exit.
conn->fd = -1;
- errno = xerrno; // restore for caller
+ // XXX: firstErrNo is not applicable here -- socket() calls succeeded above!
+ // TODO: Stop reporting error codes via errno.
+ errno = firstErrNo;
return new_socket;
}
@@ -890,11 +894,11 @@
// notify read/write handlers after canceling select reservations, if any
if (COMMIO_FD_WRITECB(fd)->active()) {
Comm::SetSelect(fd, COMM_SELECT_WRITE, nullptr, nullptr, 0);
- COMMIO_FD_WRITECB(fd)->finish(Comm::ERR_CLOSING, errno);
+ COMMIO_FD_WRITECB(fd)->finish(Comm::ERR_CLOSING, 0);
}
if (COMMIO_FD_READCB(fd)->active()) {
Comm::SetSelect(fd, COMM_SELECT_READ, nullptr, nullptr, 0);
- COMMIO_FD_READCB(fd)->finish(Comm::ERR_CLOSING, errno);
+ COMMIO_FD_READCB(fd)->finish(Comm::ERR_CLOSING, 0);
}
#if USE_DELAY_POOLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/fs_io.cc new/squid-6.9/src/fs_io.cc
--- old/squid-6.8/src/fs_io.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/fs_io.cc 2024-04-08 07:02:07.000000000 +0200
@@ -211,6 +211,7 @@
len = FD_WRITE_METHOD(fd,
fdd->write_q->buf + fdd->write_q->buf_offset,
fdd->write_q->len - fdd->write_q->buf_offset);
+ const auto xerrno = errno;
debugs(6, 3, "diskHandleWrite: FD " << fd << " len = " << len);
@@ -219,9 +220,8 @@
fd_bytes(fd, len, FD_WRITE);
if (len < 0) {
- if (!ignoreErrno(errno)) {
- status = errno == ENOSPC ? DISK_NO_SPACE_LEFT : DISK_ERROR;
- int xerrno = errno;
+ if (!ignoreErrno(xerrno)) {
+ status = xerrno == ENOSPC ? DISK_NO_SPACE_LEFT : DISK_ERROR;
debugs(50, DBG_IMPORTANT, "ERROR: diskHandleWrite: FD " << fd << ": disk write failure: " << xstrerr(xerrno));
/*
@@ -494,7 +494,7 @@
return true;
int xerrno = errno;
- debugs(21, (errno == ENOENT ? 2 : DBG_IMPORTANT), "ERROR: Cannot rename " << from << " to " << to << ": " << xstrerr(xerrno));
+ debugs(21, (xerrno == ENOENT ? 2 : DBG_IMPORTANT), "ERROR: Cannot rename " << from << " to " << to << ": " << xstrerr(xerrno));
return false;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/ftp/Elements.cc new/squid-6.9/src/ftp/Elements.cc
--- old/squid-6.8/src/ftp/Elements.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/ftp/Elements.cc 2024-04-08 07:02:07.000000000 +0200
@@ -40,7 +40,7 @@
{
HttpHdrCc cc;
cc.Private(String());
- header.putCc(&cc);
+ header.putCc(cc);
}
if (ftpStatus > 0)
header.putInt(Http::HdrType::FTP_STATUS, ftpStatus);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/http/Message.cc new/squid-6.9/src/http/Message.cc
--- old/squid-6.8/src/http/Message.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/http/Message.cc 2024-04-08 07:02:07.000000000 +0200
@@ -30,22 +30,11 @@
}
void
-Http::Message::putCc(const HttpHdrCc *otherCc)
+Http::Message::putCc(const HttpHdrCc &otherCc)
{
- // get rid of the old CC, if any
- if (cache_control) {
- delete cache_control;
- cache_control = nullptr;
- if (!otherCc)
- header.delById(Http::HdrType::CACHE_CONTROL);
- // else it will be deleted inside putCc() below
- }
-
- // add new CC, if any
- if (otherCc) {
- cache_control = new HttpHdrCc(*otherCc);
- header.putCc(cache_control);
- }
+ delete cache_control;
+ cache_control = new HttpHdrCc(otherCc);
+ header.putCc(*cache_control);
}
/* find first CRLF */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/http/Message.h new/squid-6.9/src/http/Message.h
--- old/squid-6.8/src/http/Message.h 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/http/Message.h 2024-04-08 07:02:07.000000000 +0200
@@ -98,8 +98,9 @@
uint32_t sources = 0; ///< The message sources
- /// copies Cache-Control header to this message
- void putCc(const HttpHdrCc *otherCc);
+ /// copies Cache-Control header to this message,
+ /// overwriting existing Cache-Control header(s), if any
+ void putCc(const HttpHdrCc &);
// returns true and sets hdr_sz on success
// returns false and sets *error to zero when needs more data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/http/url_rewriters/LFS/url_lfs_rewrite.8 new/squid-6.9/src/http/url_rewriters/LFS/url_lfs_rewrite.8
--- old/squid-6.8/src/http/url_rewriters/LFS/url_lfs_rewrite.8 2024-03-04 07:02:59.000000000 +0100
+++ new/squid-6.9/src/http/url_rewriters/LFS/url_lfs_rewrite.8 2024-04-08 08:05:48.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "URL_LFS_REWRITE 8"
-.TH URL_LFS_REWRITE 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH URL_LFS_REWRITE 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/http.cc new/squid-6.9/src/http.cc
--- old/squid-6.8/src/http.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/http.cc 2024-04-08 07:02:07.000000000 +0200
@@ -2032,7 +2032,7 @@
if (flags.only_if_cached)
cc->onlyIfCached(true);
- hdr_out->putCc(cc);
+ hdr_out->putCc(*cc);
delete cc;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/log/DB/log_db_daemon.8 new/squid-6.9/src/log/DB/log_db_daemon.8
--- old/squid-6.8/src/log/DB/log_db_daemon.8 2024-03-04 07:03:00.000000000 +0100
+++ new/squid-6.9/src/log/DB/log_db_daemon.8 2024-04-08 08:05:49.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "LOG_DB_DAEMON 8"
-.TH LOG_DB_DAEMON 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH LOG_DB_DAEMON 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/mime.cc new/squid-6.9/src/mime.cc
--- old/squid-6.8/src/mime.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/mime.cc 2024-04-08 07:02:07.000000000 +0200
@@ -421,7 +421,7 @@
reply->setHeaders(status, nullptr, mimeGetContentType(icon_.c_str()), sb.st_size, sb.st_mtime, -1);
reply->cache_control = new HttpHdrCc();
reply->cache_control->maxAge(86400);
- reply->header.putCc(reply->cache_control);
+ reply->header.putCc(*reply->cache_control);
e->replaceHttpReply(reply.getRaw());
if (status == Http::scOkay) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/security/cert_validators/fake/security_fake_certverify.8 new/squid-6.9/src/security/cert_validators/fake/security_fake_certverify.8
--- old/squid-6.8/src/security/cert_validators/fake/security_fake_certverify.8 2024-03-04 07:03:03.000000000 +0100
+++ new/squid-6.9/src/security/cert_validators/fake/security_fake_certverify.8 2024-04-08 08:05:50.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SECURITY_FAKE_CERTVERIFY 8"
-.TH SECURITY_FAKE_CERTVERIFY 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH SECURITY_FAKE_CERTVERIFY 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/store/id_rewriters/file/storeid_file_rewrite.8 new/squid-6.9/src/store/id_rewriters/file/storeid_file_rewrite.8
--- old/squid-6.8/src/store/id_rewriters/file/storeid_file_rewrite.8 2024-03-04 07:02:52.000000000 +0100
+++ new/squid-6.9/src/store/id_rewriters/file/storeid_file_rewrite.8 2024-04-08 08:05:45.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "STOREID_FILE_REWRITE 8"
-.TH STOREID_FILE_REWRITE 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH STOREID_FILE_REWRITE 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/tests/stub_HttpHeader.cc new/squid-6.9/src/tests/stub_HttpHeader.cc
--- old/squid-6.8/src/tests/stub_HttpHeader.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/tests/stub_HttpHeader.cc 2024-04-08 07:02:07.000000000 +0200
@@ -59,7 +59,7 @@
void HttpHeader::putTime(Http::HdrType, time_t) STUB
void HttpHeader::putStr(Http::HdrType, const char *) STUB
void HttpHeader::putAuth(const char *, const char *) STUB
-void HttpHeader::putCc(const HttpHdrCc *) STUB
+void HttpHeader::putCc(const HttpHdrCc &) STUB
void HttpHeader::putContRange(const HttpHdrContRange *) STUB
void HttpHeader::putRange(const HttpHdrRange *) STUB
void HttpHeader::putSc(HttpHdrSc *) STUB
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/tests/stub_libhttp.cc new/squid-6.9/src/tests/stub_libhttp.cc
--- old/squid-6.8/src/tests/stub_libhttp.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/tests/stub_libhttp.cc 2024-04-08 07:02:07.000000000 +0200
@@ -42,7 +42,7 @@
void Message::packInto(Packable *, bool) const STUB
void Message::setContentLength(int64_t) STUB
bool Message::persistent() const STUB_RETVAL(false)
-void Message::putCc(const HttpHdrCc *) STUB
+void Message::putCc(const HttpHdrCc &) STUB
bool Message::parse(const char *, const size_t, bool, Http::StatusCode *) STUB_RETVAL(false)
bool Message::parseCharBuf(const char *, ssize_t) STUB_RETVAL(false)
int Message::httpMsgParseStep(const char *, int, int) STUB_RETVAL(-1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/src/tunnel.cc new/squid-6.9/src/tunnel.cc
--- old/squid-6.8/src/tunnel.cc 2024-03-04 06:45:51.000000000 +0100
+++ new/squid-6.9/src/tunnel.cc 2024-04-08 07:02:07.000000000 +0200
@@ -1364,7 +1364,15 @@
}
// destinationsFound, but none of them worked, and we were waiting for more
- assert(savedError);
+ debugs(17, 7, "no more destinations to try after " << n_tries << " failed attempts");
+ if (!savedError) {
+ // retryOrBail() must be preceded by saveError(), but in case we forgot:
+ const auto finalError = new ErrorState(ERR_CANNOT_FORWARD, Http::scBadGateway, request.getRaw(), al);
+ static const auto d = MakeNamedErrorDetail("RETRY_TO_NONE");
+ finalError->detailError(d);
+ saveError(finalError);
+ } // else use actual error from last forwarding attempt
+
// XXX: Honor clientExpectsConnectResponse() before replying.
sendError(savedError, "all found paths have failed");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/squid-6.8/tools/helper-mux/helper-mux.8 new/squid-6.9/tools/helper-mux/helper-mux.8
--- old/squid-6.8/tools/helper-mux/helper-mux.8 2024-03-04 07:03:05.000000000 +0100
+++ new/squid-6.9/tools/helper-mux/helper-mux.8 2024-04-08 08:05:51.000000000 +0200
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "HELPER-MUX 8"
-.TH HELPER-MUX 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation"
+.TH HELPER-MUX 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
++++++ squid-6.8.tar.xz.asc -> squid-6.9.tar.xz.asc ++++++
--- /work/SRC/openSUSE:Factory/squid/squid-6.8.tar.xz.asc 2024-03-06 23:06:33.709732586 +0100
+++ /work/SRC/openSUSE:Factory/.squid.new.24587/squid-6.9.tar.xz.asc 2024-05-28 17:31:25.501727113 +0200
@@ -1,8 +1,8 @@
-File: squid-6.8.tar.xz
-Date: Mon Mar 4 06:17:24 AM UTC 2024
-Size: 2547796
-MD5 : d84b0d0ee2b9c1bdb782cb5117a72913
-SHA1: f9092ab57ec1f49720a02589a452e3498c183867
+File: squid-6.9.tar.xz
+Date: Mon Apr 8 06:31:46 AM UTC 2024
+Size: 2557992
+MD5 : 4888e9dc75c0daa0ed526b34c055cb67
+SHA1: 5e73b30116ce7111589cc2b1c9bfe3c17efa2e75
Key : 29B4B1F7CE03D1B1DED22F3028F85029FEF6E865 <kinkie(a)squid-cache.org>
29B4 B1F7 CE03 D1B1 DED2 2F30 28F8 5029 FEF6 E865
sub cv25519 2021-05-15 [E]
@@ -10,8 +10,8 @@
keyserver = pool.sks-keyservers.net
-----BEGIN PGP SIGNATURE-----
-iHUEABYIAB0WIQQptLH3zgPRsd7SLzAo+FAp/vboZQUCZeVnkQAKCRAo+FAp/vbo
-Zc5eAP96D2jk2kcOdMEo1GVpDXwEjZkavTPmYC6k9oKNwDjJ+QD+LH4um4EPsglW
-NedPryEIN/FCWwB5NLriVPwtVe0r7Aw=
-=/X4C
+iHUEABYIAB0WIQQptLH3zgPRsd7SLzAo+FAp/vboZQUCZhOPagAKCRAo+FAp/vbo
+ZcUMAP431ZvxTspTtnGMKRksGqYPkQn8t9e3LF21KIKKMgfSQAEA7lUbYqXSX4Av
+0kdzaQZt83DNc/doQYeEU+S7Xtz1BA8=
+=rcZg
-----END PGP SIGNATURE-----
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-numba for openSUSE:Factory checked in at 2024-05-28 17:30:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-numba (Old)
and /work/SRC/openSUSE:Factory/.python-numba.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-numba"
Tue May 28 17:30:21 2024 rev:47 rq:1177314 version:0.59.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-numba/python-numba.changes 2024-03-25 21:09:50.308796571 +0100
+++ /work/SRC/openSUSE:Factory/.python-numba.new.24587/python-numba.changes 2024-05-28 17:31:23.753663190 +0200
@@ -1,0 +2,6 @@
+Tue May 28 09:30:26 UTC 2024 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- Skip broken test on ppc64le
+ bsc#1225394, gh#numba/numba#8489
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ skip-failing-tests.patch ++++++
--- /var/tmp/diff_new_pack.GrLz0J/_old 2024-05-28 17:31:24.289682791 +0200
+++ /var/tmp/diff_new_pack.GrLz0J/_new 2024-05-28 17:31:24.293682937 +0200
@@ -3,11 +3,11 @@
numba/tests/test_parfors_passes.py | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
-Index: numba-0.59.0/numba/tests/test_parfors.py
+Index: numba-0.59.1/numba/tests/test_parfors.py
===================================================================
---- numba-0.59.0.orig/numba/tests/test_parfors.py
-+++ numba-0.59.0/numba/tests/test_parfors.py
-@@ -1198,6 +1198,7 @@ class TestParforNumPy(TestParforsBase):
+--- numba-0.59.1.orig/numba/tests/test_parfors.py
++++ numba-0.59.1/numba/tests/test_parfors.py
+@@ -1199,6 +1199,7 @@ class TestParforNumPy(TestParforsBase):
self.check_variants(test_impl2, data_gen)
self.count_parfors_variants(test_impl2, data_gen)
@@ -15,7 +15,7 @@
def test_ndarray_fill(self):
def test_impl(x):
x.fill(7.0)
-@@ -4639,7 +4640,7 @@ class TestParforsVectorizer(TestPrangeBa
+@@ -4659,7 +4660,7 @@ class TestParforsVectorizer(TestPrangeBa
return asm
@@ -24,7 +24,7 @@
@TestCase.run_test_in_subprocess
def test_vectorizer_fastmath_asm(self):
""" This checks that if fastmath is set and the underlying hardware
-@@ -4680,7 +4681,7 @@ class TestParforsVectorizer(TestPrangeBa
+@@ -4700,7 +4701,7 @@ class TestParforsVectorizer(TestPrangeBa
# check no zmm addressing is present
self.assertTrue('zmm' not in v)
@@ -33,10 +33,10 @@
@TestCase.run_test_in_subprocess(envvars={'NUMBA_BOUNDSCHECK': '0'})
def test_unsigned_refusal_to_vectorize(self):
""" This checks that if fastmath is set and the underlying hardware
-Index: numba-0.59.0/numba/tests/test_parfors_passes.py
+Index: numba-0.59.1/numba/tests/test_parfors_passes.py
===================================================================
---- numba-0.59.0.orig/numba/tests/test_parfors_passes.py
-+++ numba-0.59.0/numba/tests/test_parfors_passes.py
+--- numba-0.59.1.orig/numba/tests/test_parfors_passes.py
++++ numba-0.59.1/numba/tests/test_parfors_passes.py
@@ -514,6 +514,7 @@ class TestConvertLoopPass(BaseTest):
str(raises.exception),
)
@@ -45,10 +45,10 @@
def test_init_prange(self):
def test_impl():
n = 20
-Index: numba-0.59.0/numba/tests/test_cli.py
+Index: numba-0.59.1/numba/tests/test_cli.py
===================================================================
---- numba-0.59.0.orig/numba/tests/test_cli.py
-+++ numba-0.59.0/numba/tests/test_cli.py
+--- numba-0.59.1.orig/numba/tests/test_cli.py
++++ numba-0.59.1/numba/tests/test_cli.py
@@ -264,6 +264,7 @@ class TestGDBCLIInfoBrokenGdbs(TestCase)
self.assertIn("No such file or directory", stdout)
self.assertIn(path, stdout)
@@ -57,4 +57,16 @@
def test_nonsense_gdb_binary(self):
# Tests that a nonsense binary specified as gdb it picked up ok
env = os.environ.copy()
+Index: numba-0.59.1/numba/tests/test_mathlib.py
+===================================================================
+--- numba-0.59.1.orig/numba/tests/test_mathlib.py
++++ numba-0.59.1/numba/tests/test_mathlib.py
+@@ -508,6 +508,7 @@ class TestMathLib(TestCase):
+ float('-inf'), float('inf'), float('nan')]
+ self.run_unary(pyfunc, x_types, x_values, prec='exact')
+
++ @unittest.skip("Fails on ppc64le https://github.com/numba/numba/issues/8489")
+ def test_ldexp(self):
+ pyfunc = ldexp
+ cfunc = njit(pyfunc)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pdns for openSUSE:Factory checked in at 2024-05-28 17:30:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdns (Old)
and /work/SRC/openSUSE:Factory/.pdns.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdns"
Tue May 28 17:30:19 2024 rev:93 rq:1177309 version:4.9.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/pdns/pdns.changes 2024-04-02 16:45:55.956653869 +0200
+++ /work/SRC/openSUSE:Factory/.pdns.new.24587/pdns.changes 2024-05-28 17:31:22.333611263 +0200
@@ -1,0 +2,27 @@
+Tue May 28 09:49:18 UTC 2024 - Adam Majer <adam.majer(a)suse.de>
+
+- Update to version 4.9.1
+ * Improvements
+ + rpm: Change home directory to /var/lib/pdns
+ + m4: Add option for 64-bit time_t on 32-bit systems with glibc-2.34 (Sven Wegener)
+ + Wrap backend factories in smart pointers
+ + (optionally) drop whitespace on join
+
+ * Bug Fixes
+ + autoconf: allow prerelease systemd versions (Chris Hofstaedtler)
+ + ixfrdist: Fix broken ‘uid’ and ‘gid’ parsing for non-numerical values
+ + YaHTTP: Enforce max # of request fields and max request line size
+ + Fix memory leaks in the bind file format parser
+ + dnsproxy: fix build on s390x (Chris Hofstaedtler)
+ + pdnsutil check-zone: accept LUA A/AAAA as SVCB address targets
+ + Properly finalize PKCS11 modules before releasing them (Aki Tuomi)
+ + don’t crash when a catalog SOA is invalid
+ + debian: adjust option name in shipped postinst
+
+-------------------------------------------------------------------
+Tue Apr 2 22:10:29 UTC 2024 - Adam Mizerski <adam(a)mizerski.pl>
+
+- fix building on older openSUSE releases
+- added pdns-4.9.0-fix_boost.patch
+
+-------------------------------------------------------------------
Old:
----
pdns-4.9.0.tar.bz2
pdns-4.9.0.tar.bz2.sig
New:
----
pdns-4.9.0-fix_boost.patch
pdns-4.9.1.tar.bz2
pdns-4.9.1.tar.bz2.sig
BETA DEBUG BEGIN:
New:- fix building on older openSUSE releases
- added pdns-4.9.0-fix_boost.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pdns.spec ++++++
--- /var/tmp/diff_new_pack.CINqsi/_old 2024-05-28 17:31:22.941633496 +0200
+++ /var/tmp/diff_new_pack.CINqsi/_new 2024-05-28 17:31:22.941633496 +0200
@@ -43,9 +43,11 @@
%bcond_with pdns_lmdb
%endif
-%if 0%{?suse_version} < 1500
-BuildRequires: gcc9-c++
-%define compiler_ver -9
+%if 0%{?sle_version} && 0%{?sle_version} < 160000
+# std::filesystem is supported since gcc8, but default gcc is 7
+BuildRequires: gcc12
+BuildRequires: gcc12-c++
+%define compiler_ver -12
%else
BuildRequires: gcc-c++
%endif
@@ -57,7 +59,7 @@
%endif
Name: pdns
-Version: 4.9.0
+Version: 4.9.1
Release: 0
Summary: Authoritative-only nameserver
License: GPL-2.0-only
@@ -67,12 +69,13 @@
Source1: https://downloads.powerdns.com/releases/pdns-%{version}.tar.bz2.sig
Source2: https://powerdns.com/powerdns-keyblock.asc#/pdns.keyring
Patch0: pdns-4.0.3_allow_dacoverride_in_capset.patch
+# PATCH-FIX-OPENSUSE pdns-4.9.0-fix_boost.patch -- fix including boost headers with older releases
+Patch1: pdns-4.9.0-fix_boost.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: curl-devel
BuildRequires: flex
-BuildRequires: gcc-c++
BuildRequires: gdbm-devel
BuildRequires: libmysqlclient-devel
BuildRequires: libsodium-devel
@@ -84,7 +87,9 @@
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(systemd)
%{?systemd_ordering}
-%if 0%{?suse_version} > 1325
+%if 0%{?suse_version}
+# version 1.55 adds support for boost::hash<CompositeKeyResult> used in auth-querycache.cc
+BuildRequires: libboost_headers-devel >= 1.55
BuildRequires: libboost_program_options-devel
BuildRequires: libboost_serialization-devel
%else
@@ -264,6 +269,7 @@
%autosetup -n %{name}-%{version} -p1
%build
+export CC=gcc%{?compiler_ver}
export CXX=g++%{?compiler_ver}
%configure \
--docdir=%{_docdir}/%{name}/ \
++++++ pdns-4.9.0-fix_boost.patch ++++++
Index: pdns-4.9.0/pdns/dnsparser.hh
===================================================================
--- pdns-4.9.0.orig/pdns/dnsparser.hh
+++ pdns-4.9.0/pdns/dnsparser.hh
@@ -39,6 +39,8 @@
#include "iputils.hh"
#include "svc-records.hh"
+#include <boost/utility.hpp>
+
/** DNS records have three representations:
1) in the packet
2) parsed in a class, ready for use
Index: pdns-4.9.0/pdns/dnswriter.hh
===================================================================
--- pdns-4.9.0.orig/pdns/dnswriter.hh
+++ pdns-4.9.0/pdns/dnswriter.hh
@@ -30,6 +30,7 @@
#include "svc-records.hh"
#include <arpa/inet.h>
+#include <boost/utility.hpp>
/** this class can be used to write DNS packets. It knows about DNS in the sense that it makes
the packet header and record headers.
Index: pdns-4.9.0/pdns/iputils.hh
===================================================================
--- pdns-4.9.0.orig/pdns/iputils.hh
+++ pdns-4.9.0/pdns/iputils.hh
@@ -33,6 +33,8 @@
#include <netdb.h>
#include <sstream>
+#include <boost/utility.hpp>
+
#include "namespaces.hh"
#ifdef __APPLE__
Index: pdns-4.9.0/pdns/auth-zonecache.hh
===================================================================
--- pdns-4.9.0.orig/pdns/auth-zonecache.hh
+++ pdns-4.9.0/pdns/auth-zonecache.hh
@@ -27,6 +27,8 @@
#include "lock.hh"
#include "misc.hh"
+#include <boost/utility.hpp>
+
class AuthZoneCache : public boost::noncopyable
{
public:
++++++ pdns-4.9.0.tar.bz2 -> pdns-4.9.1.tar.bz2 ++++++
++++ 2026 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/configure.ac new/pdns-4.9.1/configure.ac
--- old/pdns-4.9.0/configure.ac 2024-03-15 10:18:43.000000000 +0100
+++ new/pdns-4.9.1/configure.ac 2024-05-28 09:44:54.000000000 +0200
@@ -1,6 +1,6 @@
AC_PREREQ([2.69])
-AC_INIT([pdns], [4.9.0])
+AC_INIT([pdns], [4.9.1])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects parallel-tests 1.11])
AM_SILENT_RULES([yes])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/calidns.1 new/pdns-4.9.1/docs/calidns.1
--- old/pdns-4.9.0/docs/calidns.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/calidns.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CALIDNS" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "CALIDNS" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
calidns \- A DNS recursor testing tool
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnsbulktest.1 new/pdns-4.9.1/docs/dnsbulktest.1
--- old/pdns-4.9.0/docs/dnsbulktest.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnsbulktest.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSBULKTEST" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSBULKTEST" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnsbulktest \- A debugging tool for intermittent resolver failures
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnsgram.1 new/pdns-4.9.1/docs/dnsgram.1
--- old/pdns-4.9.0/docs/dnsgram.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnsgram.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSGRAM" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSGRAM" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnsgram \- A debugging tool for intermittent resolver failures
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnspcap2calidns.1 new/pdns-4.9.1/docs/dnspcap2calidns.1
--- old/pdns-4.9.0/docs/dnspcap2calidns.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnspcap2calidns.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSPCAP2CALIDNS" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSPCAP2CALIDNS" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnspcap2calidns \- A tool to convert PCAPs of DNS traffic to calidns input
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnspcap2protobuf.1 new/pdns-4.9.1/docs/dnspcap2protobuf.1
--- old/pdns-4.9.0/docs/dnspcap2protobuf.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnspcap2protobuf.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSPCAP2PROTOBUF" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSPCAP2PROTOBUF" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnspcap2protobuf \- A tool to convert PCAPs of DNS traffic to PowerDNS Protobuf
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnsreplay.1 new/pdns-4.9.1/docs/dnsreplay.1
--- old/pdns-4.9.0/docs/dnsreplay.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnsreplay.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSREPLAY" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSREPLAY" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnsreplay \- A PowerDNS nameserver debugging tool
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnsscan.1 new/pdns-4.9.1/docs/dnsscan.1
--- old/pdns-4.9.0/docs/dnsscan.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnsscan.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSSCAN" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSSCAN" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnsscan \- List the amount of queries per qtype in a pcap
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnsscope.1 new/pdns-4.9.1/docs/dnsscope.1
--- old/pdns-4.9.0/docs/dnsscope.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnsscope.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSSCOPE" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSSCOPE" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnsscope \- A PowerDNS nameserver debugging tool
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnstcpbench.1 new/pdns-4.9.1/docs/dnstcpbench.1
--- old/pdns-4.9.0/docs/dnstcpbench.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnstcpbench.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSTCPBENCH" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSTCPBENCH" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnstcpbench \- tool to perform TCP benchmarking of nameservers
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dnswasher.1 new/pdns-4.9.1/docs/dnswasher.1
--- old/pdns-4.9.0/docs/dnswasher.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dnswasher.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DNSWASHER" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DNSWASHER" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dnswasher \- A PowerDNS nameserver debugging tool
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/dumresp.1 new/pdns-4.9.1/docs/dumresp.1
--- old/pdns-4.9.0/docs/dumresp.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/dumresp.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DUMRESP" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "DUMRESP" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
dumresp \- A dumb DNS responder
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/ixfrdist.1 new/pdns-4.9.1/docs/ixfrdist.1
--- old/pdns-4.9.0/docs/ixfrdist.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/ixfrdist.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "IXFRDIST" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "IXFRDIST" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
ixfrdist \- An IXFR/AXFR-only server that re-distributes zones
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/ixfrdist.yml.5 new/pdns-4.9.1/docs/ixfrdist.yml.5
--- old/pdns-4.9.0/docs/ixfrdist.yml.5 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/ixfrdist.yml.5 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "IXFRDIST.YML" "5" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "IXFRDIST.YML" "5" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
ixfrdist.yml \- The ixfrdist configuration file
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/ixplore.1 new/pdns-4.9.1/docs/ixplore.1
--- old/pdns-4.9.0/docs/ixplore.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/ixplore.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "IXPLORE" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "IXPLORE" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
ixplore \- A tool that provides insights into IXFRs
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/nproxy.1 new/pdns-4.9.1/docs/nproxy.1
--- old/pdns-4.9.0/docs/nproxy.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/nproxy.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "NPROXY" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "NPROXY" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
nproxy \- DNS notification proxy
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/nsec3dig.1 new/pdns-4.9.1/docs/nsec3dig.1
--- old/pdns-4.9.0/docs/nsec3dig.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/nsec3dig.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "NSEC3DIG" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "NSEC3DIG" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
nsec3dig \- Show and validate NSEC3 proofs
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/pdns_control.1 new/pdns-4.9.1/docs/pdns_control.1
--- old/pdns-4.9.0/docs/pdns_control.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/pdns_control.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PDNS_CONTROL" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "PDNS_CONTROL" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
pdns_control \- Control the PowerDNS nameserver
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/pdns_notify.1 new/pdns-4.9.1/docs/pdns_notify.1
--- old/pdns-4.9.0/docs/pdns_notify.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/pdns_notify.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PDNS_NOTIFY" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "PDNS_NOTIFY" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
pdns_notify \- A simple DNS NOTIFY sender
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/pdns_server.1 new/pdns-4.9.1/docs/pdns_server.1
--- old/pdns-4.9.0/docs/pdns_server.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/pdns_server.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PDNS_SERVER" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "PDNS_SERVER" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
pdns_server \- The PowerDNS Authoritative Nameserver
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/pdnsutil.1 new/pdns-4.9.1/docs/pdnsutil.1
--- old/pdns-4.9.0/docs/pdnsutil.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/pdnsutil.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PDNSUTIL" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "PDNSUTIL" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
pdnsutil \- PowerDNS record and DNSSEC command and control
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/saxfr.1 new/pdns-4.9.1/docs/saxfr.1
--- old/pdns-4.9.0/docs/saxfr.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/saxfr.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SAXFR" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "SAXFR" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
saxfr \- Perform AXFRs and show information about it
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/sdig.1 new/pdns-4.9.1/docs/sdig.1
--- old/pdns-4.9.0/docs/sdig.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/sdig.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SDIG" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "SDIG" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
sdig \- Perform a DNS query and show the results
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/zone2json.1 new/pdns-4.9.1/docs/zone2json.1
--- old/pdns-4.9.0/docs/zone2json.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/zone2json.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ZONE2JSON" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "ZONE2JSON" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
zone2json \- convert BIND zones to JSON
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/zone2ldap.1 new/pdns-4.9.1/docs/zone2ldap.1
--- old/pdns-4.9.0/docs/zone2ldap.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/zone2ldap.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ZONE2LDAP" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "ZONE2LDAP" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
zone2ldap \- convert zonefiles to ldif
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/docs/zone2sql.1 new/pdns-4.9.1/docs/zone2sql.1
--- old/pdns-4.9.0/docs/zone2sql.1 2024-03-15 10:19:34.000000000 +0100
+++ new/pdns-4.9.1/docs/zone2sql.1 2024-05-28 09:45:48.000000000 +0200
@@ -27,7 +27,7 @@
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ZONE2SQL" "1" "Mar 15, 2024" "" "PowerDNS Authoritative Server"
+.TH "ZONE2SQL" "1" "May 28, 2024" "" "PowerDNS Authoritative Server"
.SH NAME
zone2sql \- convert BIND zones to SQL
.SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/ext/yahttp/yahttp/utility.hpp new/pdns-4.9.1/ext/yahttp/yahttp/utility.hpp
--- old/pdns-4.9.0/ext/yahttp/yahttp/utility.hpp 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/ext/yahttp/yahttp/utility.hpp 2024-05-28 09:44:43.000000000 +0200
@@ -1,4 +1,13 @@
#pragma once
+
+#ifndef YAHTTP_MAX_REQUEST_LINE_SIZE
+#define YAHTTP_MAX_REQUEST_LINE_SIZE 8192
+#endif
+
+#ifndef YAHTTP_MAX_REQUEST_FIELDS
+#define YAHTTP_MAX_REQUEST_FIELDS 100
+#endif
+
namespace YaHTTP {
static const char *MONTHS[] = {0,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",0}; //<! List of months
static const char *DAYS[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat",0}; //<! List of days
@@ -364,7 +373,10 @@
}
}; //<! static HTTP codes to text mappings
- static strstr_map_t parseUrlParameters(std::string parameters) {
+ static strstr_map_t parseUrlParameters(const std::string& parameters) {
+ if (parameters.size() > YAHTTP_MAX_REQUEST_LINE_SIZE) {
+ return {};
+ }
std::string::size_type pos = 0;
strstr_map_t parameter_map;
while (pos != std::string::npos) {
@@ -390,13 +402,14 @@
// no parameters at all
break;
}
- key = decodeURL(key);
- value = decodeURL(value);
- parameter_map[key] = std::move(value);
+ parameter_map[decodeURL(key)] = decodeURL(value);
if (nextpos == std::string::npos) {
// no more parameters left
break;
}
+ if (parameter_map.size() >= YAHTTP_MAX_REQUEST_FIELDS) {
+ break;
+ }
pos = nextpos+1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/m4/pdns_check_time_t.m4 new/pdns-4.9.1/m4/pdns_check_time_t.m4
--- old/pdns-4.9.0/m4/pdns_check_time_t.m4 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/m4/pdns_check_time_t.m4 2024-05-28 09:44:43.000000000 +0200
@@ -1,4 +1,23 @@
AC_DEFUN([PDNS_CHECK_TIME_T], [
+AC_ARG_ENABLE([experimental_64bit_time_t_support_on_glibc],
+ AS_HELP_STRING([--enable-experimental-64bit-time_t-support-on-glibc],
+ [enable experimental 64bit time_t support on >=glibc-2.34 for 32bit systems @<:@default=no@:>@]
+ ),
+ [enable_experimental_64bit_time_t_support_on_glibc=$enableval],
+ [enable_experimental_64bit_time_t_support_on_glibc=no]
+)
+AS_IF([test "x$enable_experimental_64bit_time_t_support_on_glibc" != "xno"],
+ # _TIME_BITS=64 is supported on glibc-2.34 and requires _FILE_OFFSET_BITS=64
+ [AC_EGREP_CPP(yes, [
+ #include <features.h>
+ #if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 34 || __GLIBC__ > 2
+ yes
+ #endif
+ ], [
+ CFLAGS="${CFLAGS} -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64"
+ CXXFLAGS="${CXXFLAGS} -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64"
+ ])]
+)
AX_COMPILE_CHECK_SIZEOF(time_t)
AS_IF([test $ac_size -lt 8], [AC_MSG_ERROR([size of time_t is $ac_size, which is not large enough to fix the y2k38 bug])])
AX_CHECK_SIGN([time_t], [:], [AC_MSG_ERROR([time_t is unsigned, PowerDNS code relies on it being signed])], [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/m4/systemd.m4 new/pdns-4.9.1/m4/systemd.m4
--- old/pdns-4.9.0/m4/systemd.m4 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/m4/systemd.m4 2024-05-28 09:44:43.000000000 +0200
@@ -134,7 +134,7 @@
AC_PATH_PROG([SYSTEMCTL], [systemctl], [no])
AS_IF([test "$SYSTEMCTL" = "no"],
[AC_MSG_ERROR([systemctl not found])], [
- _systemd_version=`${SYSTEMCTL} --version|head -1 |cut -d" " -f 2`
+ _systemd_version=`${SYSTEMCTL} --version|head -1 | tr ".~" " " | cut -d" " -f 2`
if test $_systemd_version -ge 183; then
systemd_private_tmp=y
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/bindbackend/bindbackend2.cc new/pdns-4.9.1/modules/bindbackend/bindbackend2.cc
--- old/pdns-4.9.0/modules/bindbackend/bindbackend2.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/bindbackend/bindbackend2.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1535,7 +1535,7 @@
public:
Bind2Loader()
{
- BackendMakers().report(new Bind2Factory);
+ BackendMakers().report(std::make_unique<Bind2Factory>());
g_log << Logger::Info << "[bind2backend] This is the bind backend version " << VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/geoipbackend/geoipbackend.cc new/pdns-4.9.1/modules/geoipbackend/geoipbackend.cc
--- old/pdns-4.9.0/modules/geoipbackend/geoipbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/geoipbackend/geoipbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1199,7 +1199,7 @@
public:
GeoIPLoader()
{
- BackendMakers().report(new GeoIPFactory);
+ BackendMakers().report(std::make_unique<GeoIPFactory>());
g_log << Logger::Info << "[geoipbackend] This is the geoip backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/gmysqlbackend/gmysqlbackend.cc new/pdns-4.9.1/modules/gmysqlbackend/gmysqlbackend.cc
--- old/pdns-4.9.0/modules/gmysqlbackend/gmysqlbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/gmysqlbackend/gmysqlbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -185,7 +185,7 @@
//! This reports us to the main UeberBackend class
gMySQLLoader()
{
- BackendMakers().report(new gMySQLFactory("gmysql"));
+ BackendMakers().report(std::make_unique<gMySQLFactory>("gmysql"));
g_log << Logger::Info << "[gmysqlbackend] This is the gmysql backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/godbcbackend/godbcbackend.cc new/pdns-4.9.1/modules/godbcbackend/godbcbackend.cc
--- old/pdns-4.9.0/modules/godbcbackend/godbcbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/godbcbackend/godbcbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -169,7 +169,7 @@
//! This reports us to the main UeberBackend class
gODBCLoader()
{
- BackendMakers().report(new gODBCFactory("godbc"));
+ BackendMakers().report(std::make_unique<gODBCFactory>("godbc"));
g_log << Logger::Warning << "This is module godbcbackend reporting" << std::endl;
}
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/gpgsqlbackend/gpgsqlbackend.cc new/pdns-4.9.1/modules/gpgsqlbackend/gpgsqlbackend.cc
--- old/pdns-4.9.0/modules/gpgsqlbackend/gpgsqlbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/gpgsqlbackend/gpgsqlbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -192,7 +192,7 @@
//! This reports us to the main UeberBackend class
gPgSQLLoader()
{
- BackendMakers().report(new gPgSQLFactory("gpgsql"));
+ BackendMakers().report(std::make_unique<gPgSQLFactory>("gpgsql"));
g_log << Logger::Info << "[gpgsqlbackend] This is the gpgsql backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/gsqlite3backend/gsqlite3backend.cc new/pdns-4.9.1/modules/gsqlite3backend/gsqlite3backend.cc
--- old/pdns-4.9.0/modules/gsqlite3backend/gsqlite3backend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/gsqlite3backend/gsqlite3backend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -179,7 +179,7 @@
//! This reports us to the main UeberBackend class
gSQLite3Loader()
{
- BackendMakers().report(new gSQLite3Factory("gsqlite3"));
+ BackendMakers().report(std::make_unique<gSQLite3Factory>("gsqlite3"));
g_log << Logger::Info << "[gsqlite3] This is the gsqlite3 backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/ldapbackend/ldapbackend.cc new/pdns-4.9.1/modules/ldapbackend/ldapbackend.cc
--- old/pdns-4.9.0/modules/ldapbackend/ldapbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/ldapbackend/ldapbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -293,12 +293,10 @@
class LdapLoader
{
- LdapFactory factory;
-
public:
LdapLoader()
{
- BackendMakers().report(&factory);
+ BackendMakers().report(std::make_unique<LdapFactory>());
g_log << Logger::Info << "[ldapbackend] This is the ldap backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/lmdbbackend/lmdbbackend.cc new/pdns-4.9.1/modules/lmdbbackend/lmdbbackend.cc
--- old/pdns-4.9.0/modules/lmdbbackend/lmdbbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/lmdbbackend/lmdbbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -2792,7 +2792,7 @@
public:
LMDBLoader()
{
- BackendMakers().report(new LMDBFactory);
+ BackendMakers().report(std::make_unique<LMDBFactory>());
g_log << Logger::Info << "[lmdbbackend] This is the lmdb backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/lua2backend/lua2backend.cc new/pdns-4.9.1/modules/lua2backend/lua2backend.cc
--- old/pdns-4.9.0/modules/lua2backend/lua2backend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/lua2backend/lua2backend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -62,7 +62,7 @@
public:
Lua2Loader()
{
- BackendMakers().report(new Lua2Factory);
+ BackendMakers().report(std::make_unique<Lua2Factory>());
g_log << Logger::Info << "[lua2backend] This is the lua2 backend version " VERSION
#ifndef REPRODUCIBLE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/pipebackend/pipebackend.cc new/pdns-4.9.1/modules/pipebackend/pipebackend.cc
--- old/pdns-4.9.0/modules/pipebackend/pipebackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/pipebackend/pipebackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -379,7 +379,7 @@
public:
PipeLoader()
{
- BackendMakers().report(new PipeFactory);
+ BackendMakers().report(std::make_unique<PipeFactory>());
g_log << Logger::Info << kBackendId << " This is the pipe backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/remotebackend.cc new/pdns-4.9.1/modules/remotebackend/remotebackend.cc
--- old/pdns-4.9.0/modules/remotebackend/remotebackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/remotebackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1007,7 +1007,7 @@
RemoteLoader::RemoteLoader()
{
- BackendMakers().report(new RemoteBackendFactory);
+ BackendMakers().report(std::make_unique<RemoteBackendFactory>());
g_log << Logger::Info << kBackendId << " This is the remote backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-http.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-http.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-http.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-http.cc 2024-05-28 09:44:43.000000000 +0200
@@ -75,7 +75,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "http:url=http://localhost:62434/dns";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-json.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-json.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-json.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-json.cc 2024-05-28 09:44:43.000000000 +0200
@@ -73,7 +73,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "http:url=http://localhost:62434/dns/endpoint.json,post=1,post_json=1";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-pipe.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-pipe.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-pipe.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-pipe.cc 2024-05-28 09:44:43.000000000 +0200
@@ -73,7 +73,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "pipe:command=unittest_pipe.rb";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-post.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-post.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-post.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-post.cc 2024-05-28 09:44:43.000000000 +0200
@@ -73,7 +73,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "http:url=http://localhost:62434/dns,post=1";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-unix.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-unix.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-unix.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-unix.cc 2024-05-28 09:44:43.000000000 +0200
@@ -73,7 +73,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "unix:path=/tmp/remotebackend.sock";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/remotebackend/test-remotebackend-zeromq.cc new/pdns-4.9.1/modules/remotebackend/test-remotebackend-zeromq.cc
--- old/pdns-4.9.0/modules/remotebackend/test-remotebackend-zeromq.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/remotebackend/test-remotebackend-zeromq.cc 2024-05-28 09:44:43.000000000 +0200
@@ -75,7 +75,7 @@
try {
// setup minimum arguments
::arg().set("module-dir") = "./.libs";
- new RemoteLoader();
+ auto loader = std::make_unique<RemoteLoader>();
BackendMakers().launch("remote");
// then get us a instance of it
::arg().set("remote-connection-string") = "zeromq:endpoint=ipc:///tmp/remotebackend.0";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/modules/tinydnsbackend/tinydnsbackend.cc new/pdns-4.9.1/modules/tinydnsbackend/tinydnsbackend.cc
--- old/pdns-4.9.0/modules/tinydnsbackend/tinydnsbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/modules/tinydnsbackend/tinydnsbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -393,7 +393,7 @@
public:
TinyDNSLoader()
{
- BackendMakers().report(new TinyDNSFactory);
+ BackendMakers().report(std::make_unique<TinyDNSFactory>());
g_log << Logger::Info << "[tinydnsbackend] This is the tinydns backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/auth-main.cc new/pdns-4.9.1/pdns/auth-main.cc
--- old/pdns-4.9.0/pdns/auth-main.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/auth-main.cc 2024-05-28 09:44:43.000000000 +0200
@@ -307,6 +307,7 @@
::arg().setSwitch("8bit-dns", "Allow 8bit dns queries") = "no";
#ifdef HAVE_LUA_RECORDS
::arg().setSwitch("enable-lua-records", "Process LUA records for all zones (metadata overrides this)") = "no";
+ ::arg().setSwitch("lua-records-insert-whitespace", "Insert whitespace when combining LUA chunks") = "yes";
::arg().set("lua-records-exec-limit", "LUA records scripts execution limit (instructions count). Values <= 0 mean no limit") = "1000";
::arg().set("lua-health-checks-expire-delay", "Stops doing health checks after the record hasn't been used for that delay (in seconds)") = "3600";
::arg().set("lua-health-checks-interval", "LUA records health checks monitoring interval in seconds") = "5";
@@ -702,6 +703,7 @@
g_doLuaRecord = ::arg().mustDo("enable-lua-records");
g_LuaRecordSharedState = (::arg()["enable-lua-records"] == "shared");
g_luaRecordExecLimit = ::arg().asNum("lua-records-exec-limit");
+ g_luaRecordInsertWhitespace = ::arg().mustDo("lua-records-insert-whitespace");
g_luaHealthChecksInterval = ::arg().asNum("lua-health-checks-interval");
g_luaConsistentHashesExpireDelay = ::arg().asNum("lua-consistent-hashes-expire-delay");
g_luaConsistentHashesCleanupInterval = ::arg().asNum("lua-consistent-hashes-cleanup-interval");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/auth-main.hh new/pdns-4.9.1/pdns/auth-main.hh
--- old/pdns-4.9.0/pdns/auth-main.hh 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/auth-main.hh 2024-05-28 09:44:43.000000000 +0200
@@ -50,6 +50,7 @@
#ifdef HAVE_LUA_RECORDS
extern bool g_doLuaRecord;
extern bool g_LuaRecordSharedState;
+extern bool g_luaRecordInsertWhitespace;
extern time_t g_luaHealthChecksInterval;
extern time_t g_luaHealthChecksExpireDelay;
extern time_t g_luaConsistentHashesExpireDelay;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/auth-primarycommunicator.cc new/pdns-4.9.1/pdns/auth-primarycommunicator.cc
--- old/pdns-4.9.0/pdns/auth-primarycommunicator.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/auth-primarycommunicator.cc 2024-05-28 09:44:43.000000000 +0200
@@ -157,16 +157,21 @@
continue;
}
- B->setDomainMetadata(di.zone, "CATALOG-HASH", mapHash);
-
- g_log << Logger::Warning << "new CATALOG-HASH '" << mapHash << "' for zone '" << di.zone << "'" << endl;
-
SOAData sd;
- if (!B->getSOAUncached(di.zone, sd)) {
- g_log << Logger::Warning << "SOA lookup failed for producer zone '" << di.zone << "'" << endl;
+ try {
+ if (!B->getSOAUncached(di.zone, sd)) {
+ g_log << Logger::Warning << "SOA lookup failed for producer zone '" << di.zone << "'" << endl;
+ continue;
+ }
+ }
+ catch (...) {
continue;
}
+ g_log << Logger::Warning << "new CATALOG-HASH '" << mapHash << "' for zone '" << di.zone << "'" << endl;
+
+ B->setDomainMetadata(di.zone, "CATALOG-HASH", mapHash);
+
DNSResourceRecord rr;
makeIncreasedSOARecord(sd, "EPOCH", "", rr);
di.backend->startTransaction(sd.qname, -1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/backends/gsql/gsqlbackend.cc new/pdns-4.9.1/pdns/backends/gsql/gsqlbackend.cc
--- old/pdns-4.9.0/pdns/backends/gsql/gsqlbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/backends/gsql/gsqlbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -463,7 +463,7 @@
continue;
}
catch (...) {
- g_log << Logger::Warning << __PRETTY_FUNCTION__ << " error while parsing SOA data for zone '" << di.zone << endl;
+ g_log << Logger::Warning << __PRETTY_FUNCTION__ << " error while parsing SOA data for zone '" << di.zone << "'" << endl;
continue;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/bindparser.cc new/pdns-4.9.1/pdns/bindparser.cc
--- old/pdns-4.9.0/pdns/bindparser.cc 2024-03-15 10:19:04.000000000 +0100
+++ new/pdns-4.9.1/pdns/bindparser.cc 2024-05-28 09:45:15.000000000 +0200
@@ -87,7 +87,7 @@
#define YYSTYPE char *
-extern "C"
+extern "C"
{
int yyparse(void);
int yylex(void);
@@ -105,7 +105,7 @@
extern int linenumber;
static void yyerror(const char *str)
{
- extern char *current_filename;
+ extern char *current_filename;
throw PDNSException("Error in bind configuration '"+string(current_filename)+"' on line "+std::to_string(linenumber)+": "+str);
}
@@ -114,7 +114,7 @@
BindDomainInfo s_di;
void BindParser::parse(const string &fname)
-{
+{
yydebug=0;
yyin=fopen(fname.c_str(),"r");
yyrestart(yyin);
@@ -717,11 +717,11 @@
static const yytype_int16 yyrline[] =
{
0, 115, 115, 117, 120, 120, 120, 120, 123, 125,
- 129, 133, 141, 152, 154, 159, 159, 162, 165, 167,
- 171, 174, 176, 179, 179, 182, 182, 185, 192, 195,
- 197, 200, 206, 208, 211, 211, 211, 214, 218, 221,
- 223, 229, 229, 229, 233, 233, 233, 236, 239, 242,
- 244, 247, 254, 256, 259, 267, 276, 285, 291
+ 129, 133, 141, 152, 154, 159, 163, 166, 169, 171,
+ 175, 181, 183, 186, 186, 189, 189, 192, 199, 202,
+ 204, 207, 213, 215, 218, 222, 222, 228, 232, 235,
+ 237, 243, 243, 243, 247, 247, 247, 250, 253, 256,
+ 258, 261, 268, 270, 273, 281, 289, 298, 304
};
#endif
@@ -1366,71 +1366,110 @@
#line 1367 "bindparser.cc"
break;
+ case 15: /* acl_command: ACLTOK quotedname acl_block */
+#line 160 "bindparser.yy"
+ {
+ free(yyvsp[-1]);
+ }
+#line 1375 "bindparser.cc"
+ break;
+
+ case 20: /* acl: AWORD */
+#line 176 "bindparser.yy"
+ {
+ free(yyvsp[0]);
+ }
+#line 1383 "bindparser.cc"
+ break;
+
case 27: /* options_directory_command: DIRECTORYTOK quotedname */
-#line 186 "bindparser.yy"
+#line 193 "bindparser.yy"
{
parent->setDirectory(yyvsp[0]);
free(yyvsp[0]);
}
-#line 1376 "bindparser.cc"
+#line 1392 "bindparser.cc"
break;
case 31: /* also_notify: AWORD */
-#line 201 "bindparser.yy"
+#line 208 "bindparser.yy"
{
parent->addAlsoNotify(yyvsp[0]);
free(yyvsp[0]);
}
-#line 1385 "bindparser.cc"
+#line 1401 "bindparser.cc"
+ break;
+
+ case 34: /* term: AWORD */
+#line 219 "bindparser.yy"
+ {
+ free(yyvsp[0]);
+ }
+#line 1409 "bindparser.cc"
+ break;
+
+ case 36: /* term: quotedname */
+#line 223 "bindparser.yy"
+ {
+ free(yyvsp[0]);
+ }
+#line 1417 "bindparser.cc"
break;
case 51: /* zone_also_notify: AWORD */
-#line 248 "bindparser.yy"
+#line 262 "bindparser.yy"
{
s_di.alsoNotify.insert(yyvsp[0]);
free(yyvsp[0]);
}
-#line 1394 "bindparser.cc"
+#line 1426 "bindparser.cc"
break;
case 54: /* primary: AWORD */
-#line 260 "bindparser.yy"
+#line 274 "bindparser.yy"
{
s_di.primaries.push_back(ComboAddress(yyvsp[0], 53));
free(yyvsp[0]);
}
-#line 1403 "bindparser.cc"
+#line 1435 "bindparser.cc"
break;
case 55: /* zone_file_command: FILETOK quotedname */
-#line 268 "bindparser.yy"
+#line 282 "bindparser.yy"
{
- // printf("Found a filename: '%s'\n",$2);
s_di.filename=yyvsp[0];
free(yyvsp[0]);
}
-#line 1413 "bindparser.cc"
+#line 1444 "bindparser.cc"
break;
case 56: /* zone_type_command: TYPETOK AWORD */
-#line 277 "bindparser.yy"
+#line 290 "bindparser.yy"
{
s_di.type=yyvsp[0];
free(yyvsp[0]);
}
-#line 1422 "bindparser.cc"
+#line 1453 "bindparser.cc"
break;
case 57: /* quotedname: QUOTEDWORD */
-#line 286 "bindparser.yy"
+#line 299 "bindparser.yy"
{
yyval=yyvsp[0];
}
-#line 1430 "bindparser.cc"
+#line 1461 "bindparser.cc"
+ break;
+
+ case 58: /* filename: AWORD */
+#line 305 "bindparser.yy"
+ {
+ free(yyvsp[0]);
+ }
+#line 1469 "bindparser.cc"
break;
-#line 1434 "bindparser.cc"
+#line 1473 "bindparser.cc"
default: break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/bindparser.yy new/pdns-4.9.1/pdns/bindparser.yy
--- old/pdns-4.9.0/pdns/bindparser.yy 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/bindparser.yy 2024-05-28 09:44:43.000000000 +0200
@@ -17,7 +17,7 @@
#define YYSTYPE char *
-extern "C"
+extern "C"
{
int yyparse(void);
int yylex(void);
@@ -35,7 +35,7 @@
extern int linenumber;
static void yyerror(const char *str)
{
- extern char *current_filename;
+ extern char *current_filename;
throw PDNSException("Error in bind configuration '"+string(current_filename)+"' on line "+std::to_string(linenumber)+": "+str);
}
@@ -44,7 +44,7 @@
BindDomainInfo s_di;
void BindParser::parse(const string &fname)
-{
+{
yydebug=0;
yyin=fopen(fname.c_str(),"r");
yyrestart(yyin);
@@ -113,7 +113,7 @@
%%
root_commands:
- |
+ |
root_commands root_command SEMICOLON
;
@@ -126,7 +126,7 @@
;
command:
- terms
+ terms
;
global_zone_command:
@@ -137,7 +137,7 @@
parent->commit(s_di);
s_di.clear();
}
- |
+ |
ZONETOK quotedname AWORD zone_block
{
s_di.name=DNSName($2);
@@ -156,19 +156,26 @@
acl_command:
- ACLTOK quotedname acl_block | ACLTOK filename acl_block
+ ACLTOK quotedname acl_block
+ {
+ free($2);
+ }
+ | ACLTOK filename acl_block
;
acl_block: OBRACE acls EBRACE
;
-
-acls:
+
+acls:
|
acl SEMICOLON acls
;
acl:
AWORD
+ {
+ free($1);
+ }
;
options_commands:
@@ -189,10 +196,10 @@
}
;
-also_notify_command: ALSONOTIFYTOK OBRACE also_notify_list EBRACE
+also_notify_command: ALSONOTIFYTOK OBRACE also_notify_list EBRACE
;
-also_notify_list:
+also_notify_list:
|
also_notify SEMICOLON also_notify_list
;
@@ -208,10 +215,17 @@
terms term
;
-term: AWORD | block | quotedname
+term: AWORD
+ {
+ free($1);
+ }
+ | block | quotedname
+ {
+ free($1);
+ }
;
-block:
- OBRACE commands EBRACE
+block:
+ OBRACE commands EBRACE
;
zone_block:
@@ -252,7 +266,7 @@
;
primaries: /* empty */
- |
+ |
primaries primary SEMICOLON
;
@@ -266,7 +280,6 @@
zone_file_command:
FILETOK quotedname
{
- // printf("Found a filename: '%s'\n",$2);
s_di.filename=$2;
free($2);
}
@@ -289,4 +302,7 @@
;
filename: AWORD
+ {
+ free($1);
+ }
;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/dnsbackend.cc new/pdns-4.9.1/pdns/dnsbackend.cc
--- old/pdns-4.9.0/pdns/dnsbackend.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/dnsbackend.cc 2024-05-28 09:44:43.000000000 +0200
@@ -85,18 +85,14 @@
return bmc;
}
-void BackendMakerClass::report(BackendFactory* backendFactory)
+void BackendMakerClass::report(std::unique_ptr<BackendFactory>&& backendFactory)
{
- d_repository[backendFactory->getName()] = backendFactory;
+ d_repository[backendFactory->getName()] = std::move(backendFactory);
}
void BackendMakerClass::clear()
{
d_instances.clear();
- for (auto& repo : d_repository) {
- delete repo.second;
- repo.second = nullptr;
- }
d_repository.clear();
}
@@ -199,7 +195,7 @@
try {
for (const auto& instance : d_instances) {
current = instance.first + instance.second;
- auto* repo = d_repository[instance.first];
+ const auto& repo = d_repository[instance.first];
std::unique_ptr<DNSBackend> made{metadataOnly ? repo->makeMetadataOnly(instance.second) : repo->make(instance.second)};
if (made == nullptr) {
throw PDNSException("Unable to launch backend '" + instance.first + "'");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/dnsbackend.hh new/pdns-4.9.1/pdns/dnsbackend.hh
--- old/pdns-4.9.0/pdns/dnsbackend.hh 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/dnsbackend.hh 2024-05-28 09:44:43.000000000 +0200
@@ -500,7 +500,7 @@
class BackendMakerClass
{
public:
- void report(BackendFactory* backendFactory);
+ void report(std::unique_ptr<BackendFactory>&& backendFactory);
void launch(const string& instr);
vector<std::unique_ptr<DNSBackend>> all(bool metadataOnly = false);
static void load(const string& module);
@@ -510,7 +510,7 @@
private:
static void load_all();
- using d_repository_t = map<string, BackendFactory*>;
+ using d_repository_t = map<string, std::unique_ptr<BackendFactory>>;
d_repository_t d_repository;
vector<pair<string, string>> d_instances;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/dnsproxy.cc new/pdns-4.9.1/pdns/dnsproxy.cc
--- old/pdns-4.9.0/pdns/dnsproxy.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/dnsproxy.cc 2024-05-28 09:44:43.000000000 +0200
@@ -240,10 +240,11 @@
memcpy(&dHead, &buffer[0], sizeof(dHead));
{
auto conntrack = d_conntrack.lock();
-#if BYTE_ORDER == BIG_ENDIAN
- // this is needed because spoof ID down below does not respect the native byteorder
- d.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
-#endif
+ if (BYTE_ORDER == BIG_ENDIAN) {
+ // this is needed because spoof ID down below does not respect the native byteorder
+ dHead.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
+ }
+
auto iter = conntrack->find(dHead.id ^ d_xor);
if (iter == conntrack->end()) {
g_log << Logger::Error << "Discarding untracked packet from recursor backend with id " << (dHead.id ^ d_xor) << ". Conntrack table size=" << conntrack->size() << endl;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/dnsrecords.cc new/pdns-4.9.1/pdns/dnsrecords.cc
--- old/pdns-4.9.0/pdns/dnsrecords.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/dnsrecords.cc 2024-05-28 09:44:43.000000000 +0200
@@ -167,15 +167,27 @@
);
#ifdef HAVE_LUA_RECORDS
+
+bool g_luaRecordInsertWhitespace;
+
string LUARecordContent::getCode() const
{
// in d_code, series of "part1" "part2"
vector<string> parts;
stringtok(parts, d_code, "\"");
string ret;
- for(const auto& p : parts) {
- ret += p;
- ret.append(1, ' ');
+ if (g_luaRecordInsertWhitespace) { // default before 5.0
+ for(const auto& part : parts) {
+ ret += part;
+ ret.append(1, ' ');
+ }
+ }
+ else { // default since 5.0
+ for(const auto& part : parts) {
+ if (part != " ") {
+ ret += part;
+ }
+ }
}
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/ixfrdist.cc new/pdns-4.9.1/pdns/ixfrdist.cc
--- old/pdns-4.9.0/pdns/ixfrdist.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/ixfrdist.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1642,15 +1642,16 @@
}
if (config["gid"].IsDefined()) {
+ bool gidParsed = false;
auto gid = config["gid"].as<string>();
try {
configuration.gid = pdns::checked_stoi<gid_t>(gid);
+ gidParsed = true;
}
catch (const std::exception& e) {
- g_log<<Logger::Error<<"Can not parse gid "<<gid<<endl;
- had_error = true;
+ configuration.gid = 0;
}
- if (configuration.gid != 0) {
+ if (!gidParsed) {
//NOLINTNEXTLINE(concurrency-mt-unsafe): only one thread at this point
const struct group *gr = getgrnam(gid.c_str());
if (gr == nullptr) {
@@ -1691,15 +1692,16 @@
}
if (config["uid"].IsDefined()) {
+ bool uidParsed = false;
auto uid = config["uid"].as<string>();
try {
configuration.uid = pdns::checked_stoi<uid_t>(uid);
+ uidParsed = true;
}
catch (const std::exception& e) {
- g_log<<Logger::Error<<"Can not parse uid "<<uid<<endl;
- had_error = true;
+ configuration.uid = 0;
}
- if (configuration.uid != 0) {
+ if (!uidParsed) {
//NOLINTNEXTLINE(concurrency-mt-unsafe): only one thread at this point
const struct passwd *pw = getpwnam(uid.c_str());
if (pw == nullptr) {
@@ -1707,8 +1709,11 @@
had_error = true;
} else {
configuration.uid = pw->pw_uid;
+ uidParsed = true;
}
//NOLINTNEXTLINE(concurrency-mt-unsafe): only one thread at this point
+ }
+ if (uidParsed) {
configuration.userInfo = getpwuid(configuration.uid);
}
}
@@ -1794,11 +1799,6 @@
}
if (configuration->uid != 0) {
- g_log<<Logger::Notice<<"Dropping effective user-id to "<<configuration->uid<<endl;
- if (setuid(configuration->uid) < 0) {
- g_log<<Logger::Error<<"Could not set user id to "<<configuration->uid<<": "<<stringerror()<<endl;
- had_error = true;
- }
if (configuration->userInfo == nullptr) {
if (setgroups(0, nullptr) < 0) {
g_log<<Logger::Error<<"Unable to drop supplementary gids: "<<stringerror()<<endl;
@@ -1810,6 +1810,12 @@
had_error = true;
}
}
+
+ g_log<<Logger::Notice<<"Dropping effective user-id to "<<configuration->uid<<endl;
+ if (setuid(configuration->uid) < 0) {
+ g_log<<Logger::Error<<"Could not set user id to "<<configuration->uid<<": "<<stringerror()<<endl;
+ had_error = true;
+ }
}
if (had_error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/named.conf.parsertest new/pdns-4.9.1/pdns/named.conf.parsertest
--- old/pdns-4.9.0/pdns/named.conf.parsertest 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/named.conf.parsertest 2024-05-28 09:44:43.000000000 +0200
@@ -1,6 +1,15 @@
# this file is used by ../pdns/test-bindparser_cc.cc
# if you change it, please make check!
+acl bogusnets {
+ 0.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3;
+ 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16;
+};
+
+acl "not-these-ips" {
+ !192.168.0/24;!10.0/16;any;
+};
+
options {
directory "./zones/";
recursion no;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/pdnsutil.cc new/pdns-4.9.1/pdns/pdnsutil.cc
--- old/pdns-4.9.0/pdns/pdnsutil.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/pdnsutil.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1,3 +1,4 @@
+#include "dnsrecords.hh"
#include <boost/smart_ptr/make_shared_array.hpp>
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -250,7 +251,7 @@
return result;
}
-static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, const vector<DNSResourceRecord>* suppliedrecords=nullptr)
+static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, const vector<DNSResourceRecord>* suppliedrecords=nullptr) // NOLINTNEXTLINE(readability-function-cognitive-complexity)
{
uint64_t numerrors=0, numwarnings=0;
@@ -377,6 +378,14 @@
if(rr.qtype.getCode() == QType::A || rr.qtype.getCode() == QType::AAAA) {
addresses.insert(rr.qname);
}
+ if(rr.qtype.getCode() == QType::LUA) {
+ shared_ptr<DNSRecordContent> drc(DNSRecordContent::make(rr.qtype.getCode(), QClass::IN, rr.content));
+ auto luarec = std::dynamic_pointer_cast<LUARecordContent>(drc);
+ QType qtype = luarec->d_type;
+ if(qtype == QType::A || qtype == QType::AAAA) {
+ addresses.insert(rr.qname);
+ }
+ }
if(rr.qtype.getCode() == QType::A) {
arecords.insert(rr.qname);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/pkcs11signers.cc new/pdns-4.9.1/pdns/pkcs11signers.cc
--- old/pdns-4.9.0/pdns/pkcs11signers.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/pkcs11signers.cc 2024-05-28 09:44:43.000000000 +0200
@@ -1030,7 +1030,7 @@
};
~LoaderStruct() {
#ifdef HAVE_P11KIT1_V2
- p11_kit_modules_release(p11_modules);
+ p11_kit_modules_finalize_and_release(p11_modules);
#else
p11_kit_finalize_registered();
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/test-distributor_hh.cc new/pdns-4.9.1/pdns/test-distributor_hh.cc
--- old/pdns-4.9.0/pdns/test-distributor_hh.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/test-distributor_hh.cc 2024-05-28 09:44:43.000000000 +0200
@@ -67,9 +67,17 @@
{
std::unique_ptr<DNSPacket> question(Question&)
{
- sleep(1);
+ if (d_shouldSleep) {
+ /* only sleep once per distributor thread, otherwise
+ we are sometimes destroyed before picking up the queued
+ queries, triggering a memory leak reported by Leak Sanitizer */
+ std::this_thread::sleep_for(std::chrono::seconds(1));
+ d_shouldSleep = false;
+ }
return make_unique<DNSPacket>(true);
}
+private:
+ bool d_shouldSleep{true};
};
static std::atomic<int> g_receivedAnswers1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdns-4.9.0/pdns/test-ueberbackend_cc.cc new/pdns-4.9.1/pdns/test-ueberbackend_cc.cc
--- old/pdns-4.9.0/pdns/test-ueberbackend_cc.cc 2024-03-15 10:18:33.000000000 +0100
+++ new/pdns-4.9.1/pdns/test-ueberbackend_cc.cc 2024-05-28 09:44:43.000000000 +0200
@@ -467,7 +467,7 @@
zoneA.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[1].insert(zoneA);
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1");
UeberBackend::go();
@@ -580,7 +580,7 @@
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.org."), QType::AAAA, "2001:db8::42", 60));
SimpleBackend::s_zones[2].insert(zoneB);
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();
@@ -725,7 +725,7 @@
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[2].insert(zoneB);
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();
@@ -852,7 +852,7 @@
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[2].insert(zoneB);
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();
@@ -976,7 +976,7 @@
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("ns1.powerdns.com."), QType::A, "192.0.2.1", 3600));
SimpleBackend::s_zones[2].insert(zoneB);
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();
@@ -1049,8 +1049,8 @@
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("0.1.0.0.2.ip6.arpa."), QType::SOA, "ns.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 3005126844 7200 1800 604800 3600", 3600));
SimpleBackend::s_zones[2].insert(zoneB);
- BackendMakers().report(new SimpleBackendFactory());
- BackendMakers().report(new SimpleBackendBestAuthFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
+ BackendMakers().report(std::make_unique<SimpleBackendBestAuthFactory>());
BackendMakers().launch("SimpleBackendBestAuth:1, SimpleBackend:2");
UeberBackend::go();
@@ -1112,7 +1112,7 @@
SimpleBackend::s_zones[2].insert(zoneB);
SimpleBackend::s_metadata[2].insert(SimpleBackend::SimpleMetaData(DNSName("powerdns.org."), "test-data-b", { "value1", "value2"}));
- BackendMakers().report(new SimpleBackendFactory());
+ BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package sqlite-jdbc for openSUSE:Factory checked in at 2024-05-28 17:29:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sqlite-jdbc (Old)
and /work/SRC/openSUSE:Factory/.sqlite-jdbc.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sqlite-jdbc"
Tue May 28 17:29:54 2024 rev:19 rq:1177298 version:3.46.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/sqlite-jdbc/sqlite-jdbc.changes 2024-04-18 22:13:18.419026915 +0200
+++ /work/SRC/openSUSE:Factory/.sqlite-jdbc.new.24587/sqlite-jdbc.changes 2024-05-28 17:30:46.416297855 +0200
@@ -1,0 +2,23 @@
+Mon May 27 09:31:22 UTC 2024 - Anton Shvetz <shvetz.anton(a)gmail.com>
+
+- Update to v3.46.0.0
+ * Features
+ ~ sqlite
+ + upgrade to sqlite 3.46.0 (dfa37a1)
+ * Changes
+ ~ fix typos in comment (662fb09)
+ * Build
+ ~ deps
+ + bump org.jreleaser:jreleaser-maven-plugin (2ae0884)
+ + bump org.apache.maven.plugins:maven-gpg-plugin (88fa86f)
+ + bump org.apache.maven.plugins:maven-jar-plugin (7f3fd87)
+ + bump org.graalvm.sdk:nativeimage from 24.0.0 to 24.0.1
+ (d9fd689)
+ + bump com.tngtech.archunit:archunit-junit5 from 1.2.1 to
+ 1.3.0 (9e4a9df)
+ ~ deps-dev
+ + bump org.mockito:mockito-core from 5.11.0 to 5.12.0 (ce10957)
+ ~ unscoped
+ + fix failing multi-arch (db057a8)
+
+-------------------------------------------------------------------
Old:
----
sqlite-amalgamation-3450300.zip
sqlite-jdbc-3.45.3.0.tar.gz
New:
----
sqlite-amalgamation-3460000.zip
sqlite-jdbc-3.46.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sqlite-jdbc.spec ++++++
--- /var/tmp/diff_new_pack.S56UBo/_old 2024-05-28 17:30:48.244364703 +0200
+++ /var/tmp/diff_new_pack.S56UBo/_new 2024-05-28 17:30:48.268365581 +0200
@@ -17,8 +17,8 @@
%{!?make_build:%global make_build make %{?_smp_mflags}}
-%global version 3.45.3.0
-%global amalgamation_version 3450300
+%global version 3.46.0.0
+%global amalgamation_version 3460000
%global debug_package %{nil}
Name: sqlite-jdbc
Version: %{version}
++++++ sqlite-amalgamation-3450300.zip -> sqlite-amalgamation-3460000.zip ++++++
++++ 14445 lines of diff (skipped)
++++++ sqlite-jdbc-3.45.3.0.tar.gz -> sqlite-jdbc-3.46.0.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/sqlite-jdbc/sqlite-jdbc-3.45.3.0.tar.gz /work/SRC/openSUSE:Factory/.sqlite-jdbc.new.24587/sqlite-jdbc-3.46.0.0.tar.gz differ: char 14, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nginx-image for openSUSE:Factory checked in at 2024-05-28 17:29:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nginx-image (Old)
and /work/SRC/openSUSE:Factory/.nginx-image.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nginx-image"
Tue May 28 17:29:50 2024 rev:8 rq:1177291 version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/nginx-image/nginx-image.changes 2024-05-17 20:06:25.902133365 +0200
+++ /work/SRC/openSUSE:Factory/.nginx-image.new.24587/nginx-image.changes 2024-05-28 17:30:42.344148947 +0200
@@ -1,0 +2,5 @@
+Mon May 27 17:31:22 UTC 2024 - Alexandre Vicenzi <alexandre.vicenzi(a)suse.com>
+
+- Remove broken 10-listen-on-ipv6-by-default.sh and install gettext-runtime for envsubst
+
+-------------------------------------------------------------------
Old:
----
10-listen-on-ipv6-by-default.sh
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Dockerfile ++++++
--- /var/tmp/diff_new_pack.FdyI7v/_old 2024-05-28 17:30:43.088176154 +0200
+++ /var/tmp/diff_new_pack.FdyI7v/_new 2024-05-28 17:30:43.092176301 +0200
@@ -39,7 +39,7 @@
# endlabelprefix
-RUN set -euo pipefail; zypper -n in --no-recommends gawk nginx findutils; zypper -n clean; rm -rf /var/log/{lastlog,tallylog,zypper.log,zypp/history,YaST2}
+RUN set -euo pipefail; zypper -n in --no-recommends gawk nginx findutils gettext-runtime; zypper -n clean; rm -rf /var/log/{lastlog,tallylog,zypper.log,zypp/history,YaST2}
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package warewulf4 for openSUSE:Factory checked in at 2024-05-28 17:29:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/warewulf4 (Old)
and /work/SRC/openSUSE:Factory/.warewulf4.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "warewulf4"
Tue May 28 17:29:47 2024 rev:22 rq:1177285 version:4.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/warewulf4/warewulf4.changes 2024-05-16 17:15:56.409585494 +0200
+++ /work/SRC/openSUSE:Factory/.warewulf4.new.24587/warewulf4.changes 2024-05-28 17:30:41.264109453 +0200
@@ -1,0 +2,6 @@
+Mon May 27 17:21:53 UTC 2024 - Christian Goll <cgoll(a)suse.com>
+
+- added wwctl-configure-all-calls-SSH-keys.patch to fix
+ (bsc#1225402)
+
+-------------------------------------------------------------------
New:
----
wwctl-configure-all-calls-SSH-keys.patch
BETA DEBUG BEGIN:
New:
- added wwctl-configure-all-calls-SSH-keys.patch to fix
(bsc#1225402)
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ warewulf4.spec ++++++
--- /var/tmp/diff_new_pack.W3wCEE/_old 2024-05-28 17:30:42.052138269 +0200
+++ /var/tmp/diff_new_pack.W3wCEE/_new 2024-05-28 17:30:42.052138269 +0200
@@ -35,6 +35,7 @@
Source10: config-ww4.sh
Source11: adjust_overlays.sh
Source20: README.dnsmasq
+Patch1: wwctl-configure-all-calls-SSH-keys.patch
# no firewalld in sle12
%if 0%{?sle_version} >= 150000 || 0%{?suse_version} > 1500
++++++ wwctl-configure-all-calls-SSH-keys.patch ++++++
diff --git a/internal/app/wwctl/configure/main.go b/internal/app/wwctl/configure/main.go
index c663dc71..fad8c4af 100644
--- a/internal/app/wwctl/configure/main.go
+++ b/internal/app/wwctl/configure/main.go
@@ -4,6 +4,7 @@ import (
"os"
"github.com/spf13/cobra"
+ warewulfconf "github.com/warewulf/warewulf/internal/pkg/config"
"github.com/warewulf/warewulf/internal/pkg/configure"
"github.com/warewulf/warewulf/internal/pkg/wwlog"
)
@@ -23,7 +24,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
os.Exit(1)
}
- err = configure.SSH()
+ err = configure.SSH(warewulfconf.Get().SSH.KeyTypes...)
if err != nil {
wwlog.Error("%s", err)
os.Exit(1)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python3-pyside6 for openSUSE:Factory checked in at 2024-05-28 17:29:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pyside6 (Old)
and /work/SRC/openSUSE:Factory/.python3-pyside6.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pyside6"
Tue May 28 17:29:41 2024 rev:29 rq:1177283 version:6.7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pyside6/python3-pyside6.changes 2024-04-11 19:41:03.605554121 +0200
+++ /work/SRC/openSUSE:Factory/.python3-pyside6.new.24587/python3-pyside6.changes 2024-05-28 17:30:39.320038362 +0200
@@ -1,0 +2,10 @@
+Fri May 24 11:22:44 UTC 2024 - Christophe Marin <christophe(a)krop.fr>
+
+- Update to 6.7.1. Check the installed changes-6.7.1 file for the
+ full list of changes
+- Drop patch, merged upstream:
+ * 0001-Multimedia-Adapt-to-revert-of-QAudio-QtAudio-namespa.patch
+- Add upstream build fix:
+ * 0001-shiboken-add-missing-include.patch
+
+-------------------------------------------------------------------
Old:
----
0001-Multimedia-Adapt-to-revert-of-QAudio-QtAudio-namespa.patch
_service
pyside-setup-everywhere-src-6.7.0~git.obscpio
pyside-setup-everywhere-src.obsinfo
New:
----
0001-shiboken-add-missing-include.patch
pyside-setup-everywhere-src-6.7.1.tar.xz
BETA DEBUG BEGIN:
Old:- Drop patch, merged upstream:
* 0001-Multimedia-Adapt-to-revert-of-QAudio-QtAudio-namespa.patch
- Add upstream build fix:
BETA DEBUG END:
BETA DEBUG BEGIN:
New:- Add upstream build fix:
* 0001-shiboken-add-missing-include.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pyside6.spec ++++++
--- /var/tmp/diff_new_pack.JPQMW0/_old 2024-05-28 17:30:40.180069812 +0200
+++ /var/tmp/diff_new_pack.JPQMW0/_new 2024-05-28 17:30:40.184069958 +0200
@@ -43,17 +43,16 @@
%endif
Name: %{mypython}-%{pyside_flavor}
-Version: 6.7.0~git
+Version: 6.7.1
Release: 0
Summary: Python bindings for Qt 6
License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) AND GPL-2.0-only AND GPL-3.0-only WITH Qt-GPL-exception-1.0
URL: https://www.qt.io
-# Source: https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-%%{ver…
-Source0: %{tar_name}-%{version}.tar.xz
+Source: https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-%{vers…
# PATCH-FIX-OPENSUSE
Patch0: 0001-Always-link-to-python-libraries.patch
# PATCH-FIX-UPSTREAM
-Patch1: 0001-Multimedia-Adapt-to-revert-of-QAudio-QtAudio-namespa.patch
+Patch1: 0001-shiboken-add-missing-include.patch
# SECTION common_dependencies
BuildRequires: clang-devel
BuildRequires: %{mypython}-Sphinx
@@ -246,7 +245,7 @@
%define xvfb_command xvfb-run -s "-screen 0 1600x1200x16 -ac +extension GLX +render -noreset" \\
%define excluded_tests 1
-# Excluded tests (last update: 2024-04-08)
+# Excluded tests (last update: 2024-05-27)
# QtWebEngineWidgets_pyside-474-qtwebengineview fails with 'ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer'
# QtGui_qpen_test times out
# QtMultimediaWidgets_qmultimediawidgets aborts
@@ -257,9 +256,10 @@
# QtCore_qoperatingsystemversion_test fails after https://code.qt.io/cgit/qt/qtbase.git/commit/?id=1214edc
ctest_exclude_regex="QtWebEngineWidgets_pyside-474-qtwebengineview|QtGui_qpen_test|QtMultimediaWidgets_qmultimediawidgets|Qt3DExtras_qt3dextras_test|QtPositioning_positioning|pyside6-deploy_test_pyside6_deploy|QtWidgets_qwidget_test|pyside6-android-deploy_test_pyside6_android_deploy|qoperatingsystemversion"
-# Random failures on aarch64: registry_existence_test times out and QtWebEngineCore_web_engine_custom_scheme asserts
+# registry_existence_test randomly times out and QtWebEngineCore_web_engine_custom_scheme asserts
+# QtWebEngineCore_qwebenginecookiestore_test fails with a mesa error ('MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)')
%ifarch aarch64
-ctest_exclude_regex="$ctest_exclude_regex|registry_existence_test|QtWebEngineCore_web_engine_custom_scheme"
+ctest_exclude_regex="$ctest_exclude_regex|registry_existence_test|QtWebEngineCore_web_engine_custom_scheme|QtWebEngineCore_qwebenginecookiestore_test"
%endif
# python311-distro is unavailable in 15.5, skip registry_existence_test
%if 0%{?sle_version} == 150500
++++++ 0001-shiboken-add-missing-include.patch ++++++
From 6c3759e342efa8b9bcc46e1701eed3a12548db85 Mon Sep 17 00:00:00 2001
From: Samuli Piippo <samuli.piippo(a)qt.io>
Date: Mon, 27 May 2024 04:59:20 +0000
Subject: [PATCH] shiboken: add missing include
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Amend b829abcc7b2e9fcdb027e653a6a52cdb0706de11 and add missing include
to fix:
| sbkmodule.cpp:459:15: error: ‘Shiboken::Conversions’ has not been declared
| Shiboken::Conversions::clearNegativeLazyCache();
| ^~~~~~~~~~~
Pick-to: 6.7
Fixes: PYSIDE-2765
Task-number: PYSIDE-2749
Task-number: PYSIDE-2404
Change-Id: I13625848bff3b0e90a53649104d6e5d84553a984
Reviewed-by: Friedemann Kleint <Friedemann.Kleint(a)qt.io>
---
sources/shiboken6/libshiboken/sbkmodule.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/sources/shiboken6/libshiboken/sbkmodule.cpp b/sources/shiboken6/libshiboken/sbkmodule.cpp
index ccc7cc2cd..b7e6bf126 100644
--- a/sources/shiboken6/libshiboken/sbkmodule.cpp
+++ b/sources/shiboken6/libshiboken/sbkmodule.cpp
@@ -7,6 +7,7 @@
#include "bindingmanager.h"
#include "sbkstring.h"
#include "sbkcppstring.h"
+#include "sbkconverter_p.h"
#include <unordered_map>
#include <unordered_set>
--
2.45.1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libliftoff for openSUSE:Factory checked in at 2024-05-28 17:29:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libliftoff (Old)
and /work/SRC/openSUSE:Factory/.libliftoff.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libliftoff"
Tue May 28 17:29:39 2024 rev:4 rq:1177281 version:0.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libliftoff/libliftoff.changes 2023-03-07 16:50:31.153642952 +0100
+++ /work/SRC/openSUSE:Factory/.libliftoff.new.24587/libliftoff.changes 2024-05-28 17:30:37.875985557 +0200
@@ -1,0 +2,7 @@
+Tue May 28 07:58:02 UTC 2024 - llyyr <llyyr(a)yukari.in>
+
+- Update to 0.5.0:
+ * See full changelog at
+ https://gitlab.freedesktop.org/emersion/libliftoff/-/tags/v0.5.0
+
+-------------------------------------------------------------------
Old:
----
libliftoff-v0.4.1.tar.gz
New:
----
libliftoff-v0.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libliftoff.spec ++++++
--- /var/tmp/diff_new_pack.druoWL/_old 2024-05-28 17:30:38.956025051 +0200
+++ /var/tmp/diff_new_pack.druoWL/_new 2024-05-28 17:30:38.960025198 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libliftoff
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define libname libliftoff0
Name: libliftoff
-Version: 0.4.1
+Version: 0.5.0
Release: 0
Summary: KMS plane library
Group: Development/Libraries/C and C++
++++++ libliftoff-v0.4.1.tar.gz -> libliftoff-v0.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/.builds/alpine.yml new/libliftoff-v0.5.0/.builds/alpine.yml
--- old/libliftoff-v0.4.1/.builds/alpine.yml 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/.builds/alpine.yml 2024-05-28 00:22:40.000000000 +0200
@@ -1,4 +1,4 @@
-image: alpine/edge
+image: alpine/latest
packages:
- gcc
- clang
@@ -10,11 +10,13 @@
- https://gitlab.freedesktop.org/emersion/libliftoff.git
artifacts:
- coveragereport.tar.gz
+environment:
+ UBSAN_OPTIONS: halt_on_error=1
tasks:
- setup: |
cd libliftoff
- CC=gcc meson build-gcc/ --fatal-meson-warnings -Db_coverage=true
- CC=clang meson build-clang/ --fatal-meson-warnings -Db_sanitize=address,undefined -Db_lundef=false
+ CC=gcc meson setup build-gcc/ --fatal-meson-warnings -Db_coverage=true
+ CC=clang meson setup build-clang/ --fatal-meson-warnings -Db_sanitize=address,undefined -Db_lundef=false
- build-gcc: |
cd libliftoff
ninja -C build-gcc/
@@ -29,8 +31,6 @@
ninja -C build-clang/ test
- coverage: |
cd libliftoff
- echo "exclude-directories = test/" >>gcovr.cfg
- echo "exclude-directories = example/" >>gcovr.cfg
ninja -C build-gcc/ coverage-html
cd build-gcc/meson-logs/
tar -czf ~/coveragereport.tar.gz coveragereport
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/.builds/freebsd.yml new/libliftoff-v0.5.0/.builds/freebsd.yml
--- old/libliftoff-v0.4.1/.builds/freebsd.yml 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/.builds/freebsd.yml 2024-05-28 00:22:40.000000000 +0200
@@ -8,7 +8,7 @@
tasks:
- setup: |
cd libliftoff
- meson build/ --fatal-meson-warnings
+ meson setup build/ --fatal-meson-warnings
- build: |
cd libliftoff
ninja -C build/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/README.md new/libliftoff-v0.5.0/README.md
--- old/libliftoff-v0.4.1/README.md 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/README.md 2024-05-28 00:22:40.000000000 +0200
@@ -20,7 +20,7 @@
Depends on libdrm. Requires universal planes and atomic.
- meson build/
+ meson setup build/
ninja -C build/
## Usage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/alloc.c new/libliftoff-v0.5.0/alloc.c
--- old/libliftoff-v0.4.1/alloc.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/alloc.c 2024-05-28 00:22:40.000000000 +0200
@@ -1,9 +1,11 @@
+#define _POSIX_C_SOURCE 200112L
#include <assert.h>
#include <errno.h>
#include <inttypes.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "log.h"
#include "private.h"
@@ -76,6 +78,9 @@
struct liftoff_layer **best;
int best_score;
+ struct timespec started_at;
+ int64_t timeout_ns;
+
/* per-output */
bool has_composition_layer;
size_t non_composition_layers_len;
@@ -96,6 +101,29 @@
char log_prefix[64];
};
+static const int64_t NSEC_PER_SEC = 1000 * 1000 * 1000;
+
+static int64_t
+timespec_to_nsec(struct timespec ts)
+{
+ return (int64_t)ts.tv_sec * NSEC_PER_SEC + ts.tv_nsec;
+}
+
+static const int64_t DEFAULT_ALLOC_TIMEOUT_NSEC = 1000 * 1000; // 1ms
+
+static bool
+check_deadline(struct timespec start, int64_t timeout_ns)
+{
+ struct timespec now;
+
+ if (clock_gettime(CLOCK_MONOTONIC, &now) != 0) {
+ liftoff_log_errno(LIFTOFF_ERROR, "clock_gettime");
+ return false;
+ }
+
+ return timespec_to_nsec(now) - timeout_ns < timespec_to_nsec(start);
+}
+
static void
plane_step_init_next(struct alloc_step *step, struct alloc_step *prev,
struct liftoff_layer *layer)
@@ -126,7 +154,7 @@
zpos_prop = NULL;
if (layer != NULL) {
- zpos_prop = layer_get_property(layer, "zpos");
+ zpos_prop = layer_get_core_property(layer, LIFTOFF_PROP_ZPOS);
}
if (zpos_prop != NULL && plane->type != DRM_PLANE_TYPE_PRIMARY) {
step->last_layer_zpos = zpos_prop->value;
@@ -176,7 +204,7 @@
struct liftoff_layer *other_layer;
struct liftoff_layer_property *zpos_prop, *other_zpos_prop;
- zpos_prop = layer_get_property(layer, "zpos");
+ zpos_prop = layer_get_core_property(layer, LIFTOFF_PROP_ZPOS);
if (zpos_prop == NULL) {
return false;
}
@@ -186,7 +214,8 @@
continue;
}
- other_zpos_prop = layer_get_property(other_layer, "zpos");
+ other_zpos_prop = layer_get_core_property(other_layer,
+ LIFTOFF_PROP_ZPOS);
if (other_zpos_prop == NULL) {
continue;
}
@@ -209,7 +238,7 @@
struct liftoff_layer *other_layer;
struct liftoff_layer_property *zpos_prop, *other_zpos_prop;
- zpos_prop = layer_get_property(layer, "zpos");
+ zpos_prop = layer_get_core_property(layer, LIFTOFF_PROP_ZPOS);
if (zpos_prop == NULL) {
return false;
}
@@ -229,7 +258,8 @@
continue;
}
- other_zpos_prop = layer_get_property(other_layer, "zpos");
+ other_zpos_prop = layer_get_core_property(other_layer,
+ LIFTOFF_PROP_ZPOS);
if (other_zpos_prop == NULL) {
continue;
}
@@ -292,7 +322,7 @@
return false;
}
- zpos_prop = layer_get_property(layer, "zpos");
+ zpos_prop = layer_get_core_property(layer, LIFTOFF_PROP_ZPOS);
if (zpos_prop != NULL) {
if ((int)zpos_prop->value > step->last_layer_zpos &&
has_allocated_layer_over(output, step, layer)) {
@@ -387,6 +417,31 @@
return true;
}
+static bool
+check_plane_output_compatible(struct liftoff_plane *plane, struct liftoff_output *output)
+{
+ return (plane->possible_crtcs & (1 << output->crtc_index)) != 0;
+}
+
+static int
+count_remaining_compatible_planes(struct liftoff_output *output,
+ struct alloc_step *step)
+{
+ struct liftoff_list *link;
+ struct liftoff_plane *plane;
+ int remaining = 0;
+
+ for (link = step->plane_link; link != &output->device->planes; link = link->next) {
+ plane = liftoff_container_of(link, plane, link);
+ if (plane->layer == NULL &&
+ check_plane_output_compatible(plane, output)) {
+ remaining++;
+ }
+ }
+
+ return remaining;
+}
+
static int
output_choose_layers(struct liftoff_output *output, struct alloc_result *result,
struct alloc_step *step)
@@ -395,7 +450,7 @@
struct liftoff_plane *plane;
struct liftoff_layer *layer;
int cursor, ret;
- size_t remaining_planes;
+ int remaining_planes;
struct alloc_step next_step = {0};
device = output->device;
@@ -416,21 +471,16 @@
plane = liftoff_container_of(step->plane_link, plane, link);
- remaining_planes = result->planes_len - step->plane_idx;
- if (result->best_score >= step->score + (int)remaining_planes) {
+ remaining_planes = count_remaining_compatible_planes(output, step);
+ if (result->best_score >= step->score + remaining_planes) {
/* Even if we find a layer for all remaining planes, we won't
* find a better allocation. Give up. */
- /* TODO: change remaining_planes to only count those whose
- * possible CRTC match and which aren't allocated */
return 0;
}
cursor = drmModeAtomicGetCursor(result->req);
- if (plane->layer != NULL) {
- goto skip;
- }
- if ((plane->possible_crtcs & (1 << output->crtc_index)) == 0) {
+ if (plane->layer != NULL || !check_plane_output_compatible(plane, output)) {
goto skip;
}
@@ -449,6 +499,12 @@
continue;
}
+ if (!check_deadline(result->started_at, result->timeout_ns)) {
+ liftoff_log(LIFTOFF_DEBUG, "%s Deadline exceeded",
+ step->log_prefix);
+ break;
+ }
+
/* Try to use this layer for the current plane */
ret = plane_apply(plane, layer, result->req);
if (ret == -EINVAL) {
@@ -542,10 +598,37 @@
}
static bool
-layer_needs_realloc(struct liftoff_layer *layer)
+layer_intersection_changed(struct liftoff_layer *this,
+ struct liftoff_output *output)
+{
+ struct liftoff_layer *other;
+ struct liftoff_rect this_cur, this_prev, other_cur, other_prev;
+
+ layer_get_rect(this, &this_cur);
+ layer_get_prev_rect(this, &this_prev);
+ liftoff_list_for_each(other, &output->layers, link) {
+ if (this == other) {
+ continue;
+ }
+
+ layer_get_rect(other, &other_cur);
+ layer_get_prev_rect(other, &other_prev);
+
+ if (rect_intersects(&this_cur, &other_cur) !=
+ rect_intersects(&this_prev, &other_prev)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+static bool
+layer_needs_realloc(struct liftoff_layer *layer, struct liftoff_output *output)
{
- size_t i;
struct liftoff_layer_property *prop;
+ bool check_crtc_intersect = false;
+ size_t i;
if (layer->changed) {
liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
@@ -563,7 +646,7 @@
* If FB_ID changes from non-zero to non-zero and the FB
* attributes didn't change, we can try to re-use the previous
* allocation. */
- if (strcmp(prop->name, "FB_ID") == 0) {
+ if (prop->core_index == LIFTOFF_PROP_FB_ID) {
if (prop->value == 0 && prop->prev_value == 0) {
continue;
}
@@ -593,7 +676,7 @@
/* If the layer was or becomes completely transparent or
* completely opaque, we might be able to find a better
* allocation. Otherwise, we can keep the current one. */
- if (strcmp(prop->name, "alpha") == 0) {
+ if (prop->core_index == LIFTOFF_PROP_ALPHA) {
if (prop->value == 0 || prop->prev_value == 0 ||
prop->value == 0xFFFF || prop->prev_value == 0xFFFF) {
liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
@@ -610,16 +693,123 @@
continue;
}
- /* TODO: if CRTC_{X,Y,W,H} changed but intersection with other
- * layers hasn't changed, don't realloc */
+ /* If CRTC_* changed, check for intersection later */
+ if (strcmp(prop->name, "CRTC_X") == 0 ||
+ strcmp(prop->name, "CRTC_Y") == 0 ||
+ strcmp(prop->name, "CRTC_W") == 0 ||
+ strcmp(prop->name, "CRTC_H") == 0) {
+ check_crtc_intersect = true;
+ continue;
+ }
+
liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
"property \"%s\" changed", prop->name);
return true;
}
+ if (check_crtc_intersect &&
+ layer_intersection_changed(layer, output)) {
+ liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
+ "intersection with other layer(s) changed");
+ return true;
+ }
+
return false;
}
+static bool
+layer_is_higher_priority(struct liftoff_layer *this, struct liftoff_layer *other)
+{
+ struct liftoff_layer_property *this_zpos, *other_zpos;
+ bool this_visible, other_visible, intersects;
+
+ // The composition layer should be highest priority.
+ if (this->output->composition_layer == this) {
+ return true;
+ } else if (this->output->composition_layer == other) {
+ return false;
+ }
+
+ // Invisible layers are given lowest priority. Pass-thru if both have
+ // same visibility
+ this_visible = layer_is_visible(this);
+ other_visible = layer_is_visible(other);
+ if (this_visible != other_visible) {
+ return this_visible;
+ }
+
+ // A layer's overall priority is determined by a combination of it's
+ // current_priority, it's zpos, and whether it intersects with others.
+ //
+ // Consider two layers. If they do not intersect, the layer with higher
+ // priority is given overall priority. However if both layers have
+ // identical priority, then the layer with higher zpos is given overall
+ // priority.
+ //
+ // If the layers intersect, their zpos determines the overall priority.
+ // If their zpos are identical, then simply fallback to looking at
+ // current_priority. Otherwise, the layer with higher zpos is given
+ // overall priority, since the top layer needs to be offloaded in order
+ // to offload the bottom layer.
+
+ this_zpos = layer_get_core_property(this, LIFTOFF_PROP_ZPOS);
+ other_zpos = layer_get_core_property(other, LIFTOFF_PROP_ZPOS);
+ intersects = layer_intersects(this, other);
+
+ if (this_zpos != NULL && other_zpos != NULL) {
+ if (intersects) {
+ return this_zpos->value == other_zpos->value ?
+ this->current_priority > other->current_priority :
+ this_zpos->value > other_zpos->value;
+ } else {
+ return this->current_priority == other->current_priority ?
+ this_zpos->value > other_zpos->value :
+ this->current_priority > other->current_priority;
+ }
+ } else if (this_zpos == NULL && other_zpos == NULL) {
+ return this->current_priority > other->current_priority;
+ } else {
+ // Either this or other zpos is null
+ return this_zpos != NULL;
+ }
+}
+
+static bool
+update_layers_order(struct liftoff_output *output)
+{
+ struct liftoff_list *search, *max, *cur, *head;
+ struct liftoff_layer *this_layer, *other_layer;
+ bool order_changed = false;
+
+ head = &output->layers;
+ cur = head;
+
+ // Run a insertion sort to order layers by priority.
+ while (cur->next != head) {
+ cur = cur->next;
+
+ max = cur;
+ search = cur;
+ while (search->next != head) {
+ search = search->next;
+ this_layer = liftoff_container_of(search, this_layer, link);
+ other_layer = liftoff_container_of(max, other_layer, link);
+ if (layer_is_higher_priority(this_layer, other_layer)) {
+ max = search;
+ }
+ }
+
+ if (cur != max) {
+ liftoff_list_swap(cur, max);
+ // max is now where iterator cur was, relocate to continue
+ cur = max;
+ order_changed = true;
+ }
+ }
+
+ return order_changed;
+}
+
static int
reuse_previous_alloc(struct liftoff_output *output, drmModeAtomicReq *req,
uint32_t flags)
@@ -627,9 +817,12 @@
struct liftoff_device *device;
struct liftoff_layer *layer;
int cursor, ret;
+ bool layer_order_changed;
device = output->device;
+ layer_order_changed = update_layers_order(output);
+
if (output->layers_changed) {
liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
"a layer has been added or removed");
@@ -637,11 +830,17 @@
}
liftoff_list_for_each(layer, &output->layers, link) {
- if (layer_needs_realloc(layer)) {
+ if (layer_needs_realloc(layer, output)) {
return -EINVAL;
}
}
+ if (layer_order_changed) {
+ liftoff_log(LIFTOFF_DEBUG, "Cannot re-use previous allocation: "
+ "layer priority order changed.");
+ return -EINVAL;
+ }
+
cursor = drmModeAtomicGetCursor(req);
ret = apply_current(device, req);
@@ -698,7 +897,8 @@
* re-created a completely different one which happens to have the same
* FB ID. */
liftoff_list_for_each(layer, &output->layers, link) {
- memset(&layer->fb_info, 0, sizeof(layer->fb_info));
+ layer->fb_info = (drmModeFB2){0};
+
layer_cache_fb_info(layer);
/* TODO: propagate error? */
}
@@ -709,8 +909,8 @@
{
if (output->alloc_reused_counter == 0) {
liftoff_log(LIFTOFF_DEBUG,
- "Reusing previous plane allocation on output %p",
- (void *)output);
+ "Reusing previous plane allocation on output %"PRIu32,
+ output->crtc_id);
}
output->alloc_reused_counter++;
}
@@ -718,14 +918,14 @@
static void
log_no_reuse(struct liftoff_output *output)
{
- liftoff_log(LIFTOFF_DEBUG, "Computing plane allocation on output %p",
- (void *)output);
+ liftoff_log(LIFTOFF_DEBUG, "Computing plane allocation on output %"PRIu32,
+ output->crtc_id);
if (output->alloc_reused_counter != 0) {
liftoff_log(LIFTOFF_DEBUG,
"Stopped reusing previous plane allocation on "
- "output %p (had reused it %d times)",
- (void *)output, output->alloc_reused_counter);
+ "output %"PRIu32" (had reused it %d times)",
+ output->crtc_id, output->alloc_reused_counter);
output->alloc_reused_counter = 0;
}
}
@@ -749,15 +949,22 @@
int
liftoff_output_apply(struct liftoff_output *output, drmModeAtomicReq *req,
- uint32_t flags)
+ uint32_t flags,
+ const struct liftoff_output_apply_options *options)
{
struct liftoff_device *device;
struct liftoff_plane *plane;
struct liftoff_layer *layer;
struct alloc_result result = {0};
struct alloc_step step = {0};
+ const struct liftoff_output_apply_options default_options = {0};
size_t i, candidate_planes;
int ret;
+ bool found_layer;
+
+ if (options == NULL) {
+ options = &default_options;
+ }
device = output->device;
@@ -767,6 +974,7 @@
ret = reuse_previous_alloc(output, req, flags);
if (ret == 0) {
log_reuse(output);
+ mark_layers_clean(output);
return 0;
}
log_no_reuse(output);
@@ -808,20 +1016,30 @@
result.flags = flags;
result.planes_len = liftoff_list_length(&device->planes);
- step.alloc = malloc(result.planes_len * sizeof(*step.alloc));
- result.best = malloc(result.planes_len * sizeof(*result.best));
+ step.alloc = malloc(result.planes_len * sizeof(step.alloc[0]));
+ result.best = malloc(result.planes_len * sizeof(result.best[0]));
if (step.alloc == NULL || result.best == NULL) {
liftoff_log_errno(LIFTOFF_ERROR, "malloc");
return -ENOMEM;
}
+ if (clock_gettime(CLOCK_MONOTONIC, &result.started_at) != 0) {
+ liftoff_log_errno(LIFTOFF_ERROR, "clock_gettime");
+ return -errno;
+ }
+
+ result.timeout_ns = options->timeout_ns;
+ if (result.timeout_ns == 0) {
+ result.timeout_ns = DEFAULT_ALLOC_TIMEOUT_NSEC;
+ }
+
/* For each plane, try to find a layer. Don't do it the other
* way around (ie. for each layer, try to find a plane) because
* some drivers want user-space to enable the primary plane
* before any other plane. */
result.best_score = -1;
- memset(result.best, 0, result.planes_len * sizeof(*result.best));
+ memset(result.best, 0, result.planes_len * sizeof(result.best[0]));
result.has_composition_layer = output->composition_layer != NULL;
result.non_composition_layers_len =
non_composition_layers_length(output);
@@ -838,12 +1056,14 @@
}
liftoff_log(LIFTOFF_DEBUG,
- "Found plane allocation for output %p (score: %d, candidate planes: %zu, tests: %d):",
- (void *)output, result.best_score, candidate_planes,
+ "Found plane allocation for output %"PRIu32" "
+ "(score: %d, candidate planes: %zu, tests: %d):",
+ output->crtc_id, result.best_score, candidate_planes,
device->test_commit_counter);
/* Apply the best allocation */
i = 0;
+ found_layer = false;
liftoff_list_for_each(plane, &device->planes, link) {
layer = result.best[i];
i++;
@@ -858,8 +1078,10 @@
assert(layer->plane == NULL);
plane->layer = layer;
layer->plane = plane;
+
+ found_layer = true;
}
- if (i == 0) {
+ if (!found_layer) {
liftoff_log(LIFTOFF_DEBUG, " (No layer has a plane)");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/device.c new/libliftoff-v0.5.0/device.c
--- old/libliftoff-v0.4.1/device.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/device.c 2024-05-28 00:22:40.000000000 +0200
@@ -122,3 +122,36 @@
return ret;
}
+
+ssize_t
+core_property_index(const char *name)
+{
+ if (strcmp(name, "FB_ID") == 0) {
+ return LIFTOFF_PROP_FB_ID;
+ } else if (strcmp(name, "CRTC_ID") == 0) {
+ return LIFTOFF_PROP_CRTC_ID;
+ } else if (strcmp(name, "CRTC_X") == 0) {
+ return LIFTOFF_PROP_CRTC_X;
+ } else if (strcmp(name, "CRTC_Y") == 0) {
+ return LIFTOFF_PROP_CRTC_Y;
+ } else if (strcmp(name, "CRTC_W") == 0) {
+ return LIFTOFF_PROP_CRTC_W;
+ } else if (strcmp(name, "CRTC_H") == 0) {
+ return LIFTOFF_PROP_CRTC_H;
+ } else if (strcmp(name, "SRC_X") == 0) {
+ return LIFTOFF_PROP_SRC_X;
+ } else if (strcmp(name, "SRC_Y") == 0) {
+ return LIFTOFF_PROP_SRC_Y;
+ } else if (strcmp(name, "SRC_W") == 0) {
+ return LIFTOFF_PROP_SRC_W;
+ } else if (strcmp(name, "SRC_H") == 0) {
+ return LIFTOFF_PROP_SRC_H;
+ } else if (strcmp(name, "zpos") == 0) {
+ return LIFTOFF_PROP_ZPOS;
+ } else if (strcmp(name, "alpha") == 0) {
+ return LIFTOFF_PROP_ALPHA;
+ } else if (strcmp(name, "rotation") == 0) {
+ return LIFTOFF_PROP_ROTATION;
+ }
+ return -1;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/example/compositor.c new/libliftoff-v0.5.0/example/compositor.c
--- old/libliftoff-v0.4.1/example/compositor.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/example/compositor.c 2024-05-28 00:22:40.000000000 +0200
@@ -195,7 +195,7 @@
flags = DRM_MODE_ATOMIC_NONBLOCK;
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, flags);
+ ret = liftoff_output_apply(output, req, flags, NULL);
if (ret != 0) {
perror("liftoff_output_apply");
return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/example/dynamic.c new/libliftoff-v0.5.0/example/dynamic.c
--- old/libliftoff-v0.4.1/example/dynamic.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/example/dynamic.c 2024-05-28 00:22:40.000000000 +0200
@@ -114,7 +114,7 @@
flags = DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT;
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, flags);
+ ret = liftoff_output_apply(output, req, flags, NULL);
if (ret != 0) {
perror("liftoff_output_apply");
return false;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/example/multi-output.c new/libliftoff-v0.5.0/example/multi-output.c
--- old/libliftoff-v0.4.1/example/multi-output.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/example/multi-output.c 2024-05-28 00:22:40.000000000 +0200
@@ -157,7 +157,7 @@
flags = DRM_MODE_ATOMIC_NONBLOCK;
req = drmModeAtomicAlloc();
for (i = 0; i < outputs_len; i++) {
- ret = liftoff_output_apply(outputs[i], req, flags);
+ ret = liftoff_output_apply(outputs[i], req, flags, NULL);
if (ret != 0) {
perror("liftoff_output_apply");
return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/example/simple.c new/libliftoff-v0.5.0/example/simple.c
--- old/libliftoff-v0.4.1/example/simple.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/example/simple.c 2024-05-28 00:22:40.000000000 +0200
@@ -130,7 +130,7 @@
flags = DRM_MODE_ATOMIC_NONBLOCK;
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, flags);
+ ret = liftoff_output_apply(output, req, flags, NULL);
if (ret != 0) {
perror("liftoff_output_apply");
return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/include/libliftoff.h new/libliftoff-v0.5.0/include/libliftoff.h
--- old/libliftoff-v0.4.1/include/libliftoff.h 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/include/libliftoff.h 2024-05-28 00:22:40.000000000 +0200
@@ -63,18 +63,28 @@
liftoff_plane_get_id(struct liftoff_plane *plane);
/**
+ * Options for liftoff_output_apply().
+ */
+struct liftoff_output_apply_options {
+ /* Timeout in nanoseconds. If zero, a default timeout is used. */
+ int64_t timeout_ns;
+};
+
+/**
* Build a layer to plane mapping and append the plane configuration to req.
*
* Callers are expected to commit req afterwards and can figure out which
* layers need composition via liftoff_layer_needs_composition().
*
- * flags is the atomic commit flags the caller intends to use.
+ * flags is the atomic commit flags the caller intends to use. If options is
+ * NULL, defaults are used.
*
* Zero is returned on success, negative errno on error.
*/
int
liftoff_output_apply(struct liftoff_output *output, drmModeAtomicReq *req,
- uint32_t flags);
+ uint32_t flags,
+ const struct liftoff_output_apply_options *options);
/**
* Make the device manage a CRTC's planes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/include/list.h new/libliftoff-v0.5.0/include/list.h
--- old/libliftoff-v0.4.1/include/list.h 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/include/list.h 2024-05-28 00:22:40.000000000 +0200
@@ -18,6 +18,9 @@
void
liftoff_list_remove(struct liftoff_list *elm);
+void
+liftoff_list_swap(struct liftoff_list *this, struct liftoff_list *other);
+
size_t
liftoff_list_length(const struct liftoff_list *list);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/include/private.h new/libliftoff-v0.5.0/include/private.h
--- old/libliftoff-v0.4.1/include/private.h 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/include/private.h 2024-05-28 00:22:40.000000000 +0200
@@ -2,6 +2,7 @@
#define PRIVATE_H
#include <libliftoff.h>
+#include <sys/types.h>
#include "list.h"
#include "log.h"
@@ -9,6 +10,28 @@
* given number of page-flips */
#define LIFTOFF_PRIORITY_PERIOD 60
+/**
+ * List of well-known KMS properties.
+ *
+ * Keep core_property_index() in sync.
+ */
+enum liftoff_core_property {
+ LIFTOFF_PROP_FB_ID,
+ LIFTOFF_PROP_CRTC_ID,
+ LIFTOFF_PROP_CRTC_X,
+ LIFTOFF_PROP_CRTC_Y,
+ LIFTOFF_PROP_CRTC_W,
+ LIFTOFF_PROP_CRTC_H,
+ LIFTOFF_PROP_SRC_X,
+ LIFTOFF_PROP_SRC_Y,
+ LIFTOFF_PROP_SRC_W,
+ LIFTOFF_PROP_SRC_H,
+ LIFTOFF_PROP_ZPOS,
+ LIFTOFF_PROP_ALPHA,
+ LIFTOFF_PROP_ROTATION,
+ LIFTOFF_PROP_LAST, /* keep last */
+};
+
struct liftoff_device {
int drm_fd;
@@ -45,6 +68,7 @@
struct liftoff_layer_property *props;
size_t props_len;
+ ssize_t core_props[LIFTOFF_PROP_LAST]; /* indices into the props array */
bool force_composition; /* FB needs to be composited */
@@ -62,6 +86,7 @@
struct liftoff_layer_property {
char name[DRM_PROP_NAME_LEN];
uint64_t value, prev_value;
+ ssize_t core_index;
};
struct liftoff_plane {
@@ -69,12 +94,12 @@
uint32_t possible_crtcs;
uint32_t type;
int zpos; /* greater values mean closer to the eye */
- /* TODO: formats */
struct liftoff_list link; /* liftoff_device.planes */
drmModePropertyRes **props;
size_t props_len;
drmModePropertyBlobRes *in_formats_blob;
+ const drmModePropertyRes *core_props[LIFTOFF_PROP_LAST];
struct liftoff_layer *layer;
};
@@ -91,9 +116,18 @@
struct liftoff_layer_property *
layer_get_property(struct liftoff_layer *layer, const char *name);
+struct liftoff_layer_property *
+layer_get_core_property(struct liftoff_layer *layer, enum liftoff_core_property prop);
+
void
layer_get_rect(struct liftoff_layer *layer, struct liftoff_rect *rect);
+void
+layer_get_prev_rect(struct liftoff_layer *layer, struct liftoff_rect *rect);
+
+bool
+rect_intersects(struct liftoff_rect *a, struct liftoff_rect *b);
+
bool
layer_intersects(struct liftoff_layer *a, struct liftoff_layer *b);
@@ -129,4 +163,7 @@
void
output_log_layers(struct liftoff_output *output);
+ssize_t
+core_property_index(const char *name);
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/layer.c new/libliftoff-v0.5.0/layer.c
--- old/libliftoff-v0.4.1/layer.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/layer.c 2024-05-28 00:22:40.000000000 +0200
@@ -10,6 +10,7 @@
liftoff_layer_create(struct liftoff_output *output)
{
struct liftoff_layer *layer;
+ size_t i;
layer = calloc(1, sizeof(*layer));
if (layer == NULL) {
@@ -17,13 +18,16 @@
return NULL;
}
layer->output = output;
- layer->candidate_planes = calloc(sizeof(layer->candidate_planes[0]),
- output->device->planes_cap);
+ layer->candidate_planes = calloc(output->device->planes_cap,
+ sizeof(layer->candidate_planes[0]));
if (layer->candidate_planes == NULL) {
liftoff_log_errno(LIFTOFF_ERROR, "calloc");
free(layer);
return NULL;
}
+ for (i = 0; i < LIFTOFF_PROP_LAST; i++) {
+ layer->core_props[i] = -1;
+ }
liftoff_list_insert(output->layers.prev, &layer->link);
output->layers_changed = true;
return layer;
@@ -50,10 +54,28 @@
}
struct liftoff_layer_property *
+layer_get_core_property(struct liftoff_layer *layer, enum liftoff_core_property prop)
+{
+ ssize_t i;
+
+ i = layer->core_props[prop];
+ if (i < 0) {
+ return NULL;
+ }
+ return &layer->props[i];
+}
+
+struct liftoff_layer_property *
layer_get_property(struct liftoff_layer *layer, const char *name)
{
+ ssize_t core_prop_idx;
size_t i;
+ core_prop_idx = core_property_index(name);
+ if (core_prop_idx >= 0) {
+ return layer_get_core_property(layer, core_prop_idx);
+ }
+
for (i = 0; i < layer->props_len; i++) {
if (strcmp(layer->props[i].name, name) == 0) {
return &layer->props[i];
@@ -68,6 +90,7 @@
{
struct liftoff_layer_property *props;
struct liftoff_layer_property *prop;
+ size_t i;
if (strcmp(name, "CRTC_ID") == 0) {
liftoff_log(LIFTOFF_ERROR,
@@ -77,8 +100,8 @@
prop = layer_get_property(layer, name);
if (prop == NULL) {
- props = realloc(layer->props, (layer->props_len + 1)
- * sizeof(struct liftoff_layer_property));
+ props = realloc(layer->props,
+ (layer->props_len + 1) * sizeof(props[0]));
if (props == NULL) {
liftoff_log_errno(LIFTOFF_ERROR, "realloc");
return -ENOMEM;
@@ -86,16 +109,22 @@
layer->props = props;
layer->props_len++;
- prop = &layer->props[layer->props_len - 1];
- memset(prop, 0, sizeof(*prop));
+ i = layer->props_len - 1;
+ prop = &layer->props[i];
+ *prop = (struct liftoff_layer_property){0};
strncpy(prop->name, name, sizeof(prop->name) - 1);
+ prop->core_index = core_property_index(name);
layer->changed = true;
+
+ if (prop->core_index >= 0) {
+ layer->core_props[prop->core_index] = (ssize_t)i;
+ }
}
prop->value = value;
- if (strcmp(name, "FB_ID") == 0 && layer->force_composition) {
+ if (prop->core_index == LIFTOFF_PROP_FB_ID && layer->force_composition) {
layer->force_composition = false;
layer->changed = true;
}
@@ -113,11 +142,18 @@
return;
}
+ if (prop->core_index >= 0) {
+ layer->core_props[prop->core_index] = -1;
+ }
+
last = &layer->props[layer->props_len - 1];
if (prop != last) {
*prop = *last;
+ if (last->core_index >= 0) {
+ layer->core_props[last->core_index] = prop - layer->props;
+ }
}
- memset(last, 0, sizeof(*last));
+ *last = (struct liftoff_layer_property){0};
layer->props_len--;
layer->changed = true;
@@ -156,10 +192,10 @@
{
struct liftoff_layer_property *x_prop, *y_prop, *w_prop, *h_prop;
- x_prop = layer_get_property(layer, "CRTC_X");
- y_prop = layer_get_property(layer, "CRTC_Y");
- w_prop = layer_get_property(layer, "CRTC_W");
- h_prop = layer_get_property(layer, "CRTC_H");
+ x_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_X);
+ y_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_Y);
+ w_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_W);
+ h_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_H);
rect->x = x_prop != NULL ? x_prop->value : 0;
rect->y = y_prop != NULL ? y_prop->value : 0;
@@ -167,6 +203,29 @@
rect->height = h_prop != NULL ? h_prop->value : 0;
}
+void
+layer_get_prev_rect(struct liftoff_layer *layer, struct liftoff_rect *rect)
+{
+ struct liftoff_layer_property *x_prop, *y_prop, *w_prop, *h_prop;
+
+ x_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_X);
+ y_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_Y);
+ w_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_W);
+ h_prop = layer_get_core_property(layer, LIFTOFF_PROP_CRTC_H);
+
+ rect->x = x_prop != NULL ? x_prop->prev_value : 0;
+ rect->y = y_prop != NULL ? y_prop->prev_value : 0;
+ rect->width = w_prop != NULL ? w_prop->prev_value : 0;
+ rect->height = h_prop != NULL ? h_prop -> prev_value : 0;
+}
+
+bool
+rect_intersects(struct liftoff_rect *ra, struct liftoff_rect *rb)
+{
+ return ra->x < rb->x + rb->width && ra->y < rb->y + rb->height &&
+ ra->x + ra->width > rb->x && ra->y + ra->height > rb->y;
+}
+
bool
layer_intersects(struct liftoff_layer *a, struct liftoff_layer *b)
{
@@ -179,8 +238,7 @@
layer_get_rect(a, &ra);
layer_get_rect(b, &rb);
- return ra.x < rb.x + rb.width && ra.y < rb.y + rb.height &&
- ra.x + ra.width > rb.x && ra.y + ra.height > rb.y;
+ return rect_intersects(&ra, &rb);
}
void
@@ -214,7 +272,7 @@
struct liftoff_layer_property *prop;
/* TODO: also bump priority when updating other properties */
- prop = layer_get_property(layer, "FB_ID");
+ prop = layer_get_core_property(layer, LIFTOFF_PROP_FB_ID);
if (prop != NULL && prop->prev_value != prop->value) {
layer->pending_priority++;
}
@@ -231,7 +289,7 @@
{
struct liftoff_layer_property *fb_id_prop;
- fb_id_prop = layer_get_property(layer, "FB_ID");
+ fb_id_prop = layer_get_core_property(layer, LIFTOFF_PROP_FB_ID);
return fb_id_prop != NULL && fb_id_prop->value != 0;
}
@@ -240,7 +298,7 @@
{
struct liftoff_layer_property *alpha_prop;
- alpha_prop = layer_get_property(layer, "alpha");
+ alpha_prop = layer_get_core_property(layer, LIFTOFF_PROP_ALPHA);
if (alpha_prop != NULL && alpha_prop->value == 0) {
return false; /* fully transparent */
}
@@ -260,9 +318,9 @@
size_t i, j, num_planes;
int ret;
- fb_id_prop = layer_get_property(layer, "FB_ID");
+ fb_id_prop = layer_get_core_property(layer, LIFTOFF_PROP_FB_ID);
if (fb_id_prop == NULL || fb_id_prop->value == 0) {
- memset(&layer->fb_info, 0, sizeof(layer->fb_info));
+ layer->fb_info = (drmModeFB2){0};
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/list.c new/libliftoff-v0.5.0/list.c
--- old/libliftoff-v0.4.1/list.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/list.c 2024-05-28 00:22:40.000000000 +0200
@@ -25,6 +25,19 @@
elm->prev = NULL;
}
+void
+liftoff_list_swap(struct liftoff_list *this, struct liftoff_list *other)
+{
+ struct liftoff_list tmp;
+
+ liftoff_list_insert(other, &tmp);
+ liftoff_list_remove(other);
+ liftoff_list_insert(this, other);
+ liftoff_list_remove(this);
+ liftoff_list_insert(&tmp, this);
+ liftoff_list_remove(&tmp);
+}
+
size_t
liftoff_list_length(const struct liftoff_list *list)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/meson.build new/libliftoff-v0.5.0/meson.build
--- old/libliftoff-v0.4.1/meson.build 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/meson.build 2024-05-28 00:22:40.000000000 +0200
@@ -1,7 +1,7 @@
project(
'libliftoff',
'c',
- version: '0.4.1',
+ version: '0.5.0',
license: 'MIT',
meson_version: '>=0.52.0',
default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/output.c new/libliftoff-v0.5.0/output.c
--- old/libliftoff-v0.4.1/output.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/output.c 2024-05-28 00:22:40.000000000 +0200
@@ -104,6 +104,9 @@
" (composition layer)" : "");
}
+ liftoff_log(LIFTOFF_DEBUG, " Priority = %"PRIi32,
+ layer->current_priority);
+
for (i = 0; i < layer->props_len; i++) {
char *name = layer->props[i].name;
uint64_t value = layer->props[i].value;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/plane.c new/libliftoff-v0.5.0/plane.c
--- old/libliftoff-v0.4.1/plane.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/plane.c 2024-05-28 00:22:40.000000000 +0200
@@ -43,6 +43,7 @@
drmModePropertyRes *prop;
uint64_t value;
bool has_type = false, has_zpos = false;
+ ssize_t core_prop_idx;
liftoff_list_for_each(plane, &device->planes, link) {
if (plane->id == id) {
@@ -105,6 +106,11 @@
return NULL;
}
}
+
+ core_prop_idx = core_property_index(prop->name);
+ if (core_prop_idx >= 0) {
+ plane->core_props[core_prop_idx] = prop;
+ }
}
drmModeFreeObjectProperties(drm_props);
@@ -173,12 +179,16 @@
}
static const drmModePropertyRes *
-plane_get_property(struct liftoff_plane *plane, const char *name)
+plane_get_property(struct liftoff_plane *plane,
+ const struct liftoff_layer_property *layer_prop)
{
size_t i;
+ if (layer_prop->core_index >= 0)
+ return plane->core_props[layer_prop->core_index];
+
for (i = 0; i < plane->props_len; i++) {
- if (strcmp(plane->props[i]->name, name) == 0) {
+ if (strcmp(plane->props[i]->name, layer_prop->name) == 0) {
return plane->props[i];
}
}
@@ -276,16 +286,16 @@
}
static int
-set_plane_prop_str(struct liftoff_plane *plane, drmModeAtomicReq *req,
- const char *name, uint64_t value)
+set_plane_core_prop(struct liftoff_plane *plane, drmModeAtomicReq *req,
+ enum liftoff_core_property core_prop, uint64_t value)
{
const drmModePropertyRes *prop;
- prop = plane_get_property(plane, name);
+ prop = plane->core_props[core_prop];
if (prop == NULL) {
liftoff_log(LIFTOFF_DEBUG,
- "plane %"PRIu32" is missing the %s property",
- plane->id, name);
+ "plane %"PRIu32" is missing core property %d",
+ plane->id, core_prop);
return -EINVAL;
}
@@ -355,33 +365,34 @@
cursor = drmModeAtomicGetCursor(req);
if (layer == NULL) {
- ret = set_plane_prop_str(plane, req, "FB_ID", 0);
+ ret = set_plane_core_prop(plane, req, LIFTOFF_PROP_FB_ID, 0);
if (ret != 0) {
return ret;
}
- return set_plane_prop_str(plane, req, "CRTC_ID", 0);
+ return set_plane_core_prop(plane, req, LIFTOFF_PROP_CRTC_ID, 0);
}
- ret = set_plane_prop_str(plane, req, "CRTC_ID", layer->output->crtc_id);
+ ret = set_plane_core_prop(plane, req, LIFTOFF_PROP_CRTC_ID,
+ layer->output->crtc_id);
if (ret != 0) {
return ret;
}
for (i = 0; i < layer->props_len; i++) {
layer_prop = &layer->props[i];
- if (strcmp(layer_prop->name, "zpos") == 0) {
+ if (layer_prop->core_index == LIFTOFF_PROP_ZPOS) {
/* We don't yet support setting the zpos property. We
* only use it (read-only) during plane allocation. */
continue;
}
- plane_prop = plane_get_property(plane, layer_prop->name);
+ plane_prop = plane_get_property(plane, layer_prop);
if (plane_prop == NULL) {
- if (strcmp(layer_prop->name, "alpha") == 0 &&
+ if (layer_prop->core_index == LIFTOFF_PROP_ALPHA &&
layer_prop->value == 0xFFFF) {
continue; /* Layer is completely opaque */
}
- if (strcmp(layer_prop->name, "rotation") == 0 &&
+ if (layer_prop->core_index == LIFTOFF_PROP_ROTATION &&
layer_prop->value == DRM_MODE_ROTATE_0) {
continue; /* Layer isn't rotated */
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/bench.c new/libliftoff-v0.5.0/test/bench.c
--- old/libliftoff-v0.4.1/test/bench.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/bench.c 2024-05-28 00:22:40.000000000 +0200
@@ -1,6 +1,7 @@
#define _POSIX_C_SOURCE 200112L
#include <assert.h>
#include <libliftoff.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
@@ -67,6 +68,7 @@
}
liftoff_log_set_priority(LIFTOFF_SILENT);
+ liftoff_mock_verbose = false;
for (i = 0; i < planes_len; i++) {
plane_type = i == 0 ? DRM_PLANE_TYPE_PRIMARY :
@@ -103,7 +105,9 @@
clock_gettime(CLOCK_MONOTONIC, &start);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, &(struct liftoff_output_apply_options){
+ .timeout_ns = INT64_MAX,
+ });
assert(ret == 0);
drmModeAtomicFree(req);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/libdrm_mock.c new/libliftoff-v0.5.0/test/libdrm_mock.c
--- old/libliftoff-v0.4.1/test/libdrm_mock.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/libdrm_mock.c 2024-05-28 00:22:40.000000000 +0200
@@ -20,6 +20,7 @@
uint32_t liftoff_mock_drm_crtc_id = DRM_MODE_OBJECT_CRTC & OBJ_TYPE_MASK;
size_t liftoff_mock_commit_count = 0;
bool liftoff_mock_require_primary_plane = false;
+bool liftoff_mock_verbose = true;
struct liftoff_mock_plane {
uint32_t id;
@@ -347,6 +348,20 @@
}
static void
+debug(const char *fmt, ...)
+{
+ va_list args;
+
+ if (!liftoff_mock_verbose) {
+ return;
+ }
+
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ va_end(args);
+}
+
+static void
apply_atomic_req(drmModeAtomicReq *req)
{
int i;
@@ -359,9 +374,8 @@
plane = liftoff_mock_drm_get_plane(prop->obj_id);
prop_index = get_prop_index(prop->prop_id);
plane->prop_values[prop_index] = prop->value;
- fprintf(stderr, "libdrm_mock: plane %"PRIu32": "
- "setting %s = %"PRIu64"\n", plane->id,
- plane_props[prop_index].name, prop->value);
+ debug("libdrm_mock: plane %"PRIu32": setting %s = %"PRIu64"\n",
+ plane->id, plane_props[prop_index].name, prop->value);
}
}
@@ -401,23 +415,23 @@
has_crtc = crtc_id != 0;
if (has_fb != has_crtc) {
- fprintf(stderr, "libdrm_mock: plane %u: both FB_ID and "
- "CRTC_ID must be set or unset together "
- "(FB_ID = %"PRIu64", CRTC_ID = %"PRIu64")\n",
- plane->id, fb_id, crtc_id);
+ debug("libdrm_mock: plane %u: both FB_ID and CRTC_ID "
+ "must be set or unset together "
+ "(FB_ID = %"PRIu64", CRTC_ID = %"PRIu64")\n",
+ plane->id, fb_id, crtc_id);
return -EINVAL;
}
if (has_fb) {
if (crtc_id != liftoff_mock_drm_crtc_id) {
- fprintf(stderr, "libdrm_mock: plane %u: "
- "invalid CRTC_ID\n", plane->id);
+ debug("libdrm_mock: plane %u: invalid CRTC_ID\n",
+ plane->id);
return -EINVAL;
}
layer = mock_fb_get_layer(fb_id);
if (layer == NULL) {
- fprintf(stderr, "libdrm_mock: plane %u: "
- "invalid FB_ID\n", plane->id);
+ debug("libdrm_mock: plane %u: invalid FB_ID\n",
+ plane->id);
return -EINVAL;
}
found = false;
@@ -428,9 +442,9 @@
}
}
if (!found) {
- fprintf(stderr, "libdrm_mock: plane %u: "
- "layer %p is not compatible\n",
- plane->id, (void *)layer);
+ debug("libdrm_mock: plane %u: "
+ "layer %p is not compatible\n",
+ plane->id, (void *)layer);
return -EINVAL;
}
@@ -443,8 +457,8 @@
if (liftoff_mock_require_primary_plane && any_plane_enabled &&
!primary_plane_enabled) {
- fprintf(stderr, "libdrm_mock: cannot light up CRTC without "
- "enabling the primary plane\n");
+ debug("libdrm_mock: cannot light up CRTC without enabling the "
+ "primary plane\n");
return -EINVAL;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/libdrm_mock.h new/libliftoff-v0.5.0/test/libdrm_mock.h
--- old/libliftoff-v0.4.1/test/libdrm_mock.h 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/libdrm_mock.h 2024-05-28 00:22:40.000000000 +0200
@@ -8,6 +8,7 @@
extern uint32_t liftoff_mock_drm_crtc_id;
extern size_t liftoff_mock_commit_count;
+extern bool liftoff_mock_verbose;
/**
* Some drivers require the primary plane to be enabled in order to light up a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/meson.build new/libliftoff-v0.5.0/test/meson.build
--- old/libliftoff-v0.4.1/test/meson.build 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/meson.build 2024-05-28 00:22:40.000000000 +0200
@@ -63,13 +63,15 @@
'change-alpha',
'set-alpha-from-opaque',
'set-alpha-from-transparent',
+ 'change-position-same-intersection',
+ 'change-position-different-intersection',
'unset-alpha-to-opaque',
'unset-alpha-to-transparent',
'change-in-fence-fd',
'change-fb-damage-clips',
],
'priority': [
- #'basic',
+ 'basic',
],
'prop': [
'default-alpha',
@@ -79,6 +81,7 @@
'unmatched',
'unset',
'in-formats',
+ 'fb-damage-clips',
'range',
'signed-range',
'enum',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/test_alloc.c new/libliftoff-v0.5.0/test/test_alloc.c
--- old/libliftoff-v0.4.1/test/test_alloc.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/test_alloc.c 2024-05-28 00:22:40.000000000 +0200
@@ -803,7 +803,7 @@
}
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
@@ -875,7 +875,7 @@
liftoff_mock_plane_add_compatible_layer(mock_plane, layer);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
@@ -913,7 +913,7 @@
liftoff_mock_plane_add_compatible_layer(mock_plane, layer);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
@@ -959,7 +959,7 @@
liftoff_mock_plane_add_compatible_layer(mock_plane, layer_with_fb);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/test_candidate.c new/libliftoff-v0.5.0/test/test_candidate.c
--- old/libliftoff-v0.4.1/test/test_candidate.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/test_candidate.c 2024-05-28 00:22:40.000000000 +0200
@@ -60,7 +60,7 @@
liftoff_layer_set_property(layer, "COLOR_RANGE", 0);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/test_dynamic.c new/libliftoff-v0.5.0/test/test_dynamic.c
--- old/libliftoff-v0.4.1/test/test_dynamic.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/test_dynamic.c 2024-05-28 00:22:40.000000000 +0200
@@ -50,7 +50,7 @@
assert(ctx->commit_count == 0);
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(ctx->output, req, 0);
+ ret = liftoff_output_apply(ctx->output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(ctx->drm_fd, req, 0, NULL);
assert(ret == 0);
@@ -72,7 +72,7 @@
int ret;
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(ctx->output, req, 0);
+ ret = liftoff_output_apply(ctx->output, req, 0, NULL);
assert(ret == 0);
if (want_reuse_prev_alloc) {
/* The library should perform only one TEST_ONLY commit with the
@@ -295,6 +295,33 @@
}
static void
+run_change_position_same_intersection(struct context *ctx)
+{
+
+ first_commit(ctx);
+ assert(liftoff_mock_plane_get_layer(ctx->mock_plane) == ctx->layer);
+
+ liftoff_layer_set_property(ctx->other_layer, "CRTC_X", 1);
+
+ second_commit(ctx, true);
+ assert(liftoff_mock_plane_get_layer(ctx->mock_plane) == ctx->layer);
+}
+
+static void
+run_change_position_different_intersection(struct context *ctx)
+{
+
+ first_commit(ctx);
+ assert(liftoff_mock_plane_get_layer(ctx->mock_plane) == ctx->layer);
+
+ liftoff_layer_set_property(ctx->other_layer, "CRTC_X", 2000);
+ liftoff_layer_set_property(ctx->other_layer, "CRTC_Y", 2000);
+
+ second_commit(ctx, false);
+ assert(liftoff_mock_plane_get_layer(ctx->mock_plane) == ctx->layer);
+}
+
+static void
run_change_in_fence_fd(struct context *ctx)
{
liftoff_layer_set_property(ctx->layer, "IN_FENCE_FD", 42);
@@ -334,6 +361,8 @@
{ .name = "change-alpha", .run = run_change_alpha },
{ .name = "set-alpha-from-opaque", .run = run_set_alpha_from_opaque },
{ .name = "set-alpha-from-transparent", .run = run_set_alpha_from_transparent },
+ { .name = "change-position-same-intersection", .run = run_change_position_same_intersection },
+ { .name = "change-position-different-intersection", .run = run_change_position_different_intersection },
{ .name = "unset-alpha-to-opaque", .run = run_unset_alpha_to_opaque },
{ .name = "unset-alpha-to-transparent", .run = run_unset_alpha_to_transparent },
{ .name = "change-in-fence-fd", .run = run_change_in_fence_fd },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/test_priority.c new/libliftoff-v0.5.0/test/test_priority.c
--- old/libliftoff-v0.4.1/test/test_priority.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/test_priority.c 2024-05-28 00:22:40.000000000 +0200
@@ -76,7 +76,7 @@
liftoff_layer_set_property(layer, "FB_ID", fbs[j % 2]);
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libliftoff-v0.4.1/test/test_prop.c new/libliftoff-v0.5.0/test/test_prop.c
--- old/libliftoff-v0.4.1/test/test_prop.c 2023-03-05 19:36:15.000000000 +0100
+++ new/libliftoff-v0.5.0/test/test_prop.c 2024-05-28 00:22:40.000000000 +0200
@@ -34,7 +34,7 @@
int ret;
req = drmModeAtomicAlloc();
- ret = liftoff_output_apply(output, req, 0);
+ ret = liftoff_output_apply(output, req, 0, NULL);
assert(ret == 0);
ret = drmModeAtomicCommit(drm_fd, req, 0, NULL);
assert(ret == 0);
@@ -277,6 +277,38 @@
return 0;
}
+static int
+test_ignored_prop(const char *name)
+{
+ struct liftoff_mock_plane *mock_plane;
+ int drm_fd;
+ struct liftoff_device *device;
+ struct liftoff_output *output;
+ struct liftoff_layer *layer;
+
+ mock_plane = liftoff_mock_drm_create_plane(DRM_PLANE_TYPE_PRIMARY);
+
+ drm_fd = liftoff_mock_drm_open();
+ device = liftoff_device_create(drm_fd);
+ assert(device != NULL);
+
+ liftoff_device_register_all_planes(device);
+
+ output = liftoff_output_create(device, liftoff_mock_drm_crtc_id);
+ layer = add_layer(output, 0, 0, 1920, 1080);
+ liftoff_layer_set_property(layer, name, 0);
+
+ liftoff_mock_plane_add_compatible_layer(mock_plane, layer);
+
+ commit(drm_fd, output);
+ assert(liftoff_mock_plane_get_layer(mock_plane) == layer);
+
+ liftoff_device_destroy(device);
+ close(drm_fd);
+
+ return 0;
+}
+
struct single_format_modifier_blob {
struct drm_format_modifier_blob base;
uint32_t formats[1];
@@ -497,6 +529,8 @@
return test_unset_prop();
} else if (strcmp(test_name, "in-formats") == 0) {
return test_in_formats();
+ } else if (strcmp(test_name, "fb-damage-clips") == 0) {
+ return test_ignored_prop("FB_DAMAGE_CLIPS");
} else if (strcmp(test_name, "range") == 0) {
return test_range();
} else if (strcmp(test_name, "signed-range") == 0) {
1
0