openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
June 2024
- 2 participants
- 1219 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2024-06-06 12:41:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Thu Jun 6 12:41:49 2024 rev:2940 rq: version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/000release-packages/Aeon-release.changes 2024-06-05 20:14:11.730591507 +0200
+++ /work/SRC/openSUSE:Factory/.000release-packages.new.24587/Aeon-release.changes 2024-06-06 12:41:51.048678055 +0200
@@ -2 +2 @@
-Wed Jun 05 18:14:07 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
+Thu Jun 06 10:41:47 UTC 2024 - openSUSE <packaging(a)lists.opensuse.org>
Kalpa-release.changes: same change
MicroOS-release.changes: same change
openSUSE-Addon-NonOss-release.changes: same change
openSUSE-release.changes: same change
stub.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Aeon-release.spec ++++++
--- /var/tmp/diff_new_pack.bkrqmA/_old 2024-06-06 12:41:52.896745540 +0200
+++ /var/tmp/diff_new_pack.bkrqmA/_new 2024-06-06 12:41:52.900745686 +0200
@@ -17,7 +17,7 @@
Name: Aeon-release
-Version: 20240605
+Version: 20240606
Release: 0
Summary: openSUSE Aeon
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Aeon
-Provides: product(Aeon) = 20240605-0
+Provides: product(Aeon) = 20240606-0
Provides: product-label() = openSUSE%20Aeon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20240605
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20240606
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Aeon)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Aeon) = 20240605-0
+Provides: product_flavor(Aeon) = 20240606-0
Summary: openSUSE Aeon%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Aeon</name>
- <version>20240605</version>
+ <version>20240606</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:aeon:20240605</cpeid>
+ <cpeid>cpe:/o:opensuse:aeon:20240606</cpeid>
<productline>Aeon</productline>
<register>
<pool>
++++++ Kalpa-release.spec ++++++
--- /var/tmp/diff_new_pack.bkrqmA/_old 2024-06-06 12:41:52.936747001 +0200
+++ /var/tmp/diff_new_pack.bkrqmA/_new 2024-06-06 12:41:52.936747001 +0200
@@ -17,7 +17,7 @@
Name: Kalpa-release
-Version: 20240605
+Version: 20240606
Release: 0
Summary: openSUSE Kalpa
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Kalpa
-Provides: product(Kalpa) = 20240605-0
+Provides: product(Kalpa) = 20240606-0
Provides: product-label() = openSUSE%20Kalpa
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20240605
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20240606
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Kalpa)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Kalpa) = 20240605-0
+Provides: product_flavor(Kalpa) = 20240606-0
Summary: openSUSE Kalpa%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Kalpa</name>
- <version>20240605</version>
+ <version>20240606</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:kalpa:20240605</cpeid>
+ <cpeid>cpe:/o:opensuse:kalpa:20240606</cpeid>
<productline>Kalpa</productline>
<register>
<pool>
++++++ MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.bkrqmA/_old 2024-06-06 12:41:52.980748608 +0200
+++ /var/tmp/diff_new_pack.bkrqmA/_new 2024-06-06 12:41:52.984748754 +0200
@@ -17,7 +17,7 @@
Name: MicroOS-release
-Version: 20240605
+Version: 20240606
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -179,9 +179,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = MicroOS
-Provides: product(MicroOS) = 20240605-0
+Provides: product(MicroOS) = 20240606-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20240605
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20240606
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(MicroOS)
@@ -197,7 +197,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(MicroOS) = 20240605-0
+Provides: product_flavor(MicroOS) = 20240606-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description dvd
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(MicroOS) = 20240605-0
+Provides: product_flavor(MicroOS) = 20240606-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description appliance
@@ -278,11 +278,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>MicroOS</name>
- <version>20240605</version>
+ <version>20240606</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:microos:20240605</cpeid>
+ <cpeid>cpe:/o:opensuse:microos:20240606</cpeid>
<productline>MicroOS</productline>
<register>
<pool>
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.bkrqmA/_old 2024-06-06 12:41:53.024750214 +0200
+++ /var/tmp/diff_new_pack.bkrqmA/_new 2024-06-06 12:41:53.024750214 +0200
@@ -18,7 +18,7 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
-Version: 20240605
+Version: 20240606
#!BcntSyncTag: openSUSE-Addon-NonOss
Release: 0
Summary: openSUSE NonOSS Addon
@@ -26,9 +26,9 @@
Group: System/Fhs
Provides: %name-%version
Provides: product() = openSUSE%2DAddon%2DNonOss
-Provides: product(openSUSE-Addon-NonOss) = 20240605-0
+Provides: product(openSUSE-Addon-NonOss) = 20240606-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20240605
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20240606
@@ -48,10 +48,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20240605</version>
+ <version>20240606</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20240605</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20240606</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.bkrqmA/_old 2024-06-06 12:41:53.060751529 +0200
+++ /var/tmp/diff_new_pack.bkrqmA/_new 2024-06-06 12:41:53.064751675 +0200
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20240605
+Version: 20240606
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -185,7 +185,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20240605-0
+Provides: product(openSUSE) = 20240606-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -199,7 +199,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20240605
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20240606
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description ftp
@@ -228,7 +228,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description mini
@@ -243,7 +243,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description dvd
@@ -258,7 +258,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-kde
@@ -273,7 +273,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-x11
@@ -288,7 +288,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-gnome
@@ -303,7 +303,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-xfce
@@ -318,7 +318,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-kde
@@ -333,7 +333,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-gnome
@@ -348,7 +348,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-x11
@@ -363,7 +363,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance
@@ -378,7 +378,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-docker)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-docker
@@ -393,7 +393,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kvm)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-kvm
@@ -408,7 +408,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vmware)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vmware
@@ -423,7 +423,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-openstack)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-openstack
@@ -438,7 +438,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-hyperv)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-hyperv
@@ -453,7 +453,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vagrant)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vagrant
@@ -468,7 +468,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-wsl)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-wsl
@@ -483,7 +483,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-custom)
-Provides: product_flavor(openSUSE) = 20240605-0
+Provides: product_flavor(openSUSE) = 20240606-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-custom
@@ -566,10 +566,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20240605</version>
+ <version>20240606</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20240605</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20240606</cpeid>
<productline>openSUSE</productline>
<register>
<target>openSUSE-Tumbleweed-x86_64</target>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package krb5-appl for openSUSE:Factory checked in at 2024-06-06 12:34:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/krb5-appl (Old)
and /work/SRC/openSUSE:Factory/.krb5-appl.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "krb5-appl"
Thu Jun 6 12:34:34 2024 rev:3 rq:1178938 version:1.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/krb5-appl/krb5-appl.changes 2024-02-22 21:01:59.254778547 +0100
+++ /work/SRC/openSUSE:Factory/.krb5-appl.new.24587/krb5-appl.changes 2024-06-06 12:35:13.494172918 +0200
@@ -1,0 +2,7 @@
+Mon May 13 13:11:36 UTC 2024 - pgajdos(a)suse.com
+
+- added patches
+ fix build with gcc14
+ + krb5-appl-gcc14.patch
+
+-------------------------------------------------------------------
New:
----
krb5-appl-gcc14.patch
BETA DEBUG BEGIN:
New: fix build with gcc14
+ krb5-appl-gcc14.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ krb5-appl.spec ++++++
--- /var/tmp/diff_new_pack.KcQ8dT/_old 2024-06-06 12:35:14.142196534 +0200
+++ /var/tmp/diff_new_pack.KcQ8dT/_new 2024-06-06 12:35:14.142196534 +0200
@@ -1,7 +1,7 @@
#
# spec file for package krb5-appl
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# 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
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -21,7 +21,7 @@
%define krb5docdir %{_defaultdocdir}/krb5
Name: krb5-appl
-Url: https://web.mit.edu/kerberos/www/
+URL: https://web.mit.edu/kerberos/www/
BuildRequires: bison
BuildRequires: krb5-devel
BuildRequires: libcom_err-devel
@@ -40,6 +40,8 @@
Patch3: krb5-appl-1.0-fix-path-in-manpages.dif
Patch4: krb5-appl-1.0.3-libc.patch
Patch5: krb5-appl-fix-build.patch
+# build with gcc14
+Patch6: krb5-appl-gcc14.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -87,6 +89,7 @@
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
+%patch -P 6 -p1
%build
./autogen.sh
++++++ krb5-appl-gcc14.patch ++++++
--- a/gssftp/ftp/cmds.c 2009-11-05 21:15:06.000000000 +0100
+++ b/gssftp/ftp/cmds.c 2024-05-13 14:34:00.392581022 +0200
@@ -313,6 +313,7 @@ char *plevel[] = {
* Set control channel protection level.
*/
void setclevel(argc, argv)
+ int argc;
char *argv[];
{
register struct levels *p;
@@ -366,6 +367,7 @@ void setclevel(argc, argv)
*/
void
setdlevel(argc, argv)
+ int argc;
char *argv[];
{
register struct levels *p;
@@ -848,6 +850,7 @@ void get(argc, argv)
static int getit(argc, argv, restartit, rmode)
int argc;
char *argv[];
+ int restartit;
char *rmode;
{
int loc = 0;
@@ -1165,6 +1168,7 @@ static void cstatus()
*/
/*ARGSUSED*/
void status(argc, argv)
+ int argc;
char *argv[];
{
int i;
--- a/telnet/telnet/commands.c 2011-07-11 21:30:55.000000000 +0200
+++ b/telnet/telnet/commands.c 2024-05-13 14:35:18.756434224 +0200
@@ -1892,6 +1892,7 @@ env_list()
unsigned char *
env_default(init, welldefined)
int init;
+ int welldefined;
{
static struct env_lst *nep = NULL;
--- a/telnet/telnet/sys_bsd.c 2011-07-11 21:30:25.000000000 +0200
+++ b/telnet/telnet/sys_bsd.c 2024-05-13 14:37:31.397316323 +0200
@@ -977,6 +977,11 @@ sys_telnet_init()
int
process_rings(netin, netout, netex, ttyin, ttyout, poll)
+ int netin;
+ int netout;
+ int netex;
+ int ttyin;
+ int ttyout;
int poll; /* If 0, then block until something to do */
{
register int c;
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package haruna for openSUSE:Factory checked in at 2024-06-06 12:34:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/haruna (Old)
and /work/SRC/openSUSE:Factory/.haruna.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "haruna"
Thu Jun 6 12:34:28 2024 rev:34 rq:1178973 version:1.1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/haruna/haruna.changes 2024-05-21 18:35:37.148577904 +0200
+++ /work/SRC/openSUSE:Factory/.haruna.new.24587/haruna.changes 2024-06-06 12:35:05.457880056 +0200
@@ -1,0 +2,12 @@
+Mon Jun 3 15:46:16 UTC 2024 - Luigi Baldoni <aloisio(a)gmx.com>
+
+- Update to version 1.1.2
+ Bugfixes:
+ * Disabled track selection menus and buttons when there are no
+ tracks to be selected
+ * Fixed custom command toggling
+ * Re-added "Scroll to playing item" and "Trash file" options
+ to playlist context menu, lost during Qt6 port
+ * Fixed some mpv properties not being correctly set at startup
+
+-------------------------------------------------------------------
Old:
----
haruna-1.1.1.tar.xz
haruna-1.1.1.tar.xz.sig
New:
----
haruna-1.1.2.tar.xz
haruna-1.1.2.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ haruna.spec ++++++
--- /var/tmp/diff_new_pack.58Yaty/_old 2024-06-06 12:35:09.206016648 +0200
+++ /var/tmp/diff_new_pack.58Yaty/_new 2024-06-06 12:35:09.210016794 +0200
@@ -17,13 +17,13 @@
Name: haruna
-Version: 1.1.1
+Version: 1.1.2
Release: 0
Summary: Video player built with Qt/QML on top of libmpv
License: CC-BY-4.0 AND GPL-3.0-or-later AND WTFPL
URL: https://apps.kde.org/haruna
-Source0: https://download.kde.org/stable/haruna/%{name}-%{version}.tar.xz
-Source1: https://download.kde.org/stable/haruna/%{name}-%{version}.tar.xz.sig
+Source0: https://download.kde.org/stable/haruna/%{version}/%{name}-%{version}.tar.xz
+Source1: https://download.kde.org/stable/haruna/%{version}/%{name}-%{version}.tar.xz…
Source2: haruna.keyring
BuildRequires: cmake >= 3.15
BuildRequires: hicolor-icon-theme
@@ -42,6 +42,7 @@
BuildRequires: cmake(KF6WindowSystem)
BuildRequires: cmake(MpvQt)
BuildRequires: cmake(Qt6Core) >= 6.6.0
+BuildRequires: cmake(Qt6Core5Compat)
BuildRequires: cmake(Qt6DBus)
BuildRequires: cmake(Qt6Gui)
BuildRequires: cmake(Qt6Qml)
++++++ haruna-1.1.1.tar.xz -> haruna-1.1.2.tar.xz ++++++
++++ 5471 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kubevirt for openSUSE:Factory checked in at 2024-06-06 12:34:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kubevirt (Old)
and /work/SRC/openSUSE:Factory/.kubevirt.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kubevirt"
Thu Jun 6 12:34:26 2024 rev:75 rq:1178919 version:1.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/kubevirt/kubevirt.changes 2024-05-29 19:36:09.465153243 +0200
+++ /work/SRC/openSUSE:Factory/.kubevirt.new.24587/kubevirt.changes 2024-06-06 12:35:04.321838656 +0200
@@ -1,0 +2,6 @@
+Thu Jun 6 06:54:11 UTC 2024 - Vasily Ulyanov <vasily.ulyanov(a)suse.com>
+
+- Update to version 1.2.2
+ Release notes https://github.com/kubevirt/kubevirt/releases/tag/v1.2.2
+
+-------------------------------------------------------------------
Old:
----
kubevirt-1.2.1.tar.gz
New:
----
kubevirt-1.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kubevirt.spec ++++++
--- /var/tmp/diff_new_pack.sZOeV1/_old 2024-06-06 12:35:04.973862417 +0200
+++ /var/tmp/diff_new_pack.sZOeV1/_new 2024-06-06 12:35:04.977862562 +0200
@@ -30,7 +30,7 @@
%endif
Name: kubevirt
-Version: 1.2.1
+Version: 1.2.2
Release: 0
Summary: Container native virtualization
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.sZOeV1/_old 2024-06-06 12:35:05.037864749 +0200
+++ /var/tmp/diff_new_pack.sZOeV1/_new 2024-06-06 12:35:05.041864895 +0200
@@ -1,7 +1,7 @@
<services>
<service name="tar_scm" mode="manual">
<param name="filename">kubevirt</param>
- <param name="revision">v1.2.1</param>
+ <param name="revision">v1.2.2</param>
<param name="scm">git</param>
<param name="submodules">disable</param>
<param name="url">https://github.com/kubevirt/kubevirt</param>
++++++ disks-images-provider.yaml ++++++
--- /var/tmp/diff_new_pack.sZOeV1/_old 2024-06-06 12:35:05.069865916 +0200
+++ /var/tmp/diff_new_pack.sZOeV1/_new 2024-06-06 12:35:05.077866207 +0200
@@ -22,7 +22,7 @@
serviceAccountName: kubevirt-testing
containers:
- name: target
- image: quay.io/kubevirt/disks-images-provider:v1.2.1
+ image: quay.io/kubevirt/disks-images-provider:v1.2.2
imagePullPolicy: Always
lifecycle:
preStop:
++++++ kubevirt-1.2.1.tar.gz -> kubevirt-1.2.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/kubevirt/kubevirt-1.2.1.tar.gz /work/SRC/openSUSE:Factory/.kubevirt.new.24587/kubevirt-1.2.2.tar.gz differ: char 12, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-io for openSUSE:Factory checked in at 2024-06-06 12:34:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-io (Old)
and /work/SRC/openSUSE:Factory/.aws-c-io.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-io"
Thu Jun 6 12:34:24 2024 rev:7 rq:1178905 version:0.14.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-io/aws-c-io.changes 2024-05-16 17:15:40.909023698 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-io.new.24587/aws-c-io.changes 2024-06-06 12:35:01.617740112 +0200
@@ -1,0 +2,12 @@
+Wed Jun 5 08:50:30 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.14.9
+ * Fix tests that require a valid cert to use add_net_test_case
+ by @waahm7 in (#637)
+ * Fix signed/unsigned bug with aws_future_wait() timeout value
+ by @graebm in (#638)
+ * Adds Host Resolver IPv6 variations test by @waahm7 in (#639)
+ * Fix bug where last few bytes on socket go unread
+ by @graebm in (#642)
+
+-------------------------------------------------------------------
Old:
----
v0.14.8.tar.gz
New:
----
v0.14.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-io.spec ++++++
--- /var/tmp/diff_new_pack.T3k2Mf/_old 2024-06-06 12:35:03.365803815 +0200
+++ /var/tmp/diff_new_pack.T3k2Mf/_new 2024-06-06 12:35:03.373804107 +0200
@@ -20,7 +20,7 @@
%define library_version 1.0.0
%define library_soversion 0unstable
Name: aws-c-io
-Version: 0.14.8
+Version: 0.14.9
Release: 0
Summary: I/O and TLS package AWS SDK for C
License: Apache-2.0
++++++ v0.14.8.tar.gz -> v0.14.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/source/future.c new/aws-c-io-0.14.9/source/future.c
--- old/aws-c-io-0.14.8/source/future.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/source/future.c 2024-06-04 18:27:58.000000000 +0200
@@ -453,13 +453,16 @@
/* this function is conceptually const, but we need to use synchronization primitives */
struct aws_future_impl *mutable_future = (struct aws_future_impl *)future;
+ /* condition-variable takes signed timeout, so clamp to INT64_MAX (292+ years) */
+ int64_t timeout_i64 = aws_min_u64(timeout_ns, INT64_MAX);
+
/* BEGIN CRITICAL SECTION */
aws_mutex_lock(&mutable_future->lock);
bool is_done = aws_condition_variable_wait_for_pred(
&mutable_future->wait_cvar,
&mutable_future->lock,
- (int64_t)timeout_ns,
+ timeout_i64,
s_future_impl_is_done_pred,
mutable_future) == AWS_OP_SUCCESS;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/source/posix/socket.c new/aws-c-io-0.14.9/source/posix/socket.c
--- old/aws-c-io-0.14.8/source/posix/socket.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/source/posix/socket.c 2024-06-04 18:27:58.000000000 +0200
@@ -1668,6 +1668,23 @@
* subscribed is set to false. */
aws_ref_count_acquire(&socket_impl->internal_refcount);
+ /* NOTE: READABLE|WRITABLE|HANG_UP events might arrive simultaneously
+ * (e.g. peer sends last few bytes and immediately hangs up).
+ * Notify user of READABLE|WRITABLE events first, so they try to read any remaining bytes. */
+
+ if (socket_impl->currently_subscribed && events & AWS_IO_EVENT_TYPE_READABLE) {
+ AWS_LOGF_TRACE(AWS_LS_IO_SOCKET, "id=%p fd=%d: is readable", (void *)socket, socket->io_handle.data.fd);
+ if (socket->readable_fn) {
+ socket->readable_fn(socket, AWS_OP_SUCCESS, socket->readable_user_data);
+ }
+ }
+ /* if socket closed in between these branches, the currently_subscribed will be false and socket_impl will not
+ * have been cleaned up, so this next branch is safe. */
+ if (socket_impl->currently_subscribed && events & AWS_IO_EVENT_TYPE_WRITABLE) {
+ AWS_LOGF_TRACE(AWS_LS_IO_SOCKET, "id=%p fd=%d: is writable", (void *)socket, socket->io_handle.data.fd);
+ s_process_socket_write_requests(socket, NULL);
+ }
+
if (events & AWS_IO_EVENT_TYPE_REMOTE_HANG_UP || events & AWS_IO_EVENT_TYPE_CLOSED) {
aws_raise_error(AWS_IO_SOCKET_CLOSED);
AWS_LOGF_TRACE(AWS_LS_IO_SOCKET, "id=%p fd=%d: closed remotely", (void *)socket, socket->io_handle.data.fd);
@@ -1688,19 +1705,6 @@
goto end_check;
}
- if (socket_impl->currently_subscribed && events & AWS_IO_EVENT_TYPE_READABLE) {
- AWS_LOGF_TRACE(AWS_LS_IO_SOCKET, "id=%p fd=%d: is readable", (void *)socket, socket->io_handle.data.fd);
- if (socket->readable_fn) {
- socket->readable_fn(socket, AWS_OP_SUCCESS, socket->readable_user_data);
- }
- }
- /* if socket closed in between these branches, the currently_subscribed will be false and socket_impl will not
- * have been cleaned up, so this next branch is safe. */
- if (socket_impl->currently_subscribed && events & AWS_IO_EVENT_TYPE_WRITABLE) {
- AWS_LOGF_TRACE(AWS_LS_IO_SOCKET, "id=%p fd=%d: is writable", (void *)socket, socket->io_handle.data.fd);
- s_process_socket_write_requests(socket, NULL);
- }
-
end_check:
aws_ref_count_release(&socket_impl->internal_refcount);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/source/socket_channel_handler.c new/aws-c-io-0.14.9/source/socket_channel_handler.c
--- old/aws-c-io-0.14.8/source/socket_channel_handler.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/source/socket_channel_handler.c 2024-06-04 18:27:58.000000000 +0200
@@ -122,6 +122,10 @@
*/
static void s_do_read(struct socket_handler *socket_handler) {
+ if (socket_handler->shutdown_in_progress) {
+ return;
+ }
+
size_t downstream_window = aws_channel_slot_downstream_read_window(socket_handler->slot);
size_t max_to_read =
downstream_window > socket_handler->max_rw_size ? socket_handler->max_rw_size : downstream_window;
@@ -139,17 +143,20 @@
size_t total_read = 0;
size_t read = 0;
- while (total_read < max_to_read && !socket_handler->shutdown_in_progress) {
+ int last_error = 0;
+ while (total_read < max_to_read) {
size_t iter_max_read = max_to_read - total_read;
struct aws_io_message *message = aws_channel_acquire_message_from_pool(
socket_handler->slot->channel, AWS_IO_MESSAGE_APPLICATION_DATA, iter_max_read);
if (!message) {
+ last_error = aws_last_error();
break;
}
if (aws_socket_read(socket_handler->socket, &message->message_data, &read)) {
+ last_error = aws_last_error();
aws_mem_release(message->allocator, message);
break;
}
@@ -162,6 +169,7 @@
(unsigned long long)read);
if (aws_channel_slot_send_message(socket_handler->slot, message, AWS_CHANNEL_DIR_READ)) {
+ last_error = aws_last_error();
aws_mem_release(message->allocator, message);
break;
}
@@ -170,30 +178,29 @@
AWS_LOGF_TRACE(
AWS_LS_IO_SOCKET_HANDLER,
"id=%p: total read on this tick %llu",
- (void *)&socket_handler->slot->handler,
+ (void *)socket_handler->slot->handler,
(unsigned long long)total_read);
socket_handler->stats.bytes_read += total_read;
/* resubscribe as long as there's no error, just return if we're in a would block scenario. */
if (total_read < max_to_read) {
- int last_error = aws_last_error();
+ AWS_ASSERT(last_error != 0);
- if (last_error != AWS_IO_READ_WOULD_BLOCK && !socket_handler->shutdown_in_progress) {
+ if (last_error != AWS_IO_READ_WOULD_BLOCK) {
aws_channel_shutdown(socket_handler->slot->channel, last_error);
+ } else {
+ AWS_LOGF_TRACE(
+ AWS_LS_IO_SOCKET_HANDLER,
+ "id=%p: out of data to read on socket. "
+ "Waiting on event-loop notification.",
+ (void *)socket_handler->slot->handler);
}
-
- AWS_LOGF_TRACE(
- AWS_LS_IO_SOCKET_HANDLER,
- "id=%p: out of data to read on socket. "
- "Waiting on event-loop notification.",
- (void *)socket_handler->slot->handler);
return;
}
/* in this case, everything was fine, but there's still pending reads. We need to schedule a task to do the read
* again. */
- if (!socket_handler->shutdown_in_progress && total_read == socket_handler->max_rw_size &&
- !socket_handler->read_task_storage.task_fn) {
+ if (total_read == socket_handler->max_rw_size && !socket_handler->read_task_storage.task_fn) {
AWS_LOGF_TRACE(
AWS_LS_IO_SOCKET_HANDLER,
@@ -212,17 +219,29 @@
(void)socket;
struct socket_handler *socket_handler = user_data;
- AWS_LOGF_TRACE(AWS_LS_IO_SOCKET_HANDLER, "id=%p: socket is now readable", (void *)socket_handler->slot->handler);
+ AWS_LOGF_TRACE(
+ AWS_LS_IO_SOCKET_HANDLER,
+ "id=%p: socket on-readable with error code %d(%s)",
+ (void *)socket_handler->slot->handler,
+ error_code,
+ aws_error_name(error_code));
- /* read regardless so we can pick up data that was sent prior to the close. For example, peer sends a TLS ALERT
- * then immediately closes the socket. On some platforms, we'll never see the readable flag. So we want to make
+ /* Regardless of error code call read() until it reports error or EOF,
+ * so we can pick up data that was sent prior to the close.
+ *
+ * For example, if peer closes the socket immediately after sending the last
+ * bytes of data, the READABLE and HANGUP events arrive simultaneously.
+ *
+ * Another example, peer sends a TLS ALERT then immediately closes the socket.
+ * On some platforms, we'll never see the readable flag. So we want to make
* sure we read the ALERT, otherwise, we'll end up telling the user that the channel shutdown because of a socket
- * closure, when in reality it was a TLS error */
+ * closure, when in reality it was a TLS error
+ *
+ * It may take more than one read() to get all remaining data.
+ * Also, if the downstream read-window reaches 0, we need to patiently
+ * wait until the window opens before we can call read() again. */
+ (void)error_code;
s_do_read(socket_handler);
-
- if (error_code && !socket_handler->shutdown_in_progress) {
- aws_channel_shutdown(socket_handler->slot->channel, error_code);
- }
}
/* Either the result of a context switch (for fairness in the event loop), or a window update. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/source/windows/iocp/socket.c new/aws-c-io-0.14.9/source/windows/iocp/socket.c
--- old/aws-c-io-0.14.8/source/windows/iocp/socket.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/source/windows/iocp/socket.c 2024-06-04 18:27:58.000000000 +0200
@@ -636,6 +636,7 @@
case IO_STATUS_TIMEOUT:
return AWS_IO_SOCKET_TIMEOUT;
case IO_PIPE_BROKEN:
+ case ERROR_BROKEN_PIPE:
return AWS_IO_SOCKET_CLOSED;
case STATUS_INVALID_ADDRESS_COMPONENT:
case WSAEADDRNOTAVAIL:
@@ -2970,7 +2971,7 @@
AWS_LOGF_ERROR(
AWS_LS_IO_SOCKET,
- "id=%p handle=%p: ReadFile() failed with error %d",
+ "id=%p handle=%p: recv() failed with error %d",
(void *)socket,
(void *)socket->io_handle.data.handle,
error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/CMakeLists.txt new/aws-c-io-0.14.9/tests/CMakeLists.txt
--- old/aws-c-io-0.14.8/tests/CMakeLists.txt 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/CMakeLists.txt 2024-06-04 18:27:58.000000000 +0200
@@ -94,6 +94,7 @@
add_net_test_case(channel_connect_some_hosts_timeout)
add_net_test_case(test_default_with_ipv6_lookup)
+add_net_test_case(test_default_host_resolver_ipv6_address_variations)
add_test_case(test_resolver_ipv6_address_lookup)
add_net_test_case(test_default_with_multiple_lookups)
add_test_case(test_resolver_ipv4_address_lookup)
@@ -122,6 +123,28 @@
add_test_case(socket_handler_echo_and_backpressure)
add_test_case(socket_handler_close)
+# These tests fail on Windows due to some bug in our server code where, if the socket is closed
+# immediately after data is written, that data does not flush cleanly to the client.
+# I've lost days to this bug, and no one is using our Windows server funcionality,
+# so disabling these tests on Windows and moving along for now.
+# I tried the following:
+# 1) Wrote 2 simple standalone Windows programs, server and client, using simple synchronous socket code.
+# WORKED PERFECTLY. So it's not a fundamental issue with Windows.
+# 2) Commented out server part of this failing test, and used the simple standalone server instead.
+# WORKED PERFECTLY. So it's not a problem with our actual client code.
+# 3) Copy/pasted the simple standlone server code into this test, and used that instead of our actual server code.
+# WORKED PERFECTLY. So it's not a problem with the server and client sockets being in the same process.
+# 4) Commented out the client part of this failing test, and used the simple standalone client instead.
+# FAILED. The standalone client got WSAECONNRESET (Connection reset by peer) before receiving all the data.
+# So it's something with our complicated non-blocking server code.
+# The last interesting thing I noticed before giving up was: we call shutdown() immediately
+# before calling closesocket() but shutdown() gets error WSAENOTCONN, even
+# though, at that moment, the socket should be connected just fine.
+if(NOT WIN32)
+ add_net_test_case(socket_handler_read_to_eof_after_peer_hangup)
+ add_net_test_case(socket_handler_ipv4_read_to_eof_after_peer_hangup)
+ add_net_test_case(socket_handler_ipv6_read_to_eof_after_peer_hangup)
+endif()
add_test_case(socket_pinned_event_loop)
add_net_test_case(socket_pinned_event_loop_dns_failure)
@@ -209,7 +232,7 @@
# Misc non-badssl tls tests
add_net_test_case(test_concurrent_cert_import)
add_net_test_case(test_duplicate_cert_import)
- add_test_case(tls_channel_echo_and_backpressure_test)
+ add_net_test_case(tls_channel_echo_and_backpressure_test)
add_net_test_case(tls_client_channel_negotiation_error_socket_closed)
add_net_test_case(tls_client_channel_negotiation_success)
add_net_test_case(tls_server_multiple_connections)
@@ -222,8 +245,8 @@
add_test_case(alpn_error_creating_handler)
add_test_case(tls_destroy_null_context)
- add_test_case(tls_channel_statistics_test)
- add_test_case(tls_certificate_chain_test)
+ add_net_test_case(tls_channel_statistics_test)
+ add_net_test_case(tls_certificate_chain_test)
else()
add_test_case(byo_tls_handler_test)
endif()
@@ -238,6 +261,7 @@
add_test_case(future_register_event_loop_callback_always_scheduled)
add_test_case(future_register_channel_callback)
add_test_case(future_wait_timeout)
+add_test_case(future_wait_timeout_max)
add_test_case(future_pointer_with_destroy)
add_test_case(future_pointer_with_release)
add_test_case(future_get_result_by_move)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/default_host_resolver_test.c new/aws-c-io-0.14.9/tests/default_host_resolver_test.c
--- old/aws-c-io-0.14.8/tests/default_host_resolver_test.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/default_host_resolver_test.c 2024-06-04 18:27:58.000000000 +0200
@@ -160,6 +160,103 @@
AWS_TEST_CASE(test_default_with_ipv6_lookup, s_test_default_with_ipv6_lookup_fn)
+static int s_test_default_host_resolver_ipv6_address_variations_fn(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ aws_io_library_init(allocator);
+
+ const struct test_case {
+ const char *ip_address;
+ const char *expected_resolved_ip_address;
+ } test_cases[] = {
+ /* simple full uri*/
+ {
+ .ip_address = "0:0::1",
+ .expected_resolved_ip_address = "::1",
+ },
+ {
+ .ip_address = "::1",
+ .expected_resolved_ip_address = "::1",
+ },
+ {
+ .ip_address = "0:0:0:0:0:0:0:1",
+ .expected_resolved_ip_address = "::1",
+ },
+ {
+ .ip_address = "fd00:ec2:0:0:0:0:0:23",
+ .expected_resolved_ip_address = "fd00:ec2::23",
+ },
+
+ };
+
+ struct aws_event_loop_group *el_group = aws_event_loop_group_new_default(allocator, 1, NULL);
+
+ struct aws_host_resolver_default_options resolver_options = {
+ .el_group = el_group,
+ .max_entries = 10,
+ };
+ struct aws_host_resolver *resolver = aws_host_resolver_new_default(allocator, &resolver_options);
+
+ struct aws_host_resolution_config config = {
+ .max_ttl = 10,
+ .impl = aws_default_dns_resolve,
+ .impl_data = NULL,
+ };
+
+ struct aws_mutex mutex = AWS_MUTEX_INIT;
+ struct default_host_callback_data callback_data = {
+ .condition_variable = AWS_CONDITION_VARIABLE_INIT,
+ .invoked = false,
+ .has_aaaa_address = false,
+ .has_a_address = false,
+ .mutex = &mutex,
+ };
+
+ for (size_t case_idx = 0; case_idx < AWS_ARRAY_SIZE(test_cases); ++case_idx) {
+ struct test_case case_i = test_cases[case_idx];
+ printf(
+ "CASE[%zu]: ip_address=%s expected_resolved_ip_address=%s\n, ",
+ case_idx,
+ case_i.ip_address,
+ case_i.expected_resolved_ip_address);
+ struct aws_string *address = aws_string_new_from_c_str(allocator, case_i.ip_address);
+ struct aws_string *expected_address = aws_string_new_from_c_str(allocator, case_i.expected_resolved_ip_address);
+
+ ASSERT_SUCCESS(aws_host_resolver_resolve_host(
+ resolver, address, s_default_host_resolved_test_callback, &config, &callback_data));
+
+ ASSERT_SUCCESS(aws_mutex_lock(&mutex));
+ aws_condition_variable_wait_pred(
+ &callback_data.condition_variable, &mutex, s_default_host_resolved_predicate, &callback_data);
+
+ callback_data.invoked = false;
+ ASSERT_TRUE(callback_data.has_aaaa_address);
+ ASSERT_INT_EQUALS(AWS_ADDRESS_RECORD_TYPE_AAAA, callback_data.aaaa_address.record_type);
+ ASSERT_BIN_ARRAYS_EQUALS(
+ aws_string_bytes(expected_address),
+ expected_address->len,
+ aws_string_bytes(callback_data.aaaa_address.address),
+ callback_data.aaaa_address.address->len);
+
+ aws_host_address_clean_up(&callback_data.aaaa_address);
+ aws_host_address_clean_up(&callback_data.a_address);
+ ASSERT_SUCCESS(aws_mutex_unlock(&mutex));
+ aws_string_destroy(address);
+ aws_string_destroy(expected_address);
+ }
+
+ aws_host_resolver_release(resolver);
+ aws_event_loop_group_release(el_group);
+
+ aws_io_library_clean_up();
+
+ return 0;
+}
+
+AWS_TEST_CASE(
+ test_default_host_resolver_ipv6_address_variations,
+ s_test_default_host_resolver_ipv6_address_variations_fn)
+
/* just FYI, this test assumes that "s3.us-east-1.amazonaws.com" does not return IPv6 addresses. */
static int s_test_default_with_ipv4_only_lookup_fn(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/future_test.c new/aws-c-io-0.14.9/tests/future_test.c
--- old/aws-c-io-0.14.8/tests/future_test.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/future_test.c 2024-06-04 18:27:58.000000000 +0200
@@ -440,6 +440,29 @@
}
AWS_TEST_CASE(future_wait_timeout, s_test_future_wait_timeout)
+/* This is a regression test */
+static int s_test_future_wait_timeout_max(struct aws_allocator *alloc, void *ctx) {
+ (void)ctx;
+ aws_io_library_init(alloc);
+
+ /* Thread will complete the future in 1sec */
+ struct aws_future_size *future = s_start_thread_job(alloc, ONE_SEC_IN_NS);
+
+ /* Wait for future to complete, with timeout of UINT64_MAX.
+ * Once upon a time, there was a bug where this became a negative number and immediately timed out. */
+ bool completed_before_timeout = aws_future_size_wait(future, UINT64_MAX);
+ ASSERT_TRUE(completed_before_timeout);
+
+ /* Wait until other thread joins, at which point the future is complete and the callback has fired */
+ aws_thread_set_managed_join_timeout_ns(MAX_TIMEOUT_NS);
+ ASSERT_SUCCESS(aws_thread_join_all_managed());
+
+ aws_future_size_release(future);
+ aws_io_library_clean_up();
+ return 0;
+}
+AWS_TEST_CASE(future_wait_timeout_max, s_test_future_wait_timeout_max)
+
struct aws_destroyme {
struct aws_allocator *alloc;
bool *set_true_on_death;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/read_write_test_handler.c new/aws-c-io-0.14.9/tests/read_write_test_handler.c
--- old/aws-c-io-0.14.8/tests/read_write_test_handler.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/read_write_test_handler.c 2024-06-04 18:27:58.000000000 +0200
@@ -190,42 +190,60 @@
struct aws_channel_slot *slot;
struct aws_byte_buf *buffer;
struct aws_channel_task task;
+ aws_channel_on_message_write_completed_fn *on_completion;
+ void *user_data;
};
-static void s_rw_handler_write_task(struct aws_channel_task *task, void *arg, enum aws_task_status task_status) {
- (void)task;
- (void)task_status;
- struct rw_handler_write_task_args *write_task_args = arg;
+static void s_rw_handler_write_now(
+ struct aws_channel_slot *slot,
+ struct aws_byte_buf *buffer,
+ aws_channel_on_message_write_completed_fn *on_completion,
+ void *user_data) {
+
+ struct aws_io_message *msg =
+ aws_channel_acquire_message_from_pool(slot->channel, AWS_IO_MESSAGE_APPLICATION_DATA, buffer->len);
- struct aws_io_message *msg = aws_channel_acquire_message_from_pool(
- write_task_args->slot->channel, AWS_IO_MESSAGE_APPLICATION_DATA, write_task_args->buffer->len);
+ msg->on_completion = on_completion;
+ msg->user_data = user_data;
- struct aws_byte_cursor write_buffer = aws_byte_cursor_from_buf(write_task_args->buffer);
- aws_byte_buf_append(&msg->message_data, &write_buffer);
+ struct aws_byte_cursor write_buffer = aws_byte_cursor_from_buf(buffer);
+ AWS_FATAL_ASSERT(aws_byte_buf_append(&msg->message_data, &write_buffer) == AWS_OP_SUCCESS);
- aws_channel_slot_send_message(write_task_args->slot, msg, AWS_CHANNEL_DIR_WRITE);
+ AWS_FATAL_ASSERT(aws_channel_slot_send_message(slot, msg, AWS_CHANNEL_DIR_WRITE) == AWS_OP_SUCCESS);
+}
+static void s_rw_handler_write_task(struct aws_channel_task *task, void *arg, enum aws_task_status task_status) {
+ (void)task;
+ (void)task_status;
+ struct rw_handler_write_task_args *write_task_args = arg;
+ s_rw_handler_write_now(
+ write_task_args->slot, write_task_args->buffer, write_task_args->on_completion, write_task_args->user_data);
aws_mem_release(write_task_args->handler->alloc, write_task_args);
}
void rw_handler_write(struct aws_channel_handler *handler, struct aws_channel_slot *slot, struct aws_byte_buf *buffer) {
+ rw_handler_write_with_callback(handler, slot, buffer, NULL /*on_completion*/, NULL /*user_data*/);
+}
+
+void rw_handler_write_with_callback(
+ struct aws_channel_handler *handler,
+ struct aws_channel_slot *slot,
+ struct aws_byte_buf *buffer,
+ aws_channel_on_message_write_completed_fn *on_completion,
+ void *user_data) {
struct rw_test_handler_impl *handler_impl = handler->impl;
if (!handler_impl->event_loop_driven || aws_channel_thread_is_callers_thread(slot->channel)) {
- struct aws_io_message *msg =
- aws_channel_acquire_message_from_pool(slot->channel, AWS_IO_MESSAGE_APPLICATION_DATA, buffer->len);
-
- struct aws_byte_cursor write_buffer = aws_byte_cursor_from_buf(buffer);
- aws_byte_buf_append(&msg->message_data, &write_buffer);
-
- aws_channel_slot_send_message(slot, msg, AWS_CHANNEL_DIR_WRITE);
+ s_rw_handler_write_now(slot, buffer, on_completion, user_data);
} else {
struct rw_handler_write_task_args *write_task_args =
aws_mem_acquire(handler->alloc, sizeof(struct rw_handler_write_task_args));
write_task_args->handler = handler;
write_task_args->buffer = buffer;
write_task_args->slot = slot;
+ write_task_args->on_completion = on_completion;
+ write_task_args->user_data = user_data;
aws_channel_task_init(&write_task_args->task, s_rw_handler_write_task, write_task_args, "rw_handler_write");
aws_channel_schedule_task_now(slot->channel, &write_task_args->task);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/read_write_test_handler.h new/aws-c-io-0.14.9/tests/read_write_test_handler.h
--- old/aws-c-io-0.14.8/tests/read_write_test_handler.h 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/read_write_test_handler.h 2024-06-04 18:27:58.000000000 +0200
@@ -36,6 +36,13 @@
void rw_handler_write(struct aws_channel_handler *handler, struct aws_channel_slot *slot, struct aws_byte_buf *buffer);
+void rw_handler_write_with_callback(
+ struct aws_channel_handler *handler,
+ struct aws_channel_slot *slot,
+ struct aws_byte_buf *buffer,
+ aws_channel_on_message_write_completed_fn *on_completion,
+ void *user_data);
+
void rw_handler_trigger_read(struct aws_channel_handler *handler, struct aws_channel_slot *slot);
bool rw_handler_shutdown_called(struct aws_channel_handler *handler);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.8/tests/socket_handler_test.c new/aws-c-io-0.14.9/tests/socket_handler_test.c
--- old/aws-c-io-0.14.8/tests/socket_handler_test.c 2024-05-04 21:28:06.000000000 +0200
+++ new/aws-c-io-0.14.9/tests/socket_handler_test.c 2024-06-04 18:27:58.000000000 +0200
@@ -17,6 +17,13 @@
#include "statistics_handler_test.h"
#include <read_write_test_handler.h>
+#ifdef _MSC_VER
+# pragma warning(disable : 4996) /* allow strncpy() */
+#endif
+
+#define NANOS_PER_SEC ((uint64_t)AWS_TIMESTAMP_NANOS)
+#define TIMEOUT (10 * NANOS_PER_SEC)
+
struct socket_test_args {
struct aws_allocator *allocator;
struct aws_mutex *mutex;
@@ -24,7 +31,7 @@
struct aws_channel *channel;
struct aws_channel_handler *rw_handler;
- struct aws_atomic_var rw_slot; /* pointer-to struct aws_channel_slot */
+ struct aws_channel_slot *rw_slot;
int error_code;
bool shutdown_invoked;
bool error_invoked;
@@ -37,6 +44,7 @@
struct aws_mutex mutex;
struct aws_condition_variable condition_variable;
struct aws_event_loop_group *el_group;
+ struct aws_host_resolver *resolver;
struct aws_atomic_var current_time_ns;
struct aws_atomic_var stats_handler;
@@ -52,6 +60,13 @@
aws_io_library_init(allocator);
tester->el_group = aws_event_loop_group_new_default(allocator, 0, NULL);
+
+ struct aws_host_resolver_default_options resolver_options = {
+ .el_group = tester->el_group,
+ .max_entries = 8,
+ };
+ tester->resolver = aws_host_resolver_new_default(allocator, &resolver_options);
+
struct aws_mutex mutex = AWS_MUTEX_INIT;
struct aws_condition_variable condition_variable = AWS_CONDITION_VARIABLE_INIT;
tester->mutex = mutex;
@@ -63,6 +78,7 @@
}
static int s_socket_common_tester_clean_up(struct socket_common_tester *tester) {
+ aws_host_resolver_release(tester->resolver);
aws_event_loop_group_release(tester->el_group);
aws_mutex_clean_up(&tester->mutex);
@@ -87,7 +103,7 @@
static bool s_channel_setup_predicate(void *user_data) {
struct socket_test_args *setup_test_args = (struct socket_test_args *)user_data;
- return aws_atomic_load_ptr(&setup_test_args->rw_slot) != NULL;
+ return setup_test_args->rw_slot != NULL;
}
static bool s_channel_shutdown_predicate(void *user_data) {
@@ -120,7 +136,7 @@
aws_channel_slot_insert_end(channel, rw_slot);
aws_channel_slot_set_handler(rw_slot, setup_test_args->rw_handler);
- aws_atomic_store_ptr(&setup_test_args->rw_slot, rw_slot);
+ setup_test_args->rw_slot = rw_slot;
aws_mutex_unlock(setup_test_args->mutex);
@@ -147,7 +163,7 @@
aws_channel_slot_insert_end(channel, rw_slot);
aws_channel_slot_set_handler(rw_slot, setup_test_args->rw_handler);
- aws_atomic_store_ptr(&setup_test_args->rw_slot, rw_slot);
+ setup_test_args->rw_slot = rw_slot;
}
aws_mutex_unlock(setup_test_args->mutex);
@@ -198,6 +214,7 @@
struct aws_byte_buf received_message;
size_t amount_read;
size_t expected_read;
+ size_t amount_written;
bool invocation_happened;
bool shutdown_finished;
};
@@ -224,8 +241,7 @@
struct socket_test_rw_args *rw_args = (struct socket_test_rw_args *)user_data;
aws_mutex_lock(rw_args->mutex);
- memcpy(rw_args->received_message.buffer + rw_args->received_message.len, data_read->buffer, data_read->len);
- rw_args->received_message.len += data_read->len;
+ AWS_FATAL_ASSERT(aws_byte_buf_write_from_whole_buffer(&rw_args->received_message, *data_read) == true);
rw_args->amount_read += data_read->len;
rw_args->invocation_happened = true;
aws_condition_variable_notify_one(rw_args->condition_variable);
@@ -234,6 +250,23 @@
return rw_args->received_message;
}
+void s_socket_test_handle_on_write_completed(
+ struct aws_channel *channel,
+ struct aws_io_message *message,
+ int error_code,
+ void *user_data) {
+
+ (void)channel;
+ AWS_FATAL_ASSERT(error_code == 0);
+ struct socket_test_rw_args *rw_args = (struct socket_test_rw_args *)user_data;
+
+ aws_mutex_lock(rw_args->mutex);
+ rw_args->amount_written += message->message_data.len;
+ rw_args->invocation_happened = true;
+ aws_condition_variable_notify_one(rw_args->condition_variable);
+ aws_mutex_unlock(rw_args->mutex);
+}
+
static struct aws_byte_buf s_socket_test_handle_write(
struct aws_channel_handler *handler,
struct aws_channel_slot *slot,
@@ -291,13 +324,27 @@
struct local_server_tester *tester,
struct socket_test_args *args,
struct socket_common_tester *s_c_tester,
+ enum aws_socket_domain socket_domain,
bool enable_back_pressure) {
+
AWS_ZERO_STRUCT(*tester);
tester->socket_options.connect_timeout_ms = 3000;
tester->socket_options.type = AWS_SOCKET_STREAM;
- tester->socket_options.domain = AWS_SOCKET_LOCAL;
-
- aws_socket_endpoint_init_local_address_for_test(&tester->endpoint);
+ tester->socket_options.domain = socket_domain;
+ switch (socket_domain) {
+ case AWS_SOCKET_LOCAL:
+ aws_socket_endpoint_init_local_address_for_test(&tester->endpoint);
+ break;
+ case AWS_SOCKET_IPV4:
+ strncpy(tester->endpoint.address, "127.0.0.1", sizeof(tester->endpoint.address));
+ break;
+ case AWS_SOCKET_IPV6:
+ strncpy(tester->endpoint.address, "::1", sizeof(tester->endpoint.address));
+ break;
+ default:
+ ASSERT_TRUE(false);
+ break;
+ }
tester->server_bootstrap = aws_server_bootstrap_new(allocator, s_c_tester->el_group);
ASSERT_NOT_NULL(tester->server_bootstrap);
@@ -316,6 +363,9 @@
tester->listener = aws_server_bootstrap_new_socket_listener(&bootstrap_options);
ASSERT_NOT_NULL(tester->listener);
+ /* find out which port the socket is bound to */
+ ASSERT_SUCCESS(aws_socket_get_bound_address(tester->listener, &tester->endpoint));
+
return AWS_OP_SUCCESS;
}
@@ -344,11 +394,12 @@
ASSERT_SUCCESS(s_socket_test_args_init(&client_args, &c_tester, client_rw_handler));
struct local_server_tester local_server_tester;
- ASSERT_SUCCESS(s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, true));
+ ASSERT_SUCCESS(
+ s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, AWS_SOCKET_LOCAL, true));
struct aws_client_bootstrap_options client_bootstrap_options = {
.event_loop_group = c_tester.el_group,
- .host_resolver = NULL,
+ .host_resolver = c_tester.resolver,
};
struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
ASSERT_NOT_NULL(client_bootstrap);
@@ -359,7 +410,7 @@
AWS_ZERO_STRUCT(client_channel_options);
client_channel_options.bootstrap = client_bootstrap;
client_channel_options.host_name = local_server_tester.endpoint.address;
- client_channel_options.port = 0;
+ client_channel_options.port = local_server_tester.endpoint.port;
client_channel_options.socket_options = &local_server_tester.socket_options;
client_channel_options.setup_callback = s_socket_handler_test_client_setup_callback;
client_channel_options.shutdown_callback = s_socket_handler_test_client_shutdown_callback;
@@ -371,10 +422,10 @@
ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
/* wait for both ends to setup */
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_pinned_channel_setup_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_pinned_channel_setup_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_pinned_channel_setup_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_pinned_channel_setup_predicate, &client_args));
/* Verify the client channel was placed on the requested event loop */
ASSERT_PTR_EQUALS(pinned_event_loop, aws_channel_get_event_loop(client_args.channel));
@@ -382,13 +433,13 @@
ASSERT_SUCCESS(aws_channel_shutdown(server_args.channel, AWS_OP_SUCCESS));
ASSERT_SUCCESS(aws_channel_shutdown(client_args.channel, AWS_OP_SUCCESS));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &client_args));
aws_server_bootstrap_destroy_socket_listener(local_server_tester.server_bootstrap, local_server_tester.listener);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_listener_destroy_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_listener_destroy_predicate, &server_args));
aws_mutex_unlock(&c_tester.mutex);
@@ -450,15 +501,9 @@
s_socket_common_tester_init(allocator, &c_tester);
- struct aws_host_resolver_default_options resolver_options = {
- .el_group = c_tester.el_group,
- .max_entries = 8,
- };
- struct aws_host_resolver *resolver = aws_host_resolver_new_default(allocator, &resolver_options);
-
struct aws_client_bootstrap_options client_bootstrap_options = {
.event_loop_group = c_tester.el_group,
- .host_resolver = resolver,
+ .host_resolver = c_tester.resolver,
};
struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
ASSERT_NOT_NULL(client_bootstrap);
@@ -487,8 +532,8 @@
ASSERT_SUCCESS(aws_client_bootstrap_new_socket_channel(&client_channel_options));
ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_dns_failure_channel_setup_predicate, &c_tester));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_dns_failure_channel_setup_predicate, &c_tester));
/* Verify the setup callback failure was on the requested event loop */
ASSERT_TRUE(c_tester.setup_error_code != 0);
@@ -496,7 +541,6 @@
aws_mutex_unlock(&c_tester.mutex);
aws_client_bootstrap_release(client_bootstrap);
- aws_host_resolver_release(resolver);
ASSERT_SUCCESS(s_socket_common_tester_clean_up(&c_tester));
return AWS_OP_SUCCESS;
@@ -556,11 +600,12 @@
ASSERT_SUCCESS(s_socket_test_args_init(&client_args, &c_tester, client_rw_handler));
struct local_server_tester local_server_tester;
- ASSERT_SUCCESS(s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, true));
+ ASSERT_SUCCESS(
+ s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, AWS_SOCKET_LOCAL, true));
struct aws_client_bootstrap_options client_bootstrap_options = {
.event_loop_group = c_tester.el_group,
- .host_resolver = NULL,
+ .host_resolver = c_tester.resolver,
};
struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
ASSERT_NOT_NULL(client_bootstrap);
@@ -569,7 +614,7 @@
AWS_ZERO_STRUCT(client_channel_options);
client_channel_options.bootstrap = client_bootstrap;
client_channel_options.host_name = local_server_tester.endpoint.address;
- client_channel_options.port = 0;
+ client_channel_options.port = local_server_tester.endpoint.port;
client_channel_options.socket_options = &local_server_tester.socket_options;
client_channel_options.setup_callback = s_socket_handler_test_client_setup_callback;
client_channel_options.shutdown_callback = s_socket_handler_test_client_shutdown_callback;
@@ -581,20 +626,20 @@
ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
/* wait for both ends to setup */
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &client_args));
/* send msg from client to server, and wait for some bytes to be received */
- rw_handler_write(client_args.rw_handler, aws_atomic_load_ptr(&client_args.rw_slot), &msg_from_client);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_read_predicate, &server_rw_args));
+ rw_handler_write(client_args.rw_handler, client_args.rw_slot, &msg_from_client);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_read_predicate, &server_rw_args));
/* send msg from server to client, and wait for some bytes to be received */
- rw_handler_write(server_args.rw_handler, aws_atomic_load_ptr(&server_args.rw_slot), &msg_from_server);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_read_predicate, &client_rw_args));
+ rw_handler_write(server_args.rw_handler, server_args.rw_slot, &msg_from_server);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_read_predicate, &client_rw_args));
/* confirm that the initial read window was respected */
server_rw_args.invocation_happened = false;
@@ -604,13 +649,13 @@
ASSERT_INT_EQUALS(s_server_initial_read_window, server_rw_args.amount_read);
/* increment the read window on both sides and confirm they receive the remainder of their message */
- rw_handler_trigger_increment_read_window(server_args.rw_handler, aws_atomic_load_ptr(&server_args.rw_slot), 100);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_full_read_predicate, &server_rw_args));
-
- rw_handler_trigger_increment_read_window(client_args.rw_handler, aws_atomic_load_ptr(&client_args.rw_slot), 100);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_full_read_predicate, &client_rw_args));
+ rw_handler_trigger_increment_read_window(server_args.rw_handler, server_args.rw_slot, 100);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_full_read_predicate, &server_rw_args));
+
+ rw_handler_trigger_increment_read_window(client_args.rw_handler, client_args.rw_slot, 100);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_full_read_predicate, &client_rw_args));
ASSERT_INT_EQUALS(msg_from_server.len, client_rw_args.amount_read);
ASSERT_INT_EQUALS(msg_from_client.len, server_rw_args.amount_read);
@@ -630,13 +675,13 @@
ASSERT_SUCCESS(aws_channel_shutdown(server_args.channel, AWS_OP_SUCCESS));
ASSERT_SUCCESS(aws_channel_shutdown(client_args.channel, AWS_OP_SUCCESS));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &client_args));
aws_server_bootstrap_destroy_socket_listener(local_server_tester.server_bootstrap, local_server_tester.listener);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_listener_destroy_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_listener_destroy_predicate, &server_args));
aws_mutex_unlock(&c_tester.mutex);
@@ -687,11 +732,12 @@
ASSERT_SUCCESS(s_socket_test_args_init(&client_args, &c_tester, client_rw_handler));
struct local_server_tester local_server_tester;
- ASSERT_SUCCESS(s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, false));
+ ASSERT_SUCCESS(
+ s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, AWS_SOCKET_LOCAL, false));
struct aws_client_bootstrap_options client_bootstrap_options = {
.event_loop_group = c_tester.el_group,
- .host_resolver = NULL,
+ .host_resolver = c_tester.resolver,
};
struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
ASSERT_NOT_NULL(client_bootstrap);
@@ -700,7 +746,7 @@
AWS_ZERO_STRUCT(client_channel_options);
client_channel_options.bootstrap = client_bootstrap;
client_channel_options.host_name = local_server_tester.endpoint.address;
- client_channel_options.port = 0;
+ client_channel_options.port = local_server_tester.endpoint.port;
client_channel_options.socket_options = &local_server_tester.socket_options;
client_channel_options.setup_callback = s_socket_handler_test_client_setup_callback;
client_channel_options.shutdown_callback = s_socket_handler_test_client_shutdown_callback;
@@ -711,24 +757,24 @@
ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
/* wait for both ends to setup */
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &client_args));
aws_channel_shutdown(server_args.channel, AWS_OP_SUCCESS);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &client_args));
ASSERT_INT_EQUALS(AWS_OP_SUCCESS, server_args.error_code);
ASSERT_TRUE(
AWS_IO_SOCKET_CLOSED == client_args.error_code || AWS_IO_SOCKET_NOT_CONNECTED == client_args.error_code);
aws_server_bootstrap_destroy_socket_listener(local_server_tester.server_bootstrap, local_server_tester.listener);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_listener_destroy_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_listener_destroy_predicate, &server_args));
aws_mutex_unlock(&c_tester.mutex);
@@ -743,6 +789,182 @@
AWS_TEST_CASE(socket_handler_close, s_socket_close_test)
+/* This is a regression test.
+ * Once upon a time, if the socket-handler received READABLE and HANGUP events simultaneously,
+ * it would read one last time from the socket before closing it. But one read may
+ * not be enough to get all remaining data. The correct thing is to do is
+ * repeatedly read until the read() call itself reports EOF or an error.
+ *
+ * Anyway, this test establishes a connection between server and client.
+ * The server sends a big chunk of data, and closes the socket immediately
+ * after the write completes. The client should still be able to read all the data. */
+static int s_socket_read_to_eof_after_peer_hangup_test_common(
+ struct aws_allocator *allocator,
+ void *ctx,
+ enum aws_socket_domain socket_domain) {
+
+ (void)ctx;
+ s_socket_common_tester_init(allocator, &c_tester);
+
+ const size_t total_bytes_to_send_from_server = g_aws_channel_max_fragment_size;
+
+ struct aws_byte_buf client_received_message;
+ ASSERT_SUCCESS(aws_byte_buf_init(&client_received_message, allocator, total_bytes_to_send_from_server));
+
+ struct aws_byte_buf msg_from_server;
+ ASSERT_SUCCESS(aws_byte_buf_init(&msg_from_server, allocator, total_bytes_to_send_from_server));
+
+ struct socket_test_rw_args server_rw_args;
+ ASSERT_SUCCESS(s_rw_args_init(&server_rw_args, &c_tester, aws_byte_buf_from_empty_array(NULL, 0), 0));
+
+ struct socket_test_rw_args client_rw_args;
+ ASSERT_SUCCESS(s_rw_args_init(&client_rw_args, &c_tester, client_received_message, 0));
+
+ /* NOTE: client starts with window=0, so we can VERY CAREFULLY control when it reads data from the socket */
+ struct aws_channel_handler *client_rw_handler = rw_handler_new(
+ allocator, s_socket_test_handle_read, s_socket_test_handle_write, true, 0 /*window*/, &client_rw_args);
+ ASSERT_NOT_NULL(client_rw_handler);
+
+ struct aws_channel_handler *server_rw_handler =
+ rw_handler_new(allocator, s_socket_test_handle_read, s_socket_test_handle_write, true, 10000, &server_rw_args);
+ ASSERT_NOT_NULL(server_rw_handler);
+
+ struct socket_test_args server_args;
+ ASSERT_SUCCESS(s_socket_test_args_init(&server_args, &c_tester, server_rw_handler));
+
+ struct socket_test_args client_args;
+ ASSERT_SUCCESS(s_socket_test_args_init(&client_args, &c_tester, client_rw_handler));
+
+ struct local_server_tester local_server_tester;
+ if (s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, socket_domain, false)) {
+ /* Skip test if server can't bind to address (e.g. Gith9ub's ubuntu runners don't allow IPv6) */
+ if (aws_last_error() == AWS_IO_SOCKET_INVALID_ADDRESS) {
+ return AWS_OP_SKIP;
+ } else {
+ ASSERT_TRUE(false, "s_local_server_tester_init() failed");
+ }
+ }
+
+ struct aws_client_bootstrap_options client_bootstrap_options = {
+ .event_loop_group = c_tester.el_group,
+ .host_resolver = c_tester.resolver,
+ };
+ struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
+ ASSERT_NOT_NULL(client_bootstrap);
+
+ struct aws_socket_channel_bootstrap_options client_channel_options = {
+ .bootstrap = client_bootstrap,
+ .host_name = local_server_tester.endpoint.address,
+ .port = local_server_tester.endpoint.port,
+ .socket_options = &local_server_tester.socket_options,
+ .setup_callback = s_socket_handler_test_client_setup_callback,
+ .shutdown_callback = s_socket_handler_test_client_shutdown_callback,
+ .user_data = &client_args,
+ .enable_read_back_pressure = true,
+ };
+
+ ASSERT_SUCCESS(aws_client_bootstrap_new_socket_channel(&client_channel_options));
+
+ ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
+
+ /* wait for both ends to setup */
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &client_args));
+
+ /* We want the server to send some data and hang up IMMEDIATELY after,
+ * before the client has fully read the data. This is tricky to do in a test.
+ *
+ * First, have the server send data... */
+ ASSERT_TRUE(aws_byte_buf_write_u8_n(&msg_from_server, 's', total_bytes_to_send_from_server));
+ rw_handler_write_with_callback(
+ server_rw_handler,
+ server_args.rw_slot,
+ &msg_from_server,
+ s_socket_test_handle_on_write_completed,
+ &server_rw_args);
+
+ /* ...now have the client open its read window and receive data in tiny chunks,
+ * stopping once the server has sent all data, but BEFORE the client has read all data.
+ * This is possible because the client's OS will buffer a certain amount of
+ * incoming data, before the client application calls read() on it. */
+ while (server_rw_args.amount_written < total_bytes_to_send_from_server) {
+ const size_t client_read_chunk_size = 128;
+ client_rw_args.expected_read += client_read_chunk_size;
+ rw_handler_trigger_increment_read_window(client_args.rw_handler, client_args.rw_slot, client_read_chunk_size);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable,
+ &c_tester.mutex,
+ TIMEOUT,
+ s_socket_test_full_read_predicate,
+ &client_rw_args));
+ }
+
+ /* Now close the server's socket.*/
+ ASSERT_SUCCESS(aws_channel_shutdown(server_args.channel, AWS_OP_SUCCESS));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &server_args));
+
+ /* Now sleep a moment to 100% guarantee the OS propagates the socket-close event to the client-side. */
+ aws_mutex_unlock(&c_tester.mutex);
+ aws_thread_current_sleep(NANOS_PER_SEC / 4);
+ aws_mutex_lock(&c_tester.mutex);
+
+ /* Ensure the client hasn't shut down before reading all the data. */
+ ASSERT_FALSE(client_args.shutdown_invoked, "Client should read all data before shutting down.");
+
+ /* Ensure the client hasn't read all data yet */
+ ASSERT_TRUE(
+ client_rw_args.amount_read < total_bytes_to_send_from_server,
+ "If this fails, then we're not truly reproducing the regression test."
+ " The server needs to finish sending data, and close the socket,"
+ " BEFORE the client reads all the data.");
+
+ /* Have the client open its window more-than-enough to receive the rest of the data.
+ * If the client socket closes before all the data is received, then we still have the bug. */
+ rw_handler_trigger_increment_read_window(
+ client_args.rw_handler, client_args.rw_slot, total_bytes_to_send_from_server * 3 /*more-than-enough*/);
+ client_rw_args.expected_read = total_bytes_to_send_from_server;
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_full_read_predicate, &client_rw_args));
+
+ /* Wait for client to shutdown, due to the server having closed the socket */
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &client_args));
+
+ aws_server_bootstrap_destroy_socket_listener(local_server_tester.server_bootstrap, local_server_tester.listener);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_listener_destroy_predicate, &server_args));
+
+ ASSERT_INT_EQUALS(AWS_IO_SOCKET_CLOSED, client_args.error_code);
+
+ aws_mutex_unlock(&c_tester.mutex);
+
+ /* clean up */
+ ASSERT_SUCCESS(s_local_server_tester_clean_up(&local_server_tester));
+ aws_byte_buf_clean_up(&client_received_message);
+ aws_byte_buf_clean_up(&msg_from_server);
+ aws_client_bootstrap_release(client_bootstrap);
+ ASSERT_SUCCESS(s_socket_common_tester_clean_up(&c_tester));
+
+ return AWS_OP_SUCCESS;
+}
+static int s_socket_read_to_eof_after_peer_hangup_test(struct aws_allocator *allocator, void *ctx) {
+ return s_socket_read_to_eof_after_peer_hangup_test_common(allocator, ctx, AWS_SOCKET_LOCAL);
+}
+AWS_TEST_CASE(socket_handler_read_to_eof_after_peer_hangup, s_socket_read_to_eof_after_peer_hangup_test)
+
+static int s_socket_ipv4_read_to_eof_after_peer_hangup_test(struct aws_allocator *allocator, void *ctx) {
+ return s_socket_read_to_eof_after_peer_hangup_test_common(allocator, ctx, AWS_SOCKET_IPV4);
+}
+AWS_TEST_CASE(socket_handler_ipv4_read_to_eof_after_peer_hangup, s_socket_ipv4_read_to_eof_after_peer_hangup_test)
+
+static int s_socket_ipv6_read_to_eof_after_peer_hangup_test(struct aws_allocator *allocator, void *ctx) {
+ return s_socket_read_to_eof_after_peer_hangup_test_common(allocator, ctx, AWS_SOCKET_IPV6);
+}
+AWS_TEST_CASE(socket_handler_ipv6_read_to_eof_after_peer_hangup, s_socket_ipv6_read_to_eof_after_peer_hangup_test)
+
static void s_creation_callback_test_channel_creation_callback(
struct aws_client_bootstrap *bootstrap,
int error_code,
@@ -843,12 +1065,13 @@
ASSERT_SUCCESS(s_socket_test_args_init(&client_args, &c_tester, client_rw_handler));
struct local_server_tester local_server_tester;
- ASSERT_SUCCESS(s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, false));
+ ASSERT_SUCCESS(
+ s_local_server_tester_init(allocator, &local_server_tester, &server_args, &c_tester, AWS_SOCKET_LOCAL, false));
struct aws_client_bootstrap_options client_bootstrap_options;
AWS_ZERO_STRUCT(client_bootstrap_options);
client_bootstrap_options.event_loop_group = c_tester.el_group;
- client_bootstrap_options.host_resolver = NULL;
+ client_bootstrap_options.host_resolver = c_tester.resolver;
struct aws_client_bootstrap *client_bootstrap = aws_client_bootstrap_new(allocator, &client_bootstrap_options);
ASSERT_NOT_NULL(client_bootstrap);
@@ -857,7 +1080,7 @@
AWS_ZERO_STRUCT(client_channel_options);
client_channel_options.bootstrap = client_bootstrap;
client_channel_options.host_name = local_server_tester.endpoint.address;
- client_channel_options.port = 0;
+ client_channel_options.port = local_server_tester.endpoint.port;
client_channel_options.socket_options = &local_server_tester.socket_options;
client_channel_options.creation_callback = s_creation_callback_test_channel_creation_callback;
client_channel_options.setup_callback = s_socket_handler_test_client_setup_callback;
@@ -869,22 +1092,20 @@
ASSERT_SUCCESS(aws_mutex_lock(&c_tester.mutex));
/* wait for both ends to setup */
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_setup_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_setup_predicate, &client_args));
ASSERT_TRUE(client_args.creation_callback_invoked);
- struct aws_channel_slot *client_rw_slot = aws_atomic_load_ptr(&client_args.rw_slot);
- rw_handler_write(client_args.rw_handler, client_rw_slot, &msg_from_client);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_read_predicate, &server_rw_args));
-
- struct aws_channel_slot *server_rw_slot = aws_atomic_load_ptr(&server_args.rw_slot);
- rw_handler_write(server_args.rw_handler, server_rw_slot, &msg_from_server);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_socket_test_read_predicate, &client_rw_args));
+ rw_handler_write(client_args.rw_handler, client_args.rw_slot, &msg_from_client);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_read_predicate, &server_rw_args));
+
+ rw_handler_write(server_args.rw_handler, server_args.rw_slot, &msg_from_server);
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_socket_test_read_predicate, &client_rw_args));
uint64_t ms_to_ns = aws_timestamp_convert(1, AWS_TIMESTAMP_MILLIS, AWS_TIMESTAMP_NANOS, NULL);
@@ -894,8 +1115,8 @@
struct aws_statistics_handler_test_impl *stats_impl = stats_handler->impl;
aws_mutex_lock(&stats_impl->lock);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &stats_impl->signal, &stats_impl->lock, s_stats_processed_predicate, stats_handler));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &stats_impl->signal, &stats_impl->lock, TIMEOUT, s_stats_processed_predicate, stats_handler));
ASSERT_TRUE(stats_impl->total_bytes_read == msg_from_server.len);
ASSERT_TRUE(stats_impl->total_bytes_written == msg_from_client.len);
@@ -904,14 +1125,14 @@
aws_channel_shutdown(server_args.channel, AWS_OP_SUCCESS);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &server_args));
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_channel_shutdown_predicate, &client_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_channel_shutdown_predicate, &client_args));
aws_server_bootstrap_destroy_socket_listener(local_server_tester.server_bootstrap, local_server_tester.listener);
- ASSERT_SUCCESS(aws_condition_variable_wait_pred(
- &c_tester.condition_variable, &c_tester.mutex, s_listener_destroy_predicate, &server_args));
+ ASSERT_SUCCESS(aws_condition_variable_wait_for_pred(
+ &c_tester.condition_variable, &c_tester.mutex, TIMEOUT, s_listener_destroy_predicate, &server_args));
aws_mutex_unlock(&c_tester.mutex);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-common for openSUSE:Factory checked in at 2024-06-06 12:34:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-common (Old)
and /work/SRC/openSUSE:Factory/.aws-c-common.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-common"
Thu Jun 6 12:34:24 2024 rev:7 rq:1178904 version:0.9.20
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-common/aws-c-common.changes 2024-05-16 17:15:44.289146206 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-common.new.24587/aws-c-common.changes 2024-06-06 12:34:58.633631363 +0200
@@ -1,0 +2,11 @@
+Wed Jun 5 09:45:21 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.9.20
+ * Task scheduler: log at TRACE, instead of DEBUG by @graebm in (#1115)
+ * Update CJson to v1.7.18 by @waahm7 in (#1116)
+ * Avoid overflowing pointers passed to memcpy by @qinheping in (#874)
+ * Fix test skipping by @graebm in (#1118)
+ * Fix CMake Windows ARM typo by @graebm in (#1119)
+ * Fix weird decimal formatting in tests by @graebm in (#1121)
+
+-------------------------------------------------------------------
Old:
----
v0.9.19.tar.gz
New:
----
v0.9.20.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-common.spec ++++++
--- /var/tmp/diff_new_pack.7CX75f/_old 2024-06-06 12:35:00.093684571 +0200
+++ /var/tmp/diff_new_pack.7CX75f/_new 2024-06-06 12:35:00.101684863 +0200
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 1
Name: aws-c-common
-Version: 0.9.19
+Version: 0.9.20
Release: 0
Summary: Core C99 package for AWS SDK for C
License: Apache-2.0
++++++ v0.9.19.tar.gz -> v0.9.20.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/.github/workflows/ci.yml new/aws-c-common-0.9.20/.github/workflows/ci.yml
--- old/aws-c-common-0.9.19/.github/workflows/ci.yml 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/.github/workflows/ci.yml 2024-06-04 01:59:27.000000000 +0200
@@ -125,7 +125,7 @@
python builder.pyz build -p ${{ env.PACKAGE_NAME }} --target windows-${{ matrix.arch }} --compiler msvc-16
windows-vc15:
- runs-on: windows-2022 # latest
+ runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2017 (v15.0)
strategy:
matrix:
arch: [x86, x64]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/CMakeLists.txt new/aws-c-common-0.9.20/CMakeLists.txt
--- old/aws-c-common-0.9.19/CMakeLists.txt 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/CMakeLists.txt 2024-06-04 01:59:27.000000000 +0200
@@ -152,7 +152,7 @@
)
endif()
elseif (AWS_ARCH_ARM64 OR AWS_ARCH_ARM32)
- if (WINDOWS)
+ if (WIN32)
file(GLOB AWS_COMMON_ARCH_SRC
"source/arch/arm/windows/*.c"
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/cmake/AwsTestHarness.cmake new/aws-c-common-0.9.20/cmake/AwsTestHarness.cmake
--- old/aws-c-common-0.9.19/cmake/AwsTestHarness.cmake 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/cmake/AwsTestHarness.cmake 2024-06-04 01:59:27.000000000 +0200
@@ -59,6 +59,7 @@
foreach(name IN LISTS TEST_CASES)
add_test(${name} ${driver_exe_name} "${name}")
+ set_tests_properties("${name}" PROPERTIES SKIP_RETURN_CODE ${SKIP_RETURN_CODE_VALUE})
endforeach()
# Clear test cases in case another driver needs to be generated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/include/aws/testing/aws_test_harness.h new/aws-c-common-0.9.20/include/aws/testing/aws_test_harness.h
--- old/aws-c-common-0.9.19/include/aws/testing/aws_test_harness.h 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/include/aws/testing/aws_test_harness.h 2024-06-04 01:59:27.000000000 +0200
@@ -83,18 +83,6 @@
* that may be returned from various tools (e.g. sanitizer). */
#define SKIP (103)
-#define POSTSKIP_INTERNAL() \
- do { \
- return SKIP; \
- } while (0)
-
-#define RETURN_SKIP(format, ...) \
- do { \
- printf(format, ##__VA_ARGS__); \
- printf("\n"); \
- POSTSKIP_INTERNAL(); \
- } while (0)
-
#define RETURN_SUCCESS(format, ...) \
do { \
printf(format, ##__VA_ARGS__); \
@@ -147,7 +135,7 @@
if (assert_rv != AWS_OP_SUCCESS) { \
if (!PRINT_FAIL_INTERNAL0(__VA_ARGS__)) { \
PRINT_FAIL_INTERNAL0( \
- "Expected success at %s; got return value %d with last error 0x%04d\n", \
+ "Expected success at %s; got return value %d with last error %d\n", \
#condition, \
assert_rv, \
aws_last_error()); \
@@ -162,7 +150,7 @@
if (assert_rv != AWS_OP_ERR) { \
if (!PRINT_FAIL_INTERNAL0(__VA_ARGS__)) { \
PRINT_FAIL_INTERNAL0( \
- "Expected failure at %s; got return value %d with last error 0x%04d\n", \
+ "Expected failure at %s; got return value %d with last error %d\n", \
#condition, \
assert_rv, \
aws_last_error()); \
@@ -179,7 +167,7 @@
if (assert_rv != AWS_OP_ERR) { \
fprintf( \
AWS_TESTING_REPORT_FD, \
- "%sExpected error but no error occurred; rv=%d, aws_last_error=%04d (expected %04d): ", \
+ "%sExpected error but no error occurred; rv=%d, aws_last_error=%d (expected %d): ", \
FAIL_PREFIX, \
assert_rv, \
assert_err, \
@@ -192,7 +180,7 @@
if (assert_err != assert_err_expect) { \
fprintf( \
AWS_TESTING_REPORT_FD, \
- "%sIncorrect error code; aws_last_error=%04d (expected %04d): ", \
+ "%sIncorrect error code; aws_last_error=%d (expected %d): ", \
FAIL_PREFIX, \
assert_err, \
assert_err_expect); \
@@ -468,7 +456,7 @@
test_res |= harness->on_after(allocator, setup_res, harness->ctx);
}
- if (test_res != AWS_OP_SUCCESS && test_res != AWS_OP_SKIP) {
+ if (test_res != AWS_OP_SUCCESS) {
goto fail;
}
@@ -492,21 +480,21 @@
aws_logger_set(NULL);
aws_logger_clean_up(&err_logger);
- if (test_res == AWS_OP_SUCCESS) {
- RETURN_SUCCESS("%s [ \033[32mOK\033[0m ]", harness->test_name);
- } else if (test_res == AWS_OP_SKIP) {
- RETURN_SKIP("%s [ \033[32mSKIP\033[0m ]", harness->test_name);
- }
+ RETURN_SUCCESS("%s [ \033[32mOK\033[0m ]", harness->test_name);
fail:
- PRINT_FAIL_WITHOUT_LOCATION("%s [ \033[31mFAILED\033[0m ]", harness->test_name);
+ if (test_res == AWS_OP_SKIP) {
+ fprintf(AWS_TESTING_REPORT_FD, "%s [ \033[32mSKIP\033[0m ]\n", harness->test_name);
+ } else {
+ PRINT_FAIL_WITHOUT_LOCATION("%s [ \033[31mFAILED\033[0m ]", harness->test_name);
+ }
/* Use _Exit() to terminate without cleaning up resources.
* This prevents LeakSanitizer spam (yes, we know failing tests don't bother cleaning up).
* It also prevents errors where threads that haven't cleaned are still using the logger declared in this fn. */
fflush(AWS_TESTING_REPORT_FD);
fflush(stdout);
fflush(stderr);
- _Exit(FAILURE);
+ _Exit(test_res == AWS_OP_SKIP ? SKIP : FAILURE);
}
/* Enables terminal escape sequences for text coloring on Windows. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/source/array_list.c new/aws-c-common-0.9.20/source/array_list.c
--- old/aws-c-common-0.9.19/source/array_list.c 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/source/array_list.c 2024-06-04 01:59:27.000000000 +0200
@@ -184,9 +184,12 @@
}
size_t remainder = item_size & (SLICE - 1); /* item_size % SLICE */
- memcpy((void *)temp, (void *)item1, remainder);
- memcpy((void *)item1, (void *)item2, remainder);
- memcpy((void *)item2, (void *)temp, remainder);
+
+ if (remainder) {
+ memcpy((void *)temp, (void *)item1, remainder);
+ memcpy((void *)item1, (void *)item2, remainder);
+ memcpy((void *)item2, (void *)temp, remainder);
+ }
}
void aws_array_list_swap(struct aws_array_list *AWS_RESTRICT list, size_t a, size_t b) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/source/external/cJSON.c new/aws-c-common-0.9.20/source/external/cJSON.c
--- old/aws-c-common-0.9.19/source/external/cJSON.c 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/source/external/cJSON.c 2024-06-04 01:59:27.000000000 +0200
@@ -127,7 +127,7 @@
}
/* This is a safeguard to prevent copy-pasters from using incompatible C and header files */
-#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 17)
+#if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 18)
#error cJSON.h and cJSON.c have different versions. Make sure that both have the same.
#endif
@@ -273,10 +273,12 @@
if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL))
{
global_hooks.deallocate(item->valuestring);
+ item->valuestring = NULL;
}
if (!(item->type & cJSON_StringIsConst) && (item->string != NULL))
{
global_hooks.deallocate(item->string);
+ item->string = NULL;
}
global_hooks.deallocate(item);
item = next;
@@ -407,6 +409,7 @@
return object->valuedouble = number;
}
+/* Note: when passing a NULL valuestring, cJSON_SetValuestring treats this as an error and return NULL */
CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring)
{
char *copy = NULL;
@@ -415,8 +418,8 @@
{
return NULL;
}
- /* return NULL if the object is corrupted */
- if (object->valuestring == NULL)
+ /* return NULL if the object is corrupted or valuestring is NULL */
+ if (object->valuestring == NULL || valuestring == NULL)
{
return NULL;
}
@@ -903,6 +906,7 @@
if (output != NULL)
{
input_buffer->hooks.deallocate(output);
+ output = NULL;
}
if (input_pointer != NULL)
@@ -1249,6 +1253,7 @@
/* free the buffer */
hooks->deallocate(buffer->buffer);
+ buffer->buffer = NULL;
}
return printed;
@@ -1257,11 +1262,13 @@
if (buffer->buffer != NULL)
{
hooks->deallocate(buffer->buffer);
+ buffer->buffer = NULL;
}
if (printed != NULL)
{
hooks->deallocate(printed);
+ printed = NULL;
}
return NULL;
@@ -1302,6 +1309,7 @@
if (!print_value(item, &p))
{
global_hooks.deallocate(p.buffer);
+ p.buffer = NULL;
return NULL;
}
@@ -1673,6 +1681,11 @@
current_item = new_item;
}
+ if (cannot_access_at_index(input_buffer, 1))
+ {
+ goto fail; /* nothing comes after the comma */
+ }
+
/* parse the name of the child */
input_buffer->offset++;
buffer_skip_whitespace(input_buffer);
@@ -3140,6 +3153,7 @@
CJSON_PUBLIC(void) cJSON_free(void *object)
{
global_hooks.deallocate(object);
+ object = NULL;
}
/* Amazon edit */
/* NOLINTEND */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/source/external/cJSON.h new/aws-c-common-0.9.20/source/external/cJSON.h
--- old/aws-c-common-0.9.19/source/external/cJSON.h 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/source/external/cJSON.h 2024-06-04 01:59:27.000000000 +0200
@@ -88,7 +88,7 @@
/* project version */
#define CJSON_VERSION_MAJOR 1
#define CJSON_VERSION_MINOR 7
-#define CJSON_VERSION_PATCH 17
+#define CJSON_VERSION_PATCH 18
#include <stddef.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/source/task_scheduler.c new/aws-c-common-0.9.20/source/task_scheduler.c
--- old/aws-c-common-0.9.19/source/task_scheduler.c 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/source/task_scheduler.c 2024-06-04 01:59:27.000000000 +0200
@@ -33,7 +33,7 @@
void aws_task_run(struct aws_task *task, enum aws_task_status status) {
AWS_ASSERT(task->fn);
- AWS_LOGF_DEBUG(
+ AWS_LOGF_TRACE(
AWS_LS_COMMON_TASK_SCHEDULER,
"id=%p: Running %s task with %s status",
(void *)task,
@@ -129,7 +129,7 @@
AWS_ASSERT(task);
AWS_ASSERT(task->fn);
- AWS_LOGF_DEBUG(
+ AWS_LOGF_TRACE(
AWS_LS_COMMON_TASK_SCHEDULER,
"id=%p: Scheduling %s task for immediate execution",
(void *)task,
@@ -152,7 +152,7 @@
AWS_ASSERT(task);
AWS_ASSERT(task->fn);
- AWS_LOGF_DEBUG(
+ AWS_LOGF_TRACE(
AWS_LS_COMMON_TASK_SCHEDULER,
"id=%p: Scheduling %s task for future execution at time %" PRIu64,
(void *)task,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.19/tests/thread_test.c new/aws-c-common-0.9.20/tests/thread_test.c
--- old/aws-c-common-0.9.19/tests/thread_test.c 2024-05-11 01:22:14.000000000 +0200
+++ new/aws-c-common-0.9.20/tests/thread_test.c 2024-06-04 01:59:27.000000000 +0200
@@ -243,7 +243,7 @@
/*
* Increase the timeout and shut down
*/
- aws_thread_set_managed_join_timeout_ns(aws_timestamp_convert(5, AWS_TIMESTAMP_SECS, AWS_TIMESTAMP_NANOS, NULL));
+ aws_thread_set_managed_join_timeout_ns(aws_timestamp_convert(10, AWS_TIMESTAMP_SECS, AWS_TIMESTAMP_NANOS, NULL));
aws_common_library_clean_up();
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-http for openSUSE:Factory checked in at 2024-06-06 12:34:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-http (Old)
and /work/SRC/openSUSE:Factory/.aws-c-http.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-http"
Thu Jun 6 12:34:23 2024 rev:3 rq:1178902 version:0.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-http/aws-c-http.changes 2024-02-21 17:59:15.289461650 +0100
+++ /work/SRC/openSUSE:Factory/.aws-c-http.new.24587/aws-c-http.changes 2024-06-06 12:34:57.349584570 +0200
@@ -1,0 +2,8 @@
+Wed Jun 5 09:52:17 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.8.2
+ * Mark some missing Network tests as net_tests. by @waahm7 in (#465)
+ * Add test where connection shuts down before response completes
+ by @graebm in (#468)
+
+-------------------------------------------------------------------
Old:
----
v0.8.1.tar.gz
New:
----
v0.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-http.spec ++++++
--- /var/tmp/diff_new_pack.qvPAn4/_old 2024-06-06 12:34:57.933605853 +0200
+++ /var/tmp/diff_new_pack.qvPAn4/_new 2024-06-06 12:34:57.933605853 +0200
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 1_0_0
Name: aws-c-http
-Version: 0.8.1
+Version: 0.8.2
Release: 0
Summary: C99 implementation of the HTTP/1.1 and HTTP/2 specifications
License: Apache-2.0
++++++ v0.8.1.tar.gz -> v0.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.1/tests/CMakeLists.txt new/aws-c-http-0.8.2/tests/CMakeLists.txt
--- old/aws-c-http-0.8.1/tests/CMakeLists.txt 2024-02-13 22:07:29.000000000 +0100
+++ new/aws-c-http-0.8.2/tests/CMakeLists.txt 2024-05-30 19:54:21.000000000 +0200
@@ -121,7 +121,8 @@
add_test_case(h1_client_respects_stream_window)
add_test_case(h1_client_connection_window_with_buffer)
add_test_case(h1_client_connection_window_with_small_buffer)
-add_test_case(h1_client_request_cancelled_by_channel_shutdown)
+add_test_case(h1_client_request_cancelled_by_channel_shutdown_before_response)
+add_test_case(h1_client_request_cancelled_by_channel_shutdown_mid_response)
add_test_case(h1_client_multiple_requests_cancelled_by_channel_shutdown)
add_test_case(h1_client_new_request_fails_if_channel_shut_down)
add_test_case(h1_client_error_from_outgoing_body_callback_stops_decoder)
@@ -500,13 +501,13 @@
add_test_case(server_new_destroy)
add_test_case(server_new_destroy_tcp)
add_test_case(connection_setup_shutdown)
-add_test_case(connection_setup_shutdown_tls)
+add_net_test_case(connection_setup_shutdown_tls)
add_test_case(connection_setup_shutdown_proxy_setting_on_ev_not_found)
add_test_case(connection_setup_shutdown_pinned_event_loop)
add_test_case(connection_h2_prior_knowledge)
add_test_case(connection_h2_prior_knowledge_not_work_with_tls)
-add_test_case(connection_customized_alpn)
-add_test_case(connection_customized_alpn_error_with_unknown_return_string)
+add_net_test_case(connection_customized_alpn)
+add_net_test_case(connection_customized_alpn_error_with_unknown_return_string)
# These server tests occasionally fail. Resurrect if/when we get back to work on HTTP server.
# add_test_case(connection_destroy_server_with_connection_existing)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.1/tests/test_h1_client.c new/aws-c-http-0.8.2/tests/test_h1_client.c
--- old/aws-c-http-0.8.1/tests/test_h1_client.c 2024-02-13 22:07:29.000000000 +0100
+++ new/aws-c-http-0.8.2/tests/test_h1_client.c 2024-05-30 19:54:21.000000000 +0200
@@ -3273,7 +3273,8 @@
return AWS_OP_SUCCESS;
}
-H1_CLIENT_TEST_CASE(h1_client_request_cancelled_by_channel_shutdown) {
+/* If channel shuts down before any response is received, the request should complete with an error */
+H1_CLIENT_TEST_CASE(h1_client_request_cancelled_by_channel_shutdown_before_response) {
(void)ctx;
struct tester tester;
ASSERT_SUCCESS(s_tester_init(&tester, allocator));
@@ -3310,6 +3311,45 @@
ASSERT_SUCCESS(s_tester_clean_up(&tester));
return AWS_OP_SUCCESS;
}
+
+/* If channel shuts down in the middle of a response, the request should complete with an error */
+H1_CLIENT_TEST_CASE(h1_client_request_cancelled_by_channel_shutdown_mid_response) {
+ (void)ctx;
+ struct tester tester;
+ ASSERT_SUCCESS(s_tester_init(&tester, allocator));
+
+ /* send request */
+ struct aws_http_message *request = s_new_default_get_request(allocator);
+
+ struct client_stream_tester stream_tester;
+ ASSERT_SUCCESS(s_stream_tester_init(&stream_tester, &tester, request));
+
+ testing_channel_drain_queued_tasks(&tester.testing_channel);
+
+ /* Ensure the request can be destroyed after request is sent */
+ aws_http_message_destroy(request);
+
+ /* send response that is 1 byte short of being complete */
+ const char *response_str = "HTTP/1.1 200 OK\r\n"
+ "Content-Length: 4\r\n"
+ "\r\n"
+ "123";
+ ASSERT_SUCCESS(testing_channel_push_read_str(&tester.testing_channel, response_str));
+
+ /* shutdown channel while response is 1 byte short of being complete */
+ aws_channel_shutdown(tester.testing_channel.channel, AWS_ERROR_SUCCESS);
+ testing_channel_drain_queued_tasks(&tester.testing_channel);
+
+ /* the request should complete with error, having only received a partial response */
+ ASSERT_TRUE(stream_tester.complete);
+ ASSERT_INT_EQUALS(AWS_ERROR_HTTP_CONNECTION_CLOSED, stream_tester.on_complete_error_code);
+ ASSERT_UINT_EQUALS(3, stream_tester.response_body.len);
+
+ /* clean up */
+ client_stream_tester_clean_up(&stream_tester);
+ ASSERT_SUCCESS(s_tester_clean_up(&tester));
+ return AWS_OP_SUCCESS;
+}
H1_CLIENT_TEST_CASE(h1_client_multiple_requests_cancelled_by_channel_shutdown) {
(void)ctx;
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package just for openSUSE:Factory checked in at 2024-06-06 12:34:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/just (Old)
and /work/SRC/openSUSE:Factory/.just.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "just"
Thu Jun 6 12:34:17 2024 rev:13 rq:1178895 version:1.28.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/just/just.changes 2024-05-27 12:03:38.099044410 +0200
+++ /work/SRC/openSUSE:Factory/.just.new.24587/just.changes 2024-06-06 12:34:53.321437775 +0200
@@ -1,0 +2,30 @@
+Thu Jun 06 01:50:27 UTC 2024 - rrahl0(a)disroot.org
+
+- Update to version 1.28.0:
+ * Fix man page generation in release workflow (#2132)
+ * Release 1.28.0 (#2131)
+ * Don't check in manpage (#2130)
+ * Document default shell (#2129)
+ * Write shebang recipes to $XDG_RUNTIME_DIR (#2128)
+ * Remove duplicate section in Chinese readme (#2127)
+ * Update Chinese readme (#2124)
+ * Fix typo in readme (#2122)
+ * Don't check in auto-generated completion scripts (#2120)
+ * Add `set dotenv-required` to require an environment file (#2116)
+ * Allow listing recipes in submodules with `--list-submodules` (#2113)
+ * Use space-separated recipe paths in `--choose` (#2115)
+ * Don't display submodule recipes in `--list` (#2112)
+ * Show recipes in submodules with `--show RECIPE::PATH` (#2111)
+ * Add `--timestamp-format` (#2106)
+ * Allow listing submodule recipes with `--list PATH` (#2108)
+ * Print recipe command timestamps with `--timestamps` (#2084)
+ * Add `module_file()` and `module_directory()` functions (#2105)
+ * Fix bash completion for aliases (#2104)
+ * Document when dependencies run in readme (#2103)
+ * Build aarch64-pc-windows-msvc release binaries (#2100)
+ * Clarify that `dotenv-path`-given env file is required (#2099)
+ * Print multi-line doc comments before recipe in `--list` (#2090)
+ * List unsorted imported recipes by import depth and offset (#2092)
+ * Update README.md (#2091)
+
+-------------------------------------------------------------------
Old:
----
just-1.27.0.tar.zst
New:
----
just-1.28.0.tar.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ just.spec ++++++
--- /var/tmp/diff_new_pack.7eDPFt/_old 2024-06-06 12:34:54.301473490 +0200
+++ /var/tmp/diff_new_pack.7eDPFt/_new 2024-06-06 12:34:54.301473490 +0200
@@ -17,7 +17,7 @@
Name: just
-Version: 1.27.0
+Version: 1.28.0
Release: 0
Summary: Commmand runner
License: (Apache-2.0 OR MIT) AND Unicode-DFS-2016 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (MIT OR Unlicense) AND Apache-2.0 AND BSD-3-Clause AND CC0-1.0 AND MIT AND CC0-1.0
@@ -25,9 +25,10 @@
URL: https://github.com/casey/just
Source0: %{name}-%{version}.tar.zst
Source1: vendor.tar.zst
-#for some reason this test fails on OBS, but runs fine locally
+# this test only fails on OBS, locally it runs fine
Patch0: ignore-test.patch
BuildRequires: cargo-packaging
+BuildRequires: git-core
BuildRequires: zstd
%description
@@ -70,6 +71,9 @@
%build
%{cargo_build} --all-features
+./target/release/just --completions bash > completions/just.bash
+./target/release/just --completions fish > completions/just.fish
+./target/release/just --completions zsh > completions/just.zsh
%install
%{cargo_install} --all-features
++++++ _service ++++++
--- /var/tmp/diff_new_pack.7eDPFt/_old 2024-06-06 12:34:54.341474947 +0200
+++ /var/tmp/diff_new_pack.7eDPFt/_new 2024-06-06 12:34:54.345475093 +0200
@@ -5,8 +5,9 @@
<param name="scm">git</param>
<param name="exclude">.github</param>
<param name="exclude">www</param>
- <param name="revision">1.27.0</param>
+ <param name="revision">1.28.0</param>
<param name="changesgenerate">enable</param>
+ <param name="package-meta">yes</param>
</service>
<service name="recompress" mode="manual">
<param name="file">*.tar</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.7eDPFt/_old 2024-06-06 12:34:54.381476406 +0200
+++ /var/tmp/diff_new_pack.7eDPFt/_new 2024-06-06 12:34:54.385476551 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/casey/just</param>
- <param name="changesrevision">cf3141306e407342dd3cfa563ac66fd86b5ffdc8</param></service></servicedata>
+ <param name="changesrevision">3ddd1b168308db2b88daac9ea70a3b63629ef034</param></service></servicedata>
(No newline at EOF)
++++++ just-1.27.0.tar.zst -> just-1.28.0.tar.zst ++++++
++++ 6408 lines of diff (skipped)
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/just/vendor.tar.zst /work/SRC/openSUSE:Factory/.just.new.24587/vendor.tar.zst differ: char 128733, line 541
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package eza for openSUSE:Factory checked in at 2024-06-06 12:34:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/eza (Old)
and /work/SRC/openSUSE:Factory/.eza.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "eza"
Thu Jun 6 12:34:15 2024 rev:36 rq:1178893 version:0.18.17+0
Changes:
--------
--- /work/SRC/openSUSE:Factory/eza/eza.changes 2024-05-17 20:07:43.180925740 +0200
+++ /work/SRC/openSUSE:Factory/.eza.new.24587/eza.changes 2024-06-06 12:34:51.205360660 +0200
@@ -1,0 +2,10 @@
+Thu Jun 6 06:08:40 UTC 2024 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 0.18.7:
+ * Add icon for Nushell extension
+ * Bump trycmd from 0.15.1 to 0.15.2
+ * Bump libc from 0.2.154 to 0.2.155
+- Disable cargo vendor filterer for now:
+ Seems to have a problem with true/false right now
+
+-------------------------------------------------------------------
Old:
----
eza-0.18.16+0.obscpio
New:
----
eza-0.18.17+0.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ eza.spec ++++++
--- /var/tmp/diff_new_pack.zFWpQJ/_old 2024-06-06 12:34:52.561410078 +0200
+++ /var/tmp/diff_new_pack.zFWpQJ/_new 2024-06-06 12:34:52.565410223 +0200
@@ -17,7 +17,7 @@
Name: eza
-Version: 0.18.16+0
+Version: 0.18.17+0
Release: 0
Summary: Replacement for ls written in Rust
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.zFWpQJ/_old 2024-06-06 12:34:52.613411973 +0200
+++ /var/tmp/diff_new_pack.zFWpQJ/_new 2024-06-06 12:34:52.617412119 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/eza-community/eza.git</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="scm">git</param>
- <param name="revision">v0.18.16</param>
+ <param name="revision">v0.18.17</param>
<param name="match-tag">*</param>
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
<param name="versionrewrite-replacement">\1</param>
@@ -18,7 +18,6 @@
<param name="srcdir">eza</param>
<param name="compression">zst</param>
<param name="update">true</param>
- <param name="filter">true</param>
</service>
<service name="cargo_audit" mode="manual">
<param name="srcdir">eza</param>
++++++ eza-0.18.16+0.obscpio -> eza-0.18.17+0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eza-0.18.16+0/CHANGELOG.md new/eza-0.18.17+0/CHANGELOG.md
--- old/eza-0.18.16+0/CHANGELOG.md 2024-05-16 16:39:21.000000000 +0200
+++ new/eza-0.18.17+0/CHANGELOG.md 2024-06-05 20:43:27.000000000 +0200
@@ -1,5 +1,16 @@
# Changelog
+## [0.18.17] - 2024-06-05
+
+### Features
+
+- Add icon for Nushell extension
+
+### Build
+
+- Bump trycmd from 0.15.1 to 0.15.2
+- Bump libc from 0.2.154 to 0.2.155
+
## [0.18.16] - 2024-05-16
### Bug Fixes
@@ -13,6 +24,10 @@
- Fix typo in `INSTALL.md`
- Use 3 columns for packaging status badge
+### Miscellaneous Tasks
+
+- Release eza v0.18.16
+
### Build
- Bump DeterminateSystems/flake-checker-action from 5 to 7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eza-0.18.16+0/Cargo.lock new/eza-0.18.17+0/Cargo.lock
--- old/eza-0.18.16+0/Cargo.lock 2024-05-16 16:39:21.000000000 +0200
+++ new/eza-0.18.17+0/Cargo.lock 2024-06-05 20:43:27.000000000 +0200
@@ -105,6 +105,17 @@
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
+name = "automod"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
name = "base64"
version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -376,7 +387,7 @@
[[package]]
name = "eza"
-version = "0.18.16"
+version = "0.18.17"
dependencies = [
"ansi-width",
"chrono",
@@ -585,9 +596,9 @@
[[package]]
name = "libc"
-version = "0.2.154"
+version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libgit2-sys"
@@ -884,9 +895,9 @@
[[package]]
name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43"
dependencies = [
"unicode-ident",
]
@@ -911,9 +922,9 @@
[[package]]
name = "quote"
-version = "1.0.33"
+version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
@@ -1091,9 +1102,9 @@
[[package]]
name = "snapbox"
-version = "0.5.9"
+version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ac441e1ecf678f68423d47f376d53fabce1afba92c8f68e31508eb27df8562a"
+checksum = "15d55fd1f4a2ee1767db08ba740916a0f3a8e9add2947f19700a99ebcb119af0"
dependencies = [
"anstream",
"anstyle",
@@ -1113,18 +1124,18 @@
[[package]]
name = "snapbox-macros"
-version = "0.3.8"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1c4b838b05d15ab22754068cb73500b2f3b07bf09d310e15b27f88160f1de40"
+checksum = "b1f4c14672714436c09254801c934b203196a51182a5107fb76591c7cc56424d"
dependencies = [
"anstream",
]
[[package]]
name = "syn"
-version = "2.0.29"
+version = "2.0.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
+checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106"
dependencies = [
"proc-macro2",
"quote",
@@ -1245,9 +1256,9 @@
[[package]]
name = "toml_edit"
-version = "0.22.6"
+version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap",
"serde",
@@ -1258,10 +1269,11 @@
[[package]]
name = "trycmd"
-version = "0.15.1"
+version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d14c6930faf7c6c4942ce17daa6f38d659d2ebf2b579a56b6926707038eb37b0"
+checksum = "29622709ff54daef580ca6fff0687368527662c9e36fa8907438af35eb334b19"
dependencies = [
+ "automod",
"glob",
"humantime",
"humantime-serde",
@@ -1602,9 +1614,9 @@
[[package]]
name = "winnow"
-version = "0.6.2"
+version = "0.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
dependencies = [
"memchr",
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eza-0.18.16+0/Cargo.toml new/eza-0.18.17+0/Cargo.toml
--- old/eza-0.18.16+0/Cargo.toml 2024-05-16 16:39:21.000000000 +0200
+++ new/eza-0.18.17+0/Cargo.toml 2024-06-05 20:43:27.000000000 +0200
@@ -16,7 +16,7 @@
homepage = "https://github.com/eza-community/eza"
license = "MIT"
repository = "https://github.com/eza-community/eza"
-version = "0.18.16"
+version = "0.18.17"
[package.metadata.deb]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/eza-0.18.16+0/src/output/icons.rs new/eza-0.18.17+0/src/output/icons.rs
--- old/eza-0.18.16+0/src/output/icons.rs 2024-05-16 16:39:21.000000000 +0200
+++ new/eza-0.18.17+0/src/output/icons.rs 2024-06-05 20:43:27.000000000 +0200
@@ -604,6 +604,7 @@
"ninja" => '\u{f0774}', //
"nix" => '\u{f313}', //
"node" => Icons::NODEJS, //
+ "nu" => Icons::SHELL_CMD, //
"o" => Icons::BINARY, //
"obj" => Icons::FILE_3D, //
"odf" => '\u{f0784}', //
++++++ eza.obsinfo ++++++
--- /var/tmp/diff_new_pack.zFWpQJ/_old 2024-06-06 12:34:52.965424801 +0200
+++ /var/tmp/diff_new_pack.zFWpQJ/_new 2024-06-06 12:34:52.969424947 +0200
@@ -1,5 +1,5 @@
name: eza
-version: 0.18.16+0
-mtime: 1715870361
-commit: bbede6d45398d0d6f5e7eb5cfff4ae4674e6315a
+version: 0.18.17+0
+mtime: 1717613007
+commit: c4007bc9525f888c8681940a0f7d09823b7da675
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/eza/vendor.tar.zst /work/SRC/openSUSE:Factory/.eza.new.24587/vendor.tar.zst differ: char 128733, line 541
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package simutrans for openSUSE:Factory checked in at 2024-06-06 12:34:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/simutrans (Old)
and /work/SRC/openSUSE:Factory/.simutrans.new.24587 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "simutrans"
Thu Jun 6 12:34:12 2024 rev:7 rq:1178880 version:124.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/simutrans/simutrans.changes 2024-02-27 22:47:58.585719780 +0100
+++ /work/SRC/openSUSE:Factory/.simutrans.new.24587/simutrans.changes 2024-06-06 12:34:48.933277860 +0200
@@ -1,0 +2,18 @@
+Mon Jun 3 16:43:23 UTC 2024 - Michiel van der Wulp <michiel.vanderwulp(a)gmail.com> - 124-1
+
+- update to version 124.1
+- This version mostly fixes bugs reported for previous version 124.0,
+with some features added to the top. There are also some changes related to packaging:
+1. The 124 release made Freetype a required dependency, but the build system
+was not updated to reflect that. As a result, you could compile Simutrans
+without Freetype, only for the game to fail at launch because
+it could not use any font. We have fixed this for the 124.1 release,
+and now Freetype is also required for building (except for server builds).
+2. The ".desktop" file has been renamed and moved to "src/linux/simutrans.desktop".
+- See for more information about the 124.1 and the 124.0 releases:
+https://forum.simutrans.com/index.php/board,3.0.html
+- Patch simutrans-makefile.patch added since GNU make version on OpenSuse 15.5 and 15.6
+does not support hashtags inside shell commands properly
+while the Gnu Make in Tumbleweed works correctly.
+
+-------------------------------------------------------------------
Old:
----
simutrans-src-123-0-1.zip
New:
----
simutrans-makefile.patch
simutrans-src-124-1.zip
BETA DEBUG BEGIN:
New:https://forum.simutrans.com/index.php/board,3.0.html
- Patch simutrans-makefile.patch added since GNU make version on OpenSuse 15.5 and 15.6
does not support hashtags inside shell commands properly
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ simutrans.spec ++++++
--- /var/tmp/diff_new_pack.wptB5N/_old 2024-06-06 12:34:49.673304829 +0200
+++ /var/tmp/diff_new_pack.wptB5N/_new 2024-06-06 12:34:49.677304974 +0200
@@ -1,7 +1,7 @@
#
# spec file for package simutrans
#
-# Copyright (c) 2020-2022 SUSE LLC
+# Copyright (c) 2020-2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,9 +16,9 @@
#
-%define pkgver 123-0-1
+%define pkgver 124-1
Name: simutrans
-Version: 123.0.1
+Version: 124.1
Release: 0
Summary: Transport and Economic Simulation Game
License: Artistic-1.0
@@ -29,6 +29,7 @@
Source2: http://www.simutrans.com/images/resources/simutrans-square.svg
# PATCH-FIX-UPSTREAM http://forum.simutrans.com/index.php?topic=11173.0
Patch0: simutrans-fhs-home-directory.patch
+Patch1: simutrans-makefile.patch
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: unzip
@@ -43,13 +44,13 @@
%endif
BuildRequires: dos2unix
BuildRequires: hicolor-icon-theme
-# Once we have Leap 15.4, we could follow the advice here: https://forum.simutrans.com/index.php?action=post;quote=198369;topic=21320.…
-# BuildRequires: fluidsynth-devel >= 2.1.0
-# Requires: fluid-soundfont-gm
+# Since now we have Leap > 15.4, we follow the advice here: https://forum.simutrans.com/index.php?action=post;quote=198369;topic=21320.…
+BuildRequires: fluidsynth-devel >= 2.1.0
+Requires: fluid-soundfont-gm
BuildRequires: libzstd-devel
-Recommends: %{name}-pak128
-Suggests: %{name}-pak128-german
-Suggests: %{name}-pak64
+Recommends: %{name}-pak128 >= 2.9.1
+Suggests: %{name}-pak128-german >= 2.2
+Suggests: %{name}-pak64 >= 124.1
Suggests: %{name}-makeobj
%description
++++++ config.default ++++++
--- /var/tmp/diff_new_pack.wptB5N/_old 2024-06-06 12:34:49.721306578 +0200
+++ /var/tmp/diff_new_pack.wptB5N/_new 2024-06-06 12:34:49.725306724 +0200
@@ -53,7 +53,7 @@
USE_ZSTD=1
# using FluidSynth for MIDI playback (SDL2 backend needed for Linux/MacOS, SDL2 or GDI for MinGW)
-#USE_FLUIDSYNTH_MIDI := 1
+USE_FLUIDSYNTH_MIDI = 1
# Use static libraries instead
# STATIC = 1
@@ -87,7 +87,7 @@
# In order to use the flags, add a line like this: (-Dxxx)
# FLAGS = -DUSE_C
-FLAGS += -DREVISION="10421"
+FLAGS += -DREVISION="11272"
# Output directories:
#
++++++ simutrans-fhs-home-directory.patch ++++++
--- /var/tmp/diff_new_pack.wptB5N/_old 2024-06-06 12:34:49.745307453 +0200
+++ /var/tmp/diff_new_pack.wptB5N/_new 2024-06-06 12:34:49.753307744 +0200
@@ -1,12 +1,13 @@
---- old/sys/simsys.cc 2022-01-11 11:20:33.991101481 +0100
-+++ new/sys/simsys.cc 2022-01-11 11:01:19.637291267 +0100
-@@ -395,7 +395,7 @@
- #elif defined __ANDROID__
- tstrncpy(buffer,SDL_GetPrefPath("Simutrans Team","simutrans"),lengthof(buffer));
+diff -ru old/src/simutrans/sys/simsys.cc new/src/simutrans/sys/simsys.cc
+--- old/src/simutrans/sys/simsys.cc 2024-05-19 16:34:04.000000000 +0200
++++ new/src/simutrans/sys/simsys.cc 2024-06-03 19:20:41.524515968 +0200
+@@ -554,7 +554,7 @@
+ }
#else
-- sprintf(buffer, "%s/simutrans", getenv("HOME"));
-+ sprintf(buffer, "%s/.simutrans", getenv("HOME"));
- #endif
-
- // create directory and subdirectories
+ if( getenv("XDG_DATA_HOME") == NULL ) {
+- sprintf(buffer, "%s/simutrans", getenv("HOME"));
++ sprintf(buffer, "%s/.simutrans", getenv("HOME"));
+ } else {
+ sprintf(buffer, "%s/simutrans", getenv("XDG_DATA_HOME"));
+ }
++++++ simutrans-makefile.patch ++++++
diff -ru old/Makefile new/Makefile
--- old/Makefile 2024-06-03 20:19:54.782190371 +0200
+++ new/Makefile 2024-06-03 20:17:04.000000000 +0200
@@ -272,7 +272,7 @@
DUMMY := $(shell rm -f src/simutrans/revision.h)
else
ifeq ("$(wildcard src/simutrans/revision.h)","")
- DUMMY := $(shell printf "#define REVISION" > src/simutrans/revision.h)
+ DUMMY := $(shell printf "\#define REVISION" > src/simutrans/revision.h)
endif
endif
++++++ simutrans-src-123-0-1.zip -> simutrans-src-124-1.zip ++++++
++++ 849955 lines of diff (skipped)
1
0