* [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408
@ 2026-04-21 9:55 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 02/49] adwaita-icon-theme: upgrade 49.0 -> 50.0 Wang Mingyu
` (47 more replies)
0 siblings, 48 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
License-Update: Copyright year updated to 2026
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../acpica/{acpica_20251212.bb => acpica_20260408.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta/recipes-extended/acpica/{acpica_20251212.bb => acpica_20260408.bb} (93%)
diff --git a/meta/recipes-extended/acpica/acpica_20251212.bb b/meta/recipes-extended/acpica/acpica_20260408.bb
similarity index 93%
rename from meta/recipes-extended/acpica/acpica_20251212.bb
rename to meta/recipes-extended/acpica/acpica_20260408.bb
index 812a62547b..4c65630015 100644
--- a/meta/recipes-extended/acpica/acpica_20251212.bb
+++ b/meta/recipes-extended/acpica/acpica_20260408.bb
@@ -10,14 +10,14 @@ HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/topic-technology/o
SECTION = "console/tools"
LICENSE = "Intel | BSD-3-Clause | GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=8566a414d226d05b68e41f30698f9624"
+LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=4877caee45a613e9706946c3205a6fb9"
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
DEPENDS = "m4-native flex-native bison-native"
SRC_URI = "git://github.com/acpica/acpica;protocol=https;branch=master;tag=${PV}"
-SRCREV = "446be438238e9d339eed5182b807ac5f82df56c9"
+SRCREV = "232ff3f8ae1a4da11c709f61d9154482cfe8e6df"
inherit update-alternatives
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 02/49] adwaita-icon-theme: upgrade 49.0 -> 50.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 03/49] ccache: upgrade 4.13.2 -> 4.13.3 Wang Mingyu
` (46 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
============
- use old format of the legacy icons for gtk3
- reintroduce legacy icons because themes
- symbolic:battery icons no longer fuzzy
- build: Windows build
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{adwaita-icon-theme_49.0.bb => adwaita-icon-theme_50.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/gnome/{adwaita-icon-theme_49.0.bb => adwaita-icon-theme_50.0.bb} (91%)
diff --git a/meta/recipes-gnome/gnome/adwaita-icon-theme_49.0.bb b/meta/recipes-gnome/gnome/adwaita-icon-theme_50.0.bb
similarity index 91%
rename from meta/recipes-gnome/gnome/adwaita-icon-theme_49.0.bb
rename to meta/recipes-gnome/gnome/adwaita-icon-theme_50.0.bb
index a12faeb8fd..8d26aae75c 100644
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme_49.0.bb
+++ b/meta/recipes-gnome/gnome/adwaita-icon-theme_50.0.bb
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
inherit gnomebase allarch gtk-icon-cache
-SRC_URI[archive.sha256sum] = "65166461d1b278aa942f59aa8d0fccf1108d71c65f372c6266e172449791755c"
+SRC_URI[archive.sha256sum] = "fac6e0401fca714780561a081b8f7e27c3bc1db34ebda4da175081f26b24d460"
DEPENDS += "librsvg-native"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 03/49] ccache: upgrade 4.13.2 -> 4.13.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 02/49] adwaita-icon-theme: upgrade 49.0 -> 50.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 04/49] dhcpcd: upgrade 10.3.0 -> 10.3.1 Wang Mingyu
` (45 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../ccache/{ccache_4.13.2.bb => ccache_4.13.3.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/ccache/{ccache_4.13.2.bb => ccache_4.13.3.bb} (93%)
diff --git a/meta/recipes-devtools/ccache/ccache_4.13.2.bb b/meta/recipes-devtools/ccache/ccache_4.13.3.bb
similarity index 93%
rename from meta/recipes-devtools/ccache/ccache_4.13.2.bb
rename to meta/recipes-devtools/ccache/ccache_4.13.3.bb
index 9fe82f5ee0..ec440900f6 100644
--- a/meta/recipes-devtools/ccache/ccache_4.13.2.bb
+++ b/meta/recipes-devtools/ccache/ccache_4.13.3.bb
@@ -16,7 +16,7 @@ DEPENDS = "zstd fmt xxhash"
SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz"
-SRC_URI[sha256sum] = "e87efda8ae54f94b1cb0e8dbfdf26397bd7d0a9c0c4f38b18dde73f4ec9ac721"
+SRC_URI[sha256sum] = "c149d71f47f6fe08e4f2e43db4b0b091c61e8ea3daa23aa998b094bd84ecdfe8"
inherit cmake github-releases
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 04/49] dhcpcd: upgrade 10.3.0 -> 10.3.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 02/49] adwaita-icon-theme: upgrade 49.0 -> 50.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 03/49] ccache: upgrade 4.13.2 -> 4.13.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 05/49] diffoscope: upgrade 314 -> 317 Wang Mingyu
` (44 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
==========
- BSD: don't send uninitialised memory using ps_root_indirectioctl
- Fix fallback_time option
- IPv4: Ignore DHCP state when building routes
- options: Ensure ldop is not NULL dereferenced
- route: Routes may not have an
- options: Ensure that an overly long bitflag string does not crash
- options: Don't assume vsio options have an argument
- common: Cast via uintptr_t rather than unsigned long
- privsep: Ensure we recv for real after a successful recv MSG_PEEK
- DHCP: Add parentheses to macro definitions
- ipv6nd: empty IPV6RA_EXPIRE eloop queue when dropping
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../dhcpcd/{dhcpcd_10.3.0.bb => dhcpcd_10.3.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-connectivity/dhcpcd/{dhcpcd_10.3.0.bb => dhcpcd_10.3.1.bb} (97%)
diff --git a/meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.0.bb b/meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.1.bb
similarity index 97%
rename from meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.0.bb
rename to meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.1.bb
index fca7d8b11d..c940d6806a 100644
--- a/meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.0.bb
+++ b/meta/recipes-connectivity/dhcpcd/dhcpcd_10.3.1.bb
@@ -17,7 +17,7 @@ SRC_URI = "git://github.com/NetworkConfiguration/dhcpcd;protocol=https;branch=ma
file://0001-dhcpcd.8-Fix-conflict-error-when-enable-multilib.patch \
"
-SRCREV = "385ff246cbdbd1627582999f7705bf9ef2ad0d7d"
+SRCREV = "42ff6d2548209af3185473e6cb6f9d235c48bbf4"
# Doesn't use automake so we can't do out-of-tree builds
inherit pkgconfig autotools-brokensep systemd useradd
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 05/49] diffoscope: upgrade 314 -> 317
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (2 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 04/49] dhcpcd: upgrade 10.3.0 -> 10.3.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 06/49] dos2unix: upgrade 7.5.4 -> 7.5.5 Wang Mingyu
` (43 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../diffoscope/{diffoscope_314.bb => diffoscope_317.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/diffoscope/{diffoscope_314.bb => diffoscope_317.bb} (93%)
diff --git a/meta/recipes-support/diffoscope/diffoscope_314.bb b/meta/recipes-support/diffoscope/diffoscope_317.bb
similarity index 93%
rename from meta/recipes-support/diffoscope/diffoscope_314.bb
rename to meta/recipes-support/diffoscope/diffoscope_317.bb
index 11868dc8db..06c3ee1a30 100644
--- a/meta/recipes-support/diffoscope/diffoscope_314.bb
+++ b/meta/recipes-support/diffoscope/diffoscope_317.bb
@@ -12,7 +12,7 @@ PYPI_PACKAGE = "diffoscope"
inherit pypi setuptools3
-SRC_URI[sha256sum] = "b347d6ebcadd913a5839555b89ea1026422a1cdf7b8b3be21bb2f112133c3ff8"
+SRC_URI[sha256sum] = "9c8741f76bcbd1faec59227da31981a524abca63e19d03f3a594c19f326de542"
RDEPENDS:${PN} += "\
binutils \
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 06/49] dos2unix: upgrade 7.5.4 -> 7.5.5
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (3 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 05/49] diffoscope: upgrade 314 -> 317 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 07/49] epiphany: upgrade 49.7 -> 50.3 Wang Mingyu
` (42 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
==========
* New option --error-binary: Return an error if a
binary file is skipped.
* Fix: dos2unix error on empty input.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../dos2unix/{dos2unix_7.5.4.bb => dos2unix_7.5.5.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/dos2unix/{dos2unix_7.5.4.bb => dos2unix_7.5.5.bb} (95%)
diff --git a/meta/recipes-support/dos2unix/dos2unix_7.5.4.bb b/meta/recipes-support/dos2unix/dos2unix_7.5.5.bb
similarity index 95%
rename from meta/recipes-support/dos2unix/dos2unix_7.5.4.bb
rename to meta/recipes-support/dos2unix/dos2unix_7.5.5.bb
index 87d51574cc..aa078ed200 100644
--- a/meta/recipes-support/dos2unix/dos2unix_7.5.4.bb
+++ b/meta/recipes-support/dos2unix/dos2unix_7.5.5.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING.txt;md5=af1174fd3d1a254eec3a4a1d1da170a9"
SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix;branch=master;protocol=https"
UPSTREAM_CHECK_GITTAGREGEX = "dos2unix-(?P<pver>(\d+(\.\d+)+))"
-SRCREV = "dd37537e5fe03ac123aca9a9c944ef87fb998dcd"
+SRCREV = "54524999eece4e9ad0dab580c79b02855fc85028"
S = "${UNPACKDIR}/${BP}/dos2unix"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 07/49] epiphany: upgrade 49.7 -> 50.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (4 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 06/49] dos2unix: upgrade 7.5.4 -> 7.5.5 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 08/49] fastfloat: upgrade 8.2.4 -> 8.2.5 Wang Mingyu
` (41 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../epiphany/{epiphany_49.7.bb => epiphany_50.3.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/epiphany/{epiphany_49.7.bb => epiphany_50.3.bb} (94%)
diff --git a/meta/recipes-gnome/epiphany/epiphany_49.7.bb b/meta/recipes-gnome/epiphany/epiphany_50.3.bb
similarity index 94%
rename from meta/recipes-gnome/epiphany/epiphany_49.7.bb
rename to meta/recipes-gnome/epiphany/epiphany_50.3.bb
index e782855c95..d5cacc848a 100644
--- a/meta/recipes-gnome/epiphany/epiphany_49.7.bb
+++ b/meta/recipes-gnome/epiphany/epiphany_50.3.bb
@@ -32,7 +32,7 @@ SRC_URI += "\
file://migrator.patch \
file://distributor.patch \
"
-SRC_URI[archive.sha256sum] = "3c590c6fe6d9269412a042aa479c91c3229163e2da85a94a5d24644b2ab9e3b4"
+SRC_URI[archive.sha256sum] = "032d6a41e2a079cd41b05ca7abfb3870adf0353d1566194bed8790953a894640"
export GI_TYPELIB_PATH = "${STAGING_LIBDIR}/girepository-1.0/"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 08/49] fastfloat: upgrade 8.2.4 -> 8.2.5
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (5 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 07/49] epiphany: upgrade 49.7 -> 50.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 09/49] ghostscript: upgrade 10.06.0 -> 10.07.0 Wang Mingyu
` (40 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
==========
- Fix Bazel build with bzlmod
- Replace std::min with ternary operators to avoid dependency
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../fastfloat/{fastfloat_8.2.4.bb => fastfloat_8.2.5.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/fastfloat/{fastfloat_8.2.4.bb => fastfloat_8.2.5.bb} (90%)
diff --git a/meta/recipes-devtools/fastfloat/fastfloat_8.2.4.bb b/meta/recipes-devtools/fastfloat/fastfloat_8.2.5.bb
similarity index 90%
rename from meta/recipes-devtools/fastfloat/fastfloat_8.2.4.bb
rename to meta/recipes-devtools/fastfloat/fastfloat_8.2.5.bb
index a5b48d259b..cbd7151f85 100644
--- a/meta/recipes-devtools/fastfloat/fastfloat_8.2.4.bb
+++ b/meta/recipes-devtools/fastfloat/fastfloat_8.2.5.bb
@@ -9,6 +9,6 @@ LIC_FILES_CHKSUM = " \
SRC_URI = "git://github.com/fastfloat/fast_float.git;protocol=https;branch=main;tag=v${PV}"
-SRCREV = "eb9ab42c0aa86d3cc41871ba7306527d95077b3b"
+SRCREV = "05087a303dad9c98768b33c829d398223a649bc6"
inherit cmake
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 09/49] ghostscript: upgrade 10.06.0 -> 10.07.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (6 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 08/49] fastfloat: upgrade 8.2.4 -> 8.2.5 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1 Wang Mingyu
` (39 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
0001-Fix-32-bit-build.patch
removed since it's included in 10.07.0
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../ghostscript/0001-Fix-32-bit-build.patch | 63 -------------------
...ript_10.06.0.bb => ghostscript_10.07.0.bb} | 3 +-
2 files changed, 1 insertion(+), 65 deletions(-)
delete mode 100644 meta/recipes-extended/ghostscript/ghostscript/0001-Fix-32-bit-build.patch
rename meta/recipes-extended/ghostscript/{ghostscript_10.06.0.bb => ghostscript_10.07.0.bb} (95%)
diff --git a/meta/recipes-extended/ghostscript/ghostscript/0001-Fix-32-bit-build.patch b/meta/recipes-extended/ghostscript/ghostscript/0001-Fix-32-bit-build.patch
deleted file mode 100644
index 8d1e9d46e6..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript/0001-Fix-32-bit-build.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 3c0be6e4fcffa63e4a5a1b0aec057cebc4d2562f Mon Sep 17 00:00:00 2001
-From: Ken Sharp <Ken.Sharp@artifex.com>
-Date: Wed, 10 Sep 2025 08:55:30 +0100
-Subject: [PATCH] Fix 32-bit build
-
-Bug #708824 "ghostscript 10.06.0 compilation failure on 32-bit archs"
-
-nbytes shiouldn't be an intptr_t, it doesn't get used for pointer
-arithmetic. Previously it was a uint, should be a int64_t, to fit with
-all the other devices.
-
-Checked other warnings, and found a (very minor) one in gdevdbit.c, fix
-that while we're here (signed/unsigned mismatch, we don't really care).
-
-Upstream-Status: Backport [https://github.com/ArtifexSoftware/ghostpdl/commit/3c0be6e4fcffa63e4a5a1b0aec057cebc4d2562f]
-
-Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
----
- base/gdevdbit.c | 2 +-
- base/gdevmpla.c | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/base/gdevdbit.c b/base/gdevdbit.c
-index e07cc3f3b8..1b5c69325b 100644
---- a/base/gdevdbit.c
-+++ b/base/gdevdbit.c
-@@ -191,7 +191,7 @@ gx_default_copy_alpha_hl_color(gx_device * dev, const byte * data, int data_x,
- fit_copy(dev, data, data_x, raster, id, x, y, width, height);
- row_alpha = data;
- out_raster = bitmap_raster(width * (size_t)byte_depth);
-- if (check_64bit_multiply(out_raster, ncomps, &product) != 0)
-+ if (check_64bit_multiply(out_raster, ncomps, (int64_t *) &product) != 0)
- return gs_note_error(gs_error_undefinedresult);
- gb_buff = gs_alloc_bytes(mem, product, "copy_alpha_hl_color(gb_buff)");
- if (gb_buff == 0) {
-diff --git a/base/gdevmpla.c b/base/gdevmpla.c
-index 2f0d522561..ffc5ff42e6 100644
---- a/base/gdevmpla.c
-+++ b/base/gdevmpla.c
-@@ -1954,12 +1954,12 @@ mem_planar_strip_copy_rop2(gx_device * dev,
- int i;
- int j;
- intptr_t chunky_sraster;
-- intptr_t nbytes;
-+ int64_t nbytes;
- byte **line_ptrs;
- byte *sbuf, *buf;
-
- chunky_sraster = sraster * (intptr_t)mdev->num_planar_planes;
-- if (check_64bit_multiply(height, chunky_sraster, (size_t *)&nbytes) != 0)
-+ if (check_64bit_multiply(height, chunky_sraster, &nbytes) != 0)
- return gs_note_error(gs_error_undefinedresult);
- buf = gs_alloc_bytes(mdev->memory, nbytes, "mem_planar_strip_copy_rop(buf)");
- if (buf == NULL) {
-@@ -2003,7 +2003,7 @@ mem_planar_strip_copy_rop2(gx_device * dev,
- intptr_t i;
- intptr_t chunky_t_raster;
- int chunky_t_height;
-- intptr_t nbytes;
-+ int64_t nbytes;
- byte **line_ptrs;
- byte *tbuf, *buf;
- gx_strip_bitmap newtex;
diff --git a/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb b/meta/recipes-extended/ghostscript/ghostscript_10.07.0.bb
similarity index 95%
rename from meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb
rename to meta/recipes-extended/ghostscript/ghostscript_10.07.0.bb
index 1363aa281e..1b6cb4aaae 100644
--- a/meta/recipes-extended/ghostscript/ghostscript_10.06.0.bb
+++ b/meta/recipes-extended/ghostscript/ghostscript_10.07.0.bb
@@ -24,12 +24,11 @@ def gs_verdir(v):
SRC_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${@gs_verdir("${PV}")}/${BPN}-${PV}.tar.gz \
file://ghostscript-9.16-Werror-return-type.patch \
file://avoid-host-contamination.patch \
- file://0001-Fix-32-bit-build.patch \
file://out-of-tree.patch \
file://0001-psi-ztype.c-replace-static-const-double-with-macros-.patch \
"
-SRC_URI[sha256sum] = "5bd6da34794928cc7e616f288e32bd0be7f9a5ca2d3c206a0af2c19a4e3a318f"
+SRC_URI[sha256sum] = "ed6ea62022e3f4d5a6569b6efc9361b63a6d118bfcad8f0beb897c37885b5cad"
PACKAGECONFIG ??= ""
PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (7 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 09/49] ghostscript: upgrade 10.06.0 -> 10.07.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-24 13:04 ` Jonas Gorski
2026-04-21 9:55 ` [OE-core] [PATCH 11/49] gsettings-desktop-schemas: upgrade 50.0 -> 50.1 Wang Mingyu
` (38 subsequent siblings)
47 siblings, 1 reply; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../recipes-extended/groff/{groff_1.24.0.bb => groff_1.24.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-extended/groff/{groff_1.24.0.bb => groff_1.24.1.bb} (96%)
diff --git a/meta/recipes-extended/groff/groff_1.24.0.bb b/meta/recipes-extended/groff/groff_1.24.1.bb
similarity index 96%
rename from meta/recipes-extended/groff/groff_1.24.0.bb
rename to meta/recipes-extended/groff/groff_1.24.1.bb
index dbc8cdf6d0..c4df5f1b18 100644
--- a/meta/recipes-extended/groff/groff_1.24.0.bb
+++ b/meta/recipes-extended/groff/groff_1.24.1.bb
@@ -14,7 +14,7 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
file://0001-gropdf-use-SOURCE_DATE_EPOCH-for-reproducible-builds.patch \
"
-SRC_URI[sha256sum] = "e79bbcd8ff3ed0200e7ac55d3962a15e118c1229990213025f2fc8b264727570"
+SRC_URI[sha256sum] = "74e2819795b6aff431aeac983d63a9c8968eeaba2a2eba7df8ba4c7b41e7cfd8"
DEPENDS = "bison-native groff-native"
RDEPENDS:${PN} += "perl sed"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 11/49] gsettings-desktop-schemas: upgrade 50.0 -> 50.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (8 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 12/49] gtk+3: upgrade 3.24.51 -> 3.24.52 Wang Mingyu
` (37 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...esktop-schemas_50.0.bb => gsettings-desktop-schemas_50.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/gsettings-desktop-schemas/{gsettings-desktop-schemas_50.0.bb => gsettings-desktop-schemas_50.1.bb} (84%)
diff --git a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.0.bb b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.1.bb
similarity index 84%
rename from meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.0.bb
rename to meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.1.bb
index 5fda20c6c3..1edb548ad6 100644
--- a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.0.bb
+++ b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_50.1.bb
@@ -11,4 +11,4 @@ DEPENDS = "glib-2.0"
inherit gnomebase gsettings gobject-introspection gettext
-SRC_URI[archive.sha256sum] = "358f07cb253727650e132805df3c69f7bf90448040bce171b6f6f2cb1b9c37ef"
+SRC_URI[archive.sha256sum] = "0a2aa25082672585d16fcdab61c7b0e33f035fb87476505c794f29565afa485b"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 12/49] gtk+3: upgrade 3.24.51 -> 3.24.52
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (9 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 11/49] gsettings-desktop-schemas: upgrade 50.0 -> 50.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 13/49] gtk4: upgrade 4.22.1 -> 4.22.2 Wang Mingyu
` (36 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
* Bugs fixed:
- #6306 [GTK3] Zlib required when broadway is enabled.
- #7796 [GTK 3] Invalid a11y events when calling `gtk_tree_view_set_cursor` on
an unfocused GtkTreeView
- #7976 Firefox crashes at gdk_wayland_drag_context_manage_dnd() when missing
toplevel wl_surface
- #8103 gtk3 refresh_rate calculation overflows on 32-bit targets
- #8114 Images for recolored icons are constantly being reloaded
- GNOME/gimp#14901 Wild strobing in multi window mode
- GNOME/gimp#15480 GIMP does not focus on dialogue boxes on Mac
- !7332 quartz: add automagic uti<->mime conversion for clipboard
- !8216 Fix position of child tooltips in GTK3 custom windows
- !9005 a11y: Don't send focus-related events for unfocused treeview
- !9012 quartz: gtkwindow - fix windows fighting focus
- !9022 gtkmenu: Await more motion events before deactivating on release
- !9044 wayland: Handle XKB initialization failures gracefully
- !9067 gdk/win32: Add missing EGL conditional compilation guard
- !9098 gdk: do not run gdk_wayland_window_export_handle() callback when
window is already destroyed.
- !9119 Declare an explicit dependency on zlib when broadway is enabled
- !9141 [GTK 3] wayland: Try to open the display even if XDG_RUNTIME_DIR is
unset
- !9155 [gtk3] emoji: Update data to CLDR 48
- !9214 display/wayland: Gracefully handle dispose being called twice
- !9284 gdk/wayland: Map stylus buttons for BTN_BACK and BTN_FORWARD (Peter
Hutterer)
- !9322 [Quartz] Fix dialog keyboard focus while preventing focus fighting
- !9344 Fix a couple of leaks
- !9394 gdk/wayland: Map stylus buttons for BTN_BACK and BTN_FORWARD
- !9397 wayland: Avoid a crash
- !9600 Replace outdated freedesktop.org Window Manager spec links
- !9676 x11: fix overflow in refresh_rate calculation on 32-bit systems
- !9706 cssimage: Store and reuse icon info for recolored images
- !9707 wayland: Fix uninitialized value when no cursor
- !9708 fontchooser: Fix signedness of axes count
- !9709 fontchooser: Remove const on float return values
- !9710 print: Remove unused variable
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-gnome/gtk+/{gtk+3_3.24.51.bb => gtk+3_3.24.52.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/gtk+/{gtk+3_3.24.51.bb => gtk+3_3.24.52.bb} (98%)
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.24.51.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.52.bb
similarity index 98%
rename from meta/recipes-gnome/gtk+/gtk+3_3.24.51.bb
rename to meta/recipes-gnome/gtk+/gtk+3_3.24.52.bb
index 51a293c1d8..1fcc08443d 100644
--- a/meta/recipes-gnome/gtk+/gtk+3_3.24.51.bb
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.24.52.bb
@@ -22,7 +22,7 @@ inherit gettext gnomebase gtk-doc update-alternatives gtk-immodules-cache gsetti
SRC_URI += "\
file://opengl.patch \
"
-SRC_URI[archive.sha256sum] = "0013877c6bd23c2dbe42ad7c70a053d0e449be66736574e37867c49c5f905a4f"
+SRC_URI[archive.sha256sum] = "80931fa472a77b9a164f6740e3c0b444fac6770054632d35a7ff9d679e5e7b9f"
BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 13/49] gtk4: upgrade 4.22.1 -> 4.22.2
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (10 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 12/49] gtk+3: upgrade 3.24.51 -> 3.24.52 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 14/49] hwdata: upgrade 0.405 -> 0.406 Wang Mingyu
` (35 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Bugs fixed:
- #8117 Docs for the new SVG parser?
- #8119 Wrong colors used for fallback symbolic icons containing classes
- #8125 svg: Animating hrefs does not work
- !9590 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check
- !9660 Various Vulkan fixes
- !9665 tests: fix libtestutils build under Windows.
- !9667 Update Serbian translation
- !9678 testsuite: Add dmabuf compare tests to needs-udmabuf suite
- !9681 dmabuf: Support dmabufs with fewer fds than planes
- !9682 Update Galician translation
- !9701 Update Turkish translation
- !9704 Update Catalan translation
- !9711 Load less icons as symbolics
- !9719 Fix traditional symbolic fallback
- !9736 svg: Fix invalidation
- !9739 Assorted backports
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-gnome/gtk+/{gtk4_4.22.1.bb => gtk4_4.22.2.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/gtk+/{gtk4_4.22.1.bb => gtk4_4.22.2.bb} (97%)
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.22.1.bb b/meta/recipes-gnome/gtk+/gtk4_4.22.2.bb
similarity index 97%
rename from meta/recipes-gnome/gtk+/gtk4_4.22.1.bb
rename to meta/recipes-gnome/gtk+/gtk4_4.22.2.bb
index bbe595c376..f2cef8d13a 100644
--- a/meta/recipes-gnome/gtk+/gtk4_4.22.1.bb
+++ b/meta/recipes-gnome/gtk+/gtk4_4.22.2.bb
@@ -33,7 +33,7 @@ LIC_FILES_CHKSUM = " \
file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2 \
"
-SRC_URI[archive.sha256sum] = "cd7b5a9c41127da6fb321c5a842ad73c62e6996f9ce3f1960ca509f6559d55fc"
+SRC_URI[archive.sha256sum] = "b1c987370a0c30780cde351bdbee02eef816728f1c1c2ec7c8093281c0709ee8"
S = "${UNPACKDIR}/${GNOMEBN}-${PV}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 14/49] hwdata: upgrade 0.405 -> 0.406
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (11 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 13/49] gtk4: upgrade 4.22.1 -> 4.22.2 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 15/49] libadwaita: upgrade 1.8.4 -> 1.9.0 Wang Mingyu
` (34 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../recipes-support/hwdata/{hwdata_0.405.bb => hwdata_0.406.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/hwdata/{hwdata_0.405.bb => hwdata_0.406.bb} (93%)
diff --git a/meta/recipes-support/hwdata/hwdata_0.405.bb b/meta/recipes-support/hwdata/hwdata_0.406.bb
similarity index 93%
rename from meta/recipes-support/hwdata/hwdata_0.405.bb
rename to meta/recipes-support/hwdata/hwdata_0.406.bb
index 7247e9f365..602ab7c9e2 100644
--- a/meta/recipes-support/hwdata/hwdata_0.405.bb
+++ b/meta/recipes-support/hwdata/hwdata_0.406.bb
@@ -8,7 +8,7 @@ LICENSE = "GPL-2.0-or-later | X11"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https;tag=v${PV}"
-SRCREV = "be46d7186e918e62eb75de399e800145a781c8db"
+SRCREV = "9ae3b9da5cbb93eed30f812aa7edb4b9ad3e3868"
inherit allarch
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 15/49] libadwaita: upgrade 1.8.4 -> 1.9.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (12 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 14/49] hwdata: upgrade 0.405 -> 0.406 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 16/49] libcap: upgrade 2.77 -> 2.78 Wang Mingyu
` (33 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../libadwaita/{libadwaita_1.8.4.bb => libadwaita_1.9.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-gnome/libadwaita/{libadwaita_1.8.4.bb => libadwaita_1.9.0.bb} (89%)
diff --git a/meta/recipes-gnome/libadwaita/libadwaita_1.8.4.bb b/meta/recipes-gnome/libadwaita/libadwaita_1.9.0.bb
similarity index 89%
rename from meta/recipes-gnome/libadwaita/libadwaita_1.8.4.bb
rename to meta/recipes-gnome/libadwaita/libadwaita_1.9.0.bb
index 39423244d9..6236d075fe 100644
--- a/meta/recipes-gnome/libadwaita/libadwaita_1.8.4.bb
+++ b/meta/recipes-gnome/libadwaita/libadwaita_1.9.0.bb
@@ -12,7 +12,7 @@ DEPENDS = " \
inherit gnomebase gobject-introspection gi-docgen vala features_check
-SRC_URI[archive.sha256sum] = "d02bb77b6f0ff1055002d299898c487cb2d83dbf940d9edf59f6fdf2572a921c"
+SRC_URI[archive.sha256sum] = "817837bf06363db5bbfce66085136eff1436af6625dfabff3ca08b87bfca1b6b"
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
REQUIRED_DISTRO_FEATURES = "opengl"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 16/49] libcap: upgrade 2.77 -> 2.78
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (13 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 15/49] libadwaita: upgrade 1.8.4 -> 1.9.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 17/49] libmicrohttpd: upgrade 1.0.2 -> 1.0.5 Wang Mingyu
` (32 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
===========
- Fix a security vulnerability (CVE-2026-4878).
- Fix a typo in a capset error
- Reverted some build macrology to get back to something that worked (admittedly sub-optimally).
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-support/libcap/{libcap_2.77.bb => libcap_2.78.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/libcap/{libcap_2.77.bb => libcap_2.78.bb} (96%)
diff --git a/meta/recipes-support/libcap/libcap_2.77.bb b/meta/recipes-support/libcap/libcap_2.78.bb
similarity index 96%
rename from meta/recipes-support/libcap/libcap_2.77.bb
rename to meta/recipes-support/libcap/libcap_2.78.bb
index 9968cd5f50..449260f7dc 100644
--- a/meta/recipes-support/libcap/libcap_2.77.bb
+++ b/meta/recipes-support/libcap/libcap_2.78.bb
@@ -16,7 +16,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${
SRC_URI:append:class-nativesdk = " \
file://0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch \
"
-SRC_URI[sha256sum] = "897bc18b44afc26c70e78cead3dbb31e154acc24bee085a5a09079a88dbf6f52"
+SRC_URI[sha256sum] = "0d621e562fd932ccf67b9660fb018e468a683d7b827541df27813228c996bb11"
UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 17/49] libmicrohttpd: upgrade 1.0.2 -> 1.0.5
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (14 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 16/49] libcap: upgrade 2.77 -> 2.78 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 18/49] lzip: upgrade 1.25 -> 1.26 Wang Mingyu
` (31 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
0001-Remove-broken-experimental-code.patch
removed since it's included in 1.0.5
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...0001-Remove-broken-experimental-code.patch | 14472 ----------------
...ohttpd_1.0.2.bb => libmicrohttpd_1.0.5.bb} | 5 +-
2 files changed, 2 insertions(+), 14475 deletions(-)
delete mode 100644 meta/recipes-support/libmicrohttpd/files/0001-Remove-broken-experimental-code.patch
rename meta/recipes-support/libmicrohttpd/{libmicrohttpd_1.0.2.bb => libmicrohttpd_1.0.5.bb} (78%)
diff --git a/meta/recipes-support/libmicrohttpd/files/0001-Remove-broken-experimental-code.patch b/meta/recipes-support/libmicrohttpd/files/0001-Remove-broken-experimental-code.patch
deleted file mode 100644
index c4b00ec6f4..0000000000
--- a/meta/recipes-support/libmicrohttpd/files/0001-Remove-broken-experimental-code.patch
+++ /dev/null
@@ -1,14472 +0,0 @@
-From 3f5e5ad634d605373e3cd34ddea4cb6af27b4f43 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 13 Nov 2025 13:42:41 +0800
-Subject: [PATCH] Remove broken experimental code
-
-Upstream-Status: Backport [https://git.gnunet.org/libmicrohttpd.git/commit/?id=ff13abc1c1d7d2b30d69d5c0bd4a237e1801c50b
-https://git.gnunet.org/libmicrohttpd.git/commit/?id=ba8f88fcb47cfb0de5237d47f9487cd1f350cbe9]
-
-CVE: CVE-2025-59777,CVE-2025-62689
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- configure.ac | 1 -
- src/Makefile.am | 5 -
- src/microhttpd_ws/Makefile.am | 43 -
- src/microhttpd_ws/Makefile.in | 1298 ----
- src/microhttpd_ws/mhd_websocket.c | 2443 -------
- src/microhttpd_ws/sha1.c | 378 -
- src/microhttpd_ws/sha1.h | 110 -
- src/microhttpd_ws/test_websocket.c | 10105 ---------------------------
- 8 files changed, 14383 deletions(-)
- delete mode 100644 src/microhttpd_ws/Makefile.am
- delete mode 100644 src/microhttpd_ws/Makefile.in
- delete mode 100644 src/microhttpd_ws/mhd_websocket.c
- delete mode 100644 src/microhttpd_ws/sha1.c
- delete mode 100644 src/microhttpd_ws/sha1.h
- delete mode 100644 src/microhttpd_ws/test_websocket.c
-
-diff --git a/configure.ac b/configure.ac
-index 17dc192..50fbf54 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -5929,7 +5929,6 @@ m4/Makefile
- src/Makefile
- src/include/Makefile
- src/microhttpd/Makefile
--src/microhttpd_ws/Makefile
- src/examples/Makefile
- src/tools/Makefile
- src/testcurl/Makefile
-diff --git a/src/Makefile.am b/src/Makefile.am
-index d02ab8f..07d8f3d 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -9,11 +9,6 @@ SUBDIRS += testzzuf
- endif
- endif
-
--# Finally (last!) also build experimental lib...
--if HAVE_EXPERIMENTAL
--SUBDIRS += microhttpd_ws
--endif
--
- if BUILD_EXAMPLES
- SUBDIRS += examples
- endif
-diff --git a/src/microhttpd_ws/Makefile.am b/src/microhttpd_ws/Makefile.am
-deleted file mode 100644
-index 3ce8a9f..0000000
---- a/src/microhttpd_ws/Makefile.am
-+++ /dev/null
-@@ -1,43 +0,0 @@
--# This Makefile.am is in the public domain
--AM_CPPFLAGS = \
-- -I$(top_srcdir)/src/include \
-- -I$(top_srcdir)/src/microhttpd
--
--AM_CFLAGS = $(HIDDEN_VISIBILITY_CFLAGS)
--
--$(top_builddir)/src/microhttpd/libmicrohttpd.la: $(top_builddir)/src/microhttpd/Makefile
-- @echo ' cd $(top_builddir)/src/microhttpd && $(MAKE) $(AM_MAKEFLAGS) libmicrohttpd.la'; \
-- $(am__cd) $(top_builddir)/src/microhttpd && $(MAKE) $(AM_MAKEFLAGS) libmicrohttpd.la
--
--noinst_DATA =
--MOSTLYCLEANFILES =
--
--SUBDIRS = .
--
--lib_LTLIBRARIES = \
-- libmicrohttpd_ws.la
--libmicrohttpd_ws_la_SOURCES = \
-- sha1.c sha1.h \
-- mhd_websocket.c
--libmicrohttpd_ws_la_CPPFLAGS = \
-- $(AM_CPPFLAGS) $(MHD_LIB_CPPFLAGS) \
-- -DBUILDING_MHD_LIB=1
--libmicrohttpd_ws_la_CFLAGS = \
-- $(AM_CFLAGS) $(MHD_LIB_CFLAGS)
--libmicrohttpd_ws_la_LDFLAGS = \
-- $(MHD_LIB_LDFLAGS) \
-- $(W32_MHD_LIB_LDFLAGS) \
-- -version-info 0:0:0
--libmicrohttpd_ws_la_LIBADD = \
-- $(MHD_LIBDEPS)
--
--TESTS = $(check_PROGRAMS)
--
--check_PROGRAMS = \
-- test_websocket
--
--test_websocket_SOURCES = \
-- test_websocket.c
--test_websocket_LDADD = \
-- $(top_builddir)/src/microhttpd_ws/libmicrohttpd_ws.la \
-- $(top_builddir)/src/microhttpd/libmicrohttpd.la
-diff --git a/src/microhttpd_ws/Makefile.in b/src/microhttpd_ws/Makefile.in
-deleted file mode 100644
-index 43571e7..0000000
---- a/src/microhttpd_ws/Makefile.in
-+++ /dev/null
-@@ -1,1298 +0,0 @@
--# Makefile.in generated by automake 1.16.5 from Makefile.am.
--# @configure_input@
--
--# Copyright (C) 1994-2021 Free Software Foundation, Inc.
--
--# This Makefile.in is free software; the Free Software Foundation
--# gives unlimited permission to copy and/or distribute it,
--# with or without modifications, as long as this notice is preserved.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
--# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
--# PARTICULAR PURPOSE.
--
--@SET_MAKE@
--
--
--VPATH = @srcdir@
--am__is_gnu_make = { \
-- if test -z '$(MAKELEVEL)'; then \
-- false; \
-- elif test -n '$(MAKE_HOST)'; then \
-- true; \
-- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-- true; \
-- else \
-- false; \
-- fi; \
--}
--am__make_running_with_option = \
-- case $${target_option-} in \
-- ?) ;; \
-- *) echo "am__make_running_with_option: internal error: invalid" \
-- "target option '$${target_option-}' specified" >&2; \
-- exit 1;; \
-- esac; \
-- has_opt=no; \
-- sane_makeflags=$$MAKEFLAGS; \
-- if $(am__is_gnu_make); then \
-- sane_makeflags=$$MFLAGS; \
-- else \
-- case $$MAKEFLAGS in \
-- *\\[\ \ ]*) \
-- bs=\\; \
-- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
-- esac; \
-- fi; \
-- skip_next=no; \
-- strip_trailopt () \
-- { \
-- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-- }; \
-- for flg in $$sane_makeflags; do \
-- test $$skip_next = yes && { skip_next=no; continue; }; \
-- case $$flg in \
-- *=*|--*) continue;; \
-- -*I) strip_trailopt 'I'; skip_next=yes;; \
-- -*I?*) strip_trailopt 'I';; \
-- -*O) strip_trailopt 'O'; skip_next=yes;; \
-- -*O?*) strip_trailopt 'O';; \
-- -*l) strip_trailopt 'l'; skip_next=yes;; \
-- -*l?*) strip_trailopt 'l';; \
-- -[dEDm]) skip_next=yes;; \
-- -[JT]) skip_next=yes;; \
-- esac; \
-- case $$flg in \
-- *$$target_option*) has_opt=yes; break;; \
-- esac; \
-- done; \
-- test $$has_opt = yes
--am__make_dryrun = (target_option=n; $(am__make_running_with_option))
--am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
--pkgdatadir = $(datadir)/@PACKAGE@
--pkgincludedir = $(includedir)/@PACKAGE@
--pkglibdir = $(libdir)/@PACKAGE@
--pkglibexecdir = $(libexecdir)/@PACKAGE@
--am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
--install_sh_DATA = $(install_sh) -c -m 644
--install_sh_PROGRAM = $(install_sh) -c
--install_sh_SCRIPT = $(install_sh) -c
--INSTALL_HEADER = $(INSTALL_DATA)
--transform = $(program_transform_name)
--NORMAL_INSTALL = :
--PRE_INSTALL = :
--POST_INSTALL = :
--NORMAL_UNINSTALL = :
--PRE_UNINSTALL = :
--POST_UNINSTALL = :
--build_triplet = @build@
--host_triplet = @host@
--check_PROGRAMS = test_websocket$(EXEEXT)
--subdir = src/microhttpd_ws
--ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
--am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
-- $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-- $(top_srcdir)/m4/ax_append_flag.m4 \
-- $(top_srcdir)/m4/ax_append_link_flags.m4 \
-- $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-- $(top_srcdir)/m4/ax_check_link_flag.m4 \
-- $(top_srcdir)/m4/ax_count_cpus.m4 \
-- $(top_srcdir)/m4/ax_pthread.m4 \
-- $(top_srcdir)/m4/ax_require_defined.m4 \
-- $(top_srcdir)/m4/libcurl.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-- $(top_srcdir)/m4/lt~obsolete.m4 \
-- $(top_srcdir)/m4/mhd_append_flag_to_var.m4 \
-- $(top_srcdir)/m4/mhd_bool.m4 \
-- $(top_srcdir)/m4/mhd_check_add_cc_cflag.m4 \
-- $(top_srcdir)/m4/mhd_check_add_cc_cflags.m4 \
-- $(top_srcdir)/m4/mhd_check_add_cc_ldflag.m4 \
-- $(top_srcdir)/m4/mhd_check_add_cc_ldflags.m4 \
-- $(top_srcdir)/m4/mhd_check_cc_cflag.m4 \
-- $(top_srcdir)/m4/mhd_check_func.m4 \
-- $(top_srcdir)/m4/mhd_check_func_gettimeofday.m4 \
-- $(top_srcdir)/m4/mhd_check_func_run.m4 \
-- $(top_srcdir)/m4/mhd_check_link_run.m4 \
-- $(top_srcdir)/m4/mhd_find_add_cc_cflag.m4 \
-- $(top_srcdir)/m4/mhd_find_add_cc_cflag_ifelse.m4 \
-- $(top_srcdir)/m4/mhd_find_lib.m4 \
-- $(top_srcdir)/m4/mhd_norm_expd.m4 \
-- $(top_srcdir)/m4/mhd_prepend_flag_to_var.m4 \
-- $(top_srcdir)/m4/mhd_shutdown_socket_trigger.m4 \
-- $(top_srcdir)/m4/mhd_sys_extentions.m4 $(top_srcdir)/m4/pkg.m4 \
-- $(top_srcdir)/configure.ac
--am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-- $(ACLOCAL_M4)
--DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
--mkinstalldirs = $(install_sh) -d
--CONFIG_HEADER = $(top_builddir)/MHD_config.h
--CONFIG_CLEAN_FILES =
--CONFIG_CLEAN_VPATH_FILES =
--am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
--am__vpath_adj = case $$p in \
-- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-- *) f=$$p;; \
-- esac;
--am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
--am__install_max = 40
--am__nobase_strip_setup = \
-- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
--am__nobase_strip = \
-- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
--am__nobase_list = $(am__nobase_strip_setup); \
-- for p in $$list; do echo "$$p $$p"; done | \
-- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-- if (++n[$$2] == $(am__install_max)) \
-- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-- END { for (dir in files) print dir, files[dir] }'
--am__base_list = \
-- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
--am__uninstall_files_from_dir = { \
-- test -z "$$files" \
-- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-- $(am__cd) "$$dir" && rm -f $$files; }; \
-- }
--am__installdirs = "$(DESTDIR)$(libdir)"
--LTLIBRARIES = $(lib_LTLIBRARIES)
--am__DEPENDENCIES_1 =
--libmicrohttpd_ws_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
--am_libmicrohttpd_ws_la_OBJECTS = libmicrohttpd_ws_la-sha1.lo \
-- libmicrohttpd_ws_la-mhd_websocket.lo
--libmicrohttpd_ws_la_OBJECTS = $(am_libmicrohttpd_ws_la_OBJECTS)
--AM_V_lt = $(am__v_lt_@AM_V@)
--am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
--am__v_lt_0 = --silent
--am__v_lt_1 =
--libmicrohttpd_ws_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-- $(libmicrohttpd_ws_la_CFLAGS) $(CFLAGS) \
-- $(libmicrohttpd_ws_la_LDFLAGS) $(LDFLAGS) -o $@
--am_test_websocket_OBJECTS = test_websocket.$(OBJEXT)
--test_websocket_OBJECTS = $(am_test_websocket_OBJECTS)
--test_websocket_DEPENDENCIES = \
-- $(top_builddir)/src/microhttpd_ws/libmicrohttpd_ws.la \
-- $(top_builddir)/src/microhttpd/libmicrohttpd.la
--AM_V_P = $(am__v_P_@AM_V@)
--am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
--am__v_P_0 = false
--am__v_P_1 = :
--AM_V_GEN = $(am__v_GEN_@AM_V@)
--am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
--am__v_GEN_0 = @echo " GEN " $@;
--am__v_GEN_1 =
--AM_V_at = $(am__v_at_@AM_V@)
--am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
--am__v_at_0 = @
--am__v_at_1 =
--DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
--am__maybe_remake_depfiles = depfiles
--am__depfiles_remade = \
-- ./$(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Plo \
-- ./$(DEPDIR)/libmicrohttpd_ws_la-sha1.Plo \
-- ./$(DEPDIR)/test_websocket.Po
--am__mv = mv -f
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-- $(AM_CFLAGS) $(CFLAGS)
--AM_V_CC = $(am__v_CC_@AM_V@)
--am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
--am__v_CC_0 = @echo " CC " $@;
--am__v_CC_1 =
--CCLD = $(CC)
--LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-- $(AM_LDFLAGS) $(LDFLAGS) -o $@
--AM_V_CCLD = $(am__v_CCLD_@AM_V@)
--am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
--am__v_CCLD_0 = @echo " CCLD " $@;
--am__v_CCLD_1 =
--SOURCES = $(libmicrohttpd_ws_la_SOURCES) $(test_websocket_SOURCES)
--DIST_SOURCES = $(libmicrohttpd_ws_la_SOURCES) \
-- $(test_websocket_SOURCES)
--RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-- ctags-recursive dvi-recursive html-recursive info-recursive \
-- install-data-recursive install-dvi-recursive \
-- install-exec-recursive install-html-recursive \
-- install-info-recursive install-pdf-recursive \
-- install-ps-recursive install-recursive installcheck-recursive \
-- installdirs-recursive pdf-recursive ps-recursive \
-- tags-recursive uninstall-recursive
--am__can_run_installinfo = \
-- case $$AM_UPDATE_INFO_DIR in \
-- n|no|NO) false;; \
-- *) (install-info --version) >/dev/null 2>&1;; \
-- esac
--DATA = $(noinst_DATA)
--RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
-- distclean-recursive maintainer-clean-recursive
--am__recursive_targets = \
-- $(RECURSIVE_TARGETS) \
-- $(RECURSIVE_CLEAN_TARGETS) \
-- $(am__extra_recursive_targets)
--AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-- check recheck distdir distdir-am
--am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
--# Read a list of newline-separated strings from the standard input,
--# and print each of them once, without duplicates. Input order is
--# *not* preserved.
--am__uniquify_input = $(AWK) '\
-- BEGIN { nonempty = 0; } \
-- { items[$$0] = 1; nonempty = 1; } \
-- END { if (nonempty) { for (i in items) print i; }; } \
--'
--# Make sure the list of sources is unique. This is necessary because,
--# e.g., the same source file might be shared among _SOURCES variables
--# for different programs/libraries.
--am__define_uniq_tagged_files = \
-- list='$(am__tagged_files)'; \
-- unique=`for i in $$list; do \
-- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-- done | $(am__uniquify_input)`
--am__tty_colors_dummy = \
-- mgn= red= grn= lgn= blu= brg= std=; \
-- am__color_tests=no
--am__tty_colors = { \
-- $(am__tty_colors_dummy); \
-- if test "X$(AM_COLOR_TESTS)" = Xno; then \
-- am__color_tests=no; \
-- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-- am__color_tests=yes; \
-- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-- am__color_tests=yes; \
-- fi; \
-- if test $$am__color_tests = yes; then \
-- red='^[[0;31m'; \
-- grn='^[[0;32m'; \
-- lgn='^[[1;32m'; \
-- blu='^[[1;34m'; \
-- mgn='^[[0;35m'; \
-- brg='^[[1m'; \
-- std='^[[m'; \
-- fi; \
--}
--am__recheck_rx = ^[ ]*:recheck:[ ]*
--am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
--am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
--# A command that, given a newline-separated list of test names on the
--# standard input, print the name of the tests that are to be re-run
--# upon "make recheck".
--am__list_recheck_tests = $(AWK) '{ \
-- recheck = 1; \
-- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-- { \
-- if (rc < 0) \
-- { \
-- if ((getline line2 < ($$0 ".log")) < 0) \
-- recheck = 0; \
-- break; \
-- } \
-- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-- { \
-- recheck = 0; \
-- break; \
-- } \
-- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-- { \
-- break; \
-- } \
-- }; \
-- if (recheck) \
-- print $$0; \
-- close ($$0 ".trs"); \
-- close ($$0 ".log"); \
--}'
--# A command that, given a newline-separated list of test names on the
--# standard input, create the global log from their .trs and .log files.
--am__create_global_log = $(AWK) ' \
--function fatal(msg) \
--{ \
-- print "fatal: making $@: " msg | "cat >&2"; \
-- exit 1; \
--} \
--function rst_section(header) \
--{ \
-- print header; \
-- len = length(header); \
-- for (i = 1; i <= len; i = i + 1) \
-- printf "="; \
-- printf "\n\n"; \
--} \
--{ \
-- copy_in_global_log = 1; \
-- global_test_result = "RUN"; \
-- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-- { \
-- if (rc < 0) \
-- fatal("failed to read from " $$0 ".trs"); \
-- if (line ~ /$(am__global_test_result_rx)/) \
-- { \
-- sub("$(am__global_test_result_rx)", "", line); \
-- sub("[ ]*$$", "", line); \
-- global_test_result = line; \
-- } \
-- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-- copy_in_global_log = 0; \
-- }; \
-- if (copy_in_global_log) \
-- { \
-- rst_section(global_test_result ": " $$0); \
-- while ((rc = (getline line < ($$0 ".log"))) != 0) \
-- { \
-- if (rc < 0) \
-- fatal("failed to read from " $$0 ".log"); \
-- print line; \
-- }; \
-- printf "\n"; \
-- }; \
-- close ($$0 ".trs"); \
-- close ($$0 ".log"); \
--}'
--# Restructured Text title.
--am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
--# Solaris 10 'make', and several other traditional 'make' implementations,
--# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
--# by disabling -e (using the XSI extension "set +e") if it's set.
--am__sh_e_setup = case $$- in *e*) set +e;; esac
--# Default flags passed to test drivers.
--am__common_driver_flags = \
-- --color-tests "$$am__color_tests" \
-- --enable-hard-errors "$$am__enable_hard_errors" \
-- --expect-failure "$$am__expect_failure"
--# To be inserted before the command running the test. Creates the
--# directory for the log if needed. Stores in $dir the directory
--# containing $f, in $tst the test, in $log the log. Executes the
--# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
--# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
--# will run the test scripts (or their associated LOG_COMPILER, if
--# thy have one).
--am__check_pre = \
--$(am__sh_e_setup); \
--$(am__vpath_adj_setup) $(am__vpath_adj) \
--$(am__tty_colors); \
--srcdir=$(srcdir); export srcdir; \
--case "$@" in \
-- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
-- *) am__odir=.;; \
--esac; \
--test "x$$am__odir" = x"." || test -d "$$am__odir" \
-- || $(MKDIR_P) "$$am__odir" || exit $$?; \
--if test -f "./$$f"; then dir=./; \
--elif test -f "$$f"; then dir=; \
--else dir="$(srcdir)/"; fi; \
--tst=$$dir$$f; log='$@'; \
--if test -n '$(DISABLE_HARD_ERRORS)'; then \
-- am__enable_hard_errors=no; \
--else \
-- am__enable_hard_errors=yes; \
--fi; \
--case " $(XFAIL_TESTS) " in \
-- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
-- am__expect_failure=yes;; \
-- *) \
-- am__expect_failure=no;; \
--esac; \
--$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
--# A shell command to get the names of the tests scripts with any registered
--# extension removed (i.e., equivalently, the names of the test logs, with
--# the '.log' extension removed). The result is saved in the shell variable
--# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
--# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
--# since that might cause problem with VPATH rewrites for suffix-less tests.
--# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
--am__set_TESTS_bases = \
-- bases='$(TEST_LOGS)'; \
-- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-- bases=`echo $$bases`
--AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
--RECHECK_LOGS = $(TEST_LOGS)
--TEST_SUITE_LOG = test-suite.log
--TEST_EXTENSIONS = @EXEEXT@ .test
--LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
--LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
--am__set_b = \
-- case '$@' in \
-- */*) \
-- case '$*' in \
-- */*) b='$*';; \
-- *) b=`echo '$@' | sed 's/\.log$$//'`; \
-- esac;; \
-- *) \
-- b='$*';; \
-- esac
--am__test_logs1 = $(TESTS:=.log)
--am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
--TEST_LOGS = $(am__test_logs2:.test.log=.log)
--TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
--TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-- $(TEST_LOG_FLAGS)
--DIST_SUBDIRS = $(SUBDIRS)
--am__DIST_COMMON = $(srcdir)/Makefile.in \
-- $(top_srcdir)/build-aux/depcomp \
-- $(top_srcdir)/build-aux/test-driver
--DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
--am__relativize = \
-- dir0=`pwd`; \
-- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-- sed_rest='s,^[^/]*/*,,'; \
-- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-- sed_butlast='s,/*[^/]*$$,,'; \
-- while test -n "$$dir1"; do \
-- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-- if test "$$first" != "."; then \
-- if test "$$first" = ".."; then \
-- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-- else \
-- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-- if test "$$first2" = "$$first"; then \
-- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-- else \
-- dir2="../$$dir2"; \
-- fi; \
-- dir0="$$dir0"/"$$first"; \
-- fi; \
-- fi; \
-- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-- done; \
-- reldir="$$dir2"
--ACLOCAL = @ACLOCAL@
--AMTAR = @AMTAR@
--AM_ASAN_OPTIONS = @AM_ASAN_OPTIONS@
--AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
--AM_LSAN_OPTIONS = @AM_LSAN_OPTIONS@
--AM_UBSAN_OPTIONS = @AM_UBSAN_OPTIONS@
--AR = @AR@
--AS = @AS@
--AUTOCONF = @AUTOCONF@
--AUTOHEADER = @AUTOHEADER@
--AUTOMAKE = @AUTOMAKE@
--AWK = @AWK@
--CC = @CC@
--CCDEPMODE = @CCDEPMODE@
--CFLAGS = @CFLAGS@
--CFLAGS_ac = @CFLAGS_ac@
--CPP = @CPP@
--CPPFLAGS = @CPPFLAGS@
--CPPFLAGS_ac = @CPPFLAGS_ac@
--CPU_COUNT = @CPU_COUNT@
--CSCOPE = @CSCOPE@
--CTAGS = @CTAGS@
--CYGPATH_W = @CYGPATH_W@
--DEFS = @DEFS@
--DEPDIR = @DEPDIR@
--DLLTOOL = @DLLTOOL@
--DSYMUTIL = @DSYMUTIL@
--DUMPBIN = @DUMPBIN@
--ECHO_C = @ECHO_C@
--ECHO_N = @ECHO_N@
--ECHO_T = @ECHO_T@
--EGREP = @EGREP@
--EMPTY_VAR = @EMPTY_VAR@
--ETAGS = @ETAGS@
--EXEEXT = @EXEEXT@
--FGREP = @FGREP@
--FILECMD = @FILECMD@
--GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
--GNUTLS_CPPFLAGS = @GNUTLS_CPPFLAGS@
--GNUTLS_LDFLAGS = @GNUTLS_LDFLAGS@
--GNUTLS_LIBS = @GNUTLS_LIBS@
--GREP = @GREP@
--HAVE_CURL_BINARY = @HAVE_CURL_BINARY@
--HAVE_MAKEINFO_BINARY = @HAVE_MAKEINFO_BINARY@
--HIDDEN_VISIBILITY_CFLAGS = @HIDDEN_VISIBILITY_CFLAGS@
--INSTALL = @INSTALL@
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
--LD = @LD@
--LDFLAGS = @LDFLAGS@
--LDFLAGS_ac = @LDFLAGS_ac@
--LIBCURL = @LIBCURL@
--LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@
--LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
--LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
--LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
--LIBOBJS = @LIBOBJS@
--LIBS = @LIBS@
--LIBTOOL = @LIBTOOL@
--LIB_VERSION_AGE = @LIB_VERSION_AGE@
--LIB_VERSION_CURRENT = @LIB_VERSION_CURRENT@
--LIB_VERSION_REVISION = @LIB_VERSION_REVISION@
--LIPO = @LIPO@
--LN_S = @LN_S@
--LTLIBOBJS = @LTLIBOBJS@
--LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
--MAKEINFO = @MAKEINFO@
--MANIFEST_TOOL = @MANIFEST_TOOL@
--MHD_AUX_DIR = @MHD_AUX_DIR@
--MHD_LIBDEPS = @MHD_LIBDEPS@
--MHD_LIBDEPS_PKGCFG = @MHD_LIBDEPS_PKGCFG@
--MHD_LIB_CFLAGS = @MHD_LIB_CFLAGS@
--MHD_LIB_CPPFLAGS = @MHD_LIB_CPPFLAGS@
--MHD_LIB_LDFLAGS = @MHD_LIB_LDFLAGS@
--MHD_PLUGIN_INSTALL_PREFIX = @MHD_PLUGIN_INSTALL_PREFIX@
--MHD_REQ_PRIVATE = @MHD_REQ_PRIVATE@
--MHD_TLS_LIBDEPS = @MHD_TLS_LIBDEPS@
--MHD_TLS_LIB_CFLAGS = @MHD_TLS_LIB_CFLAGS@
--MHD_TLS_LIB_CPPFLAGS = @MHD_TLS_LIB_CPPFLAGS@
--MHD_TLS_LIB_LDFLAGS = @MHD_TLS_LIB_LDFLAGS@
--MHD_W32_DLL_SUFF = @MHD_W32_DLL_SUFF@
--MKDIR_P = @MKDIR_P@
--MS_LIB_TOOL = @MS_LIB_TOOL@
--NM = @NM@
--NMEDIT = @NMEDIT@
--OBJDUMP = @OBJDUMP@
--OBJEXT = @OBJEXT@
--OTOOL = @OTOOL@
--OTOOL64 = @OTOOL64@
--PACKAGE = @PACKAGE@
--PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
--PACKAGE_NAME = @PACKAGE_NAME@
--PACKAGE_STRING = @PACKAGE_STRING@
--PACKAGE_TARNAME = @PACKAGE_TARNAME@
--PACKAGE_URL = @PACKAGE_URL@
--PACKAGE_VERSION = @PACKAGE_VERSION@
--PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
--PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
--PACKAGE_VERSION_SUBMINOR = @PACKAGE_VERSION_SUBMINOR@
--PATH_SEPARATOR = @PATH_SEPARATOR@
--PKG_CONFIG = @PKG_CONFIG@
--PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
--PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
--PTHREAD_CC = @PTHREAD_CC@
--PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
--PTHREAD_CXX = @PTHREAD_CXX@
--PTHREAD_LIBS = @PTHREAD_LIBS@
--RANLIB = @RANLIB@
--RC = @RC@
--SED = @SED@
--SET_MAKE = @SET_MAKE@
--SHELL = @SHELL@
--SOCAT = @SOCAT@
--STRIP = @STRIP@
--TESTS_ENVIRONMENT_ac = @TESTS_ENVIRONMENT_ac@
--VERSION = @VERSION@
--W32CRT = @W32CRT@
--ZZUF = @ZZUF@
--_libcurl_config = @_libcurl_config@
--abs_builddir = @abs_builddir@
--abs_srcdir = @abs_srcdir@
--abs_top_builddir = @abs_top_builddir@
--abs_top_srcdir = @abs_top_srcdir@
--ac_configure_args = @ac_configure_args@
--ac_ct_AR = @ac_ct_AR@
--ac_ct_CC = @ac_ct_CC@
--ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
--am__include = @am__include@
--am__leading_dot = @am__leading_dot@
--am__quote = @am__quote@
--am__tar = @am__tar@
--am__untar = @am__untar@
--ax_pthread_config = @ax_pthread_config@
--bindir = @bindir@
--build = @build@
--build_alias = @build_alias@
--build_cpu = @build_cpu@
--build_os = @build_os@
--build_vendor = @build_vendor@
--builddir = @builddir@
--datadir = @datadir@
--datarootdir = @datarootdir@
--docdir = @docdir@
--dvidir = @dvidir@
--exec_prefix = @exec_prefix@
--host = @host@
--host_alias = @host_alias@
--host_cpu = @host_cpu@
--host_os = @host_os@
--host_vendor = @host_vendor@
--htmldir = @htmldir@
--includedir = @includedir@
--infodir = @infodir@
--install_sh = @install_sh@
--libdir = @libdir@
--libexecdir = @libexecdir@
--localedir = @localedir@
--localstatedir = @localstatedir@
--lt_cv_objdir = @lt_cv_objdir@
--mandir = @mandir@
--mkdir_p = @mkdir_p@
--oldincludedir = @oldincludedir@
--pdfdir = @pdfdir@
--prefix = @prefix@
--program_transform_name = @program_transform_name@
--psdir = @psdir@
--runstatedir = @runstatedir@
--sbindir = @sbindir@
--sharedstatedir = @sharedstatedir@
--srcdir = @srcdir@
--sysconfdir = @sysconfdir@
--target_alias = @target_alias@
--top_build_prefix = @top_build_prefix@
--top_builddir = @top_builddir@
--top_srcdir = @top_srcdir@
--
--# This Makefile.am is in the public domain
--AM_CPPFLAGS = \
-- -I$(top_srcdir)/src/include \
-- -I$(top_srcdir)/src/microhttpd
--
--AM_CFLAGS = $(HIDDEN_VISIBILITY_CFLAGS)
--noinst_DATA =
--MOSTLYCLEANFILES =
--SUBDIRS = .
--lib_LTLIBRARIES = \
-- libmicrohttpd_ws.la
--
--libmicrohttpd_ws_la_SOURCES = \
-- sha1.c sha1.h \
-- mhd_websocket.c
--
--libmicrohttpd_ws_la_CPPFLAGS = \
-- $(AM_CPPFLAGS) $(MHD_LIB_CPPFLAGS) \
-- -DBUILDING_MHD_LIB=1
--
--libmicrohttpd_ws_la_CFLAGS = \
-- $(AM_CFLAGS) $(MHD_LIB_CFLAGS)
--
--libmicrohttpd_ws_la_LDFLAGS = \
-- $(MHD_LIB_LDFLAGS) \
-- $(W32_MHD_LIB_LDFLAGS) \
-- -version-info 0:0:0
--
--libmicrohttpd_ws_la_LIBADD = \
-- $(MHD_LIBDEPS)
--
--TESTS = $(check_PROGRAMS)
--test_websocket_SOURCES = \
-- test_websocket.c
--
--test_websocket_LDADD = \
-- $(top_builddir)/src/microhttpd_ws/libmicrohttpd_ws.la \
-- $(top_builddir)/src/microhttpd/libmicrohttpd.la
--
--all: all-recursive
--
--.SUFFIXES:
--.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
--$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
-- @for dep in $?; do \
-- case '$(am__configure_deps)' in \
-- *$$dep*) \
-- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-- && { if test -f $@; then exit 0; else break; fi; }; \
-- exit 1;; \
-- esac; \
-- done; \
-- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/microhttpd_ws/Makefile'; \
-- $(am__cd) $(top_srcdir) && \
-- $(AUTOMAKE) --gnu src/microhttpd_ws/Makefile
--Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-- @case '$?' in \
-- *config.status*) \
-- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-- *) \
-- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-- esac;
--
--$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
--
--$(top_srcdir)/configure: $(am__configure_deps)
-- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
--$(ACLOCAL_M4): $(am__aclocal_m4_deps)
-- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
--$(am__aclocal_m4_deps):
--
--clean-checkPROGRAMS:
-- @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
-- echo " rm -f" $$list; \
-- rm -f $$list || exit $$?; \
-- test -n "$(EXEEXT)" || exit 0; \
-- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-- echo " rm -f" $$list; \
-- rm -f $$list
--
--install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-- @$(NORMAL_INSTALL)
-- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-- list2=; for p in $$list; do \
-- if test -f $$p; then \
-- list2="$$list2 $$p"; \
-- else :; fi; \
-- done; \
-- test -z "$$list2" || { \
-- echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-- $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-- }
--
--uninstall-libLTLIBRARIES:
-- @$(NORMAL_UNINSTALL)
-- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-- for p in $$list; do \
-- $(am__strip_dir) \
-- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-- done
--
--clean-libLTLIBRARIES:
-- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-- @list='$(lib_LTLIBRARIES)'; \
-- locs=`for p in $$list; do echo $$p; done | \
-- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-- sort -u`; \
-- test -z "$$locs" || { \
-- echo rm -f $${locs}; \
-- rm -f $${locs}; \
-- }
--
--libmicrohttpd_ws.la: $(libmicrohttpd_ws_la_OBJECTS) $(libmicrohttpd_ws_la_DEPENDENCIES) $(EXTRA_libmicrohttpd_ws_la_DEPENDENCIES)
-- $(AM_V_CCLD)$(libmicrohttpd_ws_la_LINK) -rpath $(libdir) $(libmicrohttpd_ws_la_OBJECTS) $(libmicrohttpd_ws_la_LIBADD) $(LIBS)
--
--test_websocket$(EXEEXT): $(test_websocket_OBJECTS) $(test_websocket_DEPENDENCIES) $(EXTRA_test_websocket_DEPENDENCIES)
-- @rm -f test_websocket$(EXEEXT)
-- $(AM_V_CCLD)$(LINK) $(test_websocket_OBJECTS) $(test_websocket_LDADD) $(LIBS)
--
--mostlyclean-compile:
-- -rm -f *.$(OBJEXT)
--
--distclean-compile:
-- -rm -f *.tab.c
--
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmicrohttpd_ws_la-sha1.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_websocket.Po@am__quote@ # am--include-marker
--
--$(am__depfiles_remade):
-- @$(MKDIR_P) $(@D)
-- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
--
--am--depfiles: $(am__depfiles_remade)
--
--.c.o:
--@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
--@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
--@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
--
--.c.obj:
--@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
--@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
--@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
--
--.c.lo:
--@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
--@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
--@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
--
--libmicrohttpd_ws_la-sha1.lo: sha1.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrohttpd_ws_la_CPPFLAGS) $(CPPFLAGS) $(libmicrohttpd_ws_la_CFLAGS) $(CFLAGS) -MT libmicrohttpd_ws_la-sha1.lo -MD -MP -MF $(DEPDIR)/libmicrohttpd_ws_la-sha1.Tpo -c -o libmicrohttpd_ws_la-sha1.lo `test -f 'sha1.c' || echo '$(srcdir)/'`sha1.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmicrohttpd_ws_la-sha1.Tpo $(DEPDIR)/libmicrohttpd_ws_la-sha1.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sha1.c' object='libmicrohttpd_ws_la-sha1.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrohttpd_ws_la_CPPFLAGS) $(CPPFLAGS) $(libmicrohttpd_ws_la_CFLAGS) $(CFLAGS) -c -o libmicrohttpd_ws_la-sha1.lo `test -f 'sha1.c' || echo '$(srcdir)/'`sha1.c
--
--libmicrohttpd_ws_la-mhd_websocket.lo: mhd_websocket.c
--@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrohttpd_ws_la_CPPFLAGS) $(CPPFLAGS) $(libmicrohttpd_ws_la_CFLAGS) $(CFLAGS) -MT libmicrohttpd_ws_la-mhd_websocket.lo -MD -MP -MF $(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Tpo -c -o libmicrohttpd_ws_la-mhd_websocket.lo `test -f 'mhd_websocket.c' || echo '$(srcdir)/'`mhd_websocket.c
--@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Tpo $(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mhd_websocket.c' object='libmicrohttpd_ws_la-mhd_websocket.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrohttpd_ws_la_CPPFLAGS) $(CPPFLAGS) $(libmicrohttpd_ws_la_CFLAGS) $(CFLAGS) -c -o libmicrohttpd_ws_la-mhd_websocket.lo `test -f 'mhd_websocket.c' || echo '$(srcdir)/'`mhd_websocket.c
--
--mostlyclean-libtool:
-- -rm -f *.lo
--
--clean-libtool:
-- -rm -rf .libs _libs
--
--# This directory's subdirectories are mostly independent; you can cd
--# into them and run 'make' without going through this Makefile.
--# To change the values of 'make' variables: instead of editing Makefiles,
--# (1) if the variable is set in 'config.status', edit 'config.status'
--# (which will cause the Makefiles to be regenerated when you run 'make');
--# (2) otherwise, pass the desired values on the 'make' command line.
--$(am__recursive_targets):
-- @fail=; \
-- if $(am__make_keepgoing); then \
-- failcom='fail=yes'; \
-- else \
-- failcom='exit 1'; \
-- fi; \
-- dot_seen=no; \
-- target=`echo $@ | sed s/-recursive//`; \
-- case "$@" in \
-- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-- *) list='$(SUBDIRS)' ;; \
-- esac; \
-- for subdir in $$list; do \
-- echo "Making $$target in $$subdir"; \
-- if test "$$subdir" = "."; then \
-- dot_seen=yes; \
-- local_target="$$target-am"; \
-- else \
-- local_target="$$target"; \
-- fi; \
-- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-- || eval $$failcom; \
-- done; \
-- if test "$$dot_seen" = "no"; then \
-- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-- fi; test -z "$$fail"
--
--ID: $(am__tagged_files)
-- $(am__define_uniq_tagged_files); mkid -fID $$unique
--tags: tags-recursive
--TAGS: tags
--
--tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-- set x; \
-- here=`pwd`; \
-- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-- include_option=--etags-include; \
-- empty_fix=.; \
-- else \
-- include_option=--include; \
-- empty_fix=; \
-- fi; \
-- list='$(SUBDIRS)'; for subdir in $$list; do \
-- if test "$$subdir" = .; then :; else \
-- test ! -f $$subdir/TAGS || \
-- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-- fi; \
-- done; \
-- $(am__define_uniq_tagged_files); \
-- shift; \
-- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-- test -n "$$unique" || unique=$$empty_fix; \
-- if test $$# -gt 0; then \
-- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-- "$$@" $$unique; \
-- else \
-- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-- $$unique; \
-- fi; \
-- fi
--ctags: ctags-recursive
--
--CTAGS: ctags
--ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-- $(am__define_uniq_tagged_files); \
-- test -z "$(CTAGS_ARGS)$$unique" \
-- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-- $$unique
--
--GTAGS:
-- here=`$(am__cd) $(top_builddir) && pwd` \
-- && $(am__cd) $(top_srcdir) \
-- && gtags -i $(GTAGS_ARGS) "$$here"
--cscopelist: cscopelist-recursive
--
--cscopelist-am: $(am__tagged_files)
-- list='$(am__tagged_files)'; \
-- case "$(srcdir)" in \
-- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-- *) sdir=$(subdir)/$(srcdir) ;; \
-- esac; \
-- for i in $$list; do \
-- if test -f "$$i"; then \
-- echo "$(subdir)/$$i"; \
-- else \
-- echo "$$sdir/$$i"; \
-- fi; \
-- done >> $(top_builddir)/cscope.files
--
--distclean-tags:
-- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--
--# Recover from deleted '.trs' file; this should ensure that
--# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
--# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
--# to avoid problems with "make -n".
--.log.trs:
-- rm -f $< $@
-- $(MAKE) $(AM_MAKEFLAGS) $<
--
--# Leading 'am--fnord' is there to ensure the list of targets does not
--# expand to empty, as could happen e.g. with make check TESTS=''.
--am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
--am--force-recheck:
-- @:
--
--$(TEST_SUITE_LOG): $(TEST_LOGS)
-- @$(am__set_TESTS_bases); \
-- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-- redo_bases=`for i in $$bases; do \
-- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-- done`; \
-- if test -n "$$redo_bases"; then \
-- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-- if $(am__make_dryrun); then :; else \
-- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-- fi; \
-- fi; \
-- if test -n "$$am__remaking_logs"; then \
-- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-- "recursion detected" >&2; \
-- elif test -n "$$redo_logs"; then \
-- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-- fi; \
-- if $(am__make_dryrun); then :; else \
-- st=0; \
-- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-- for i in $$redo_bases; do \
-- test -f $$i.trs && test -r $$i.trs \
-- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-- test -f $$i.log && test -r $$i.log \
-- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-- done; \
-- test $$st -eq 0 || exit 1; \
-- fi
-- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-- ws='[ ]'; \
-- results=`for b in $$bases; do echo $$b.trs; done`; \
-- test -n "$$results" || results=/dev/null; \
-- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
-- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
-- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
-- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
-- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-- success=true; \
-- else \
-- success=false; \
-- fi; \
-- br='==================='; br=$$br$$br$$br$$br; \
-- result_count () \
-- { \
-- if test x"$$1" = x"--maybe-color"; then \
-- maybe_colorize=yes; \
-- elif test x"$$1" = x"--no-color"; then \
-- maybe_colorize=no; \
-- else \
-- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-- fi; \
-- shift; \
-- desc=$$1 count=$$2; \
-- if test $$maybe_colorize = yes && test $$count -gt 0; then \
-- color_start=$$3 color_end=$$std; \
-- else \
-- color_start= color_end=; \
-- fi; \
-- echo "$${color_start}# $$desc $$count$${color_end}"; \
-- }; \
-- create_testsuite_report () \
-- { \
-- result_count $$1 "TOTAL:" $$all "$$brg"; \
-- result_count $$1 "PASS: " $$pass "$$grn"; \
-- result_count $$1 "SKIP: " $$skip "$$blu"; \
-- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-- result_count $$1 "FAIL: " $$fail "$$red"; \
-- result_count $$1 "XPASS:" $$xpass "$$red"; \
-- result_count $$1 "ERROR:" $$error "$$mgn"; \
-- }; \
-- { \
-- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
-- $(am__rst_title); \
-- create_testsuite_report --no-color; \
-- echo; \
-- echo ".. contents:: :depth: 2"; \
-- echo; \
-- for b in $$bases; do echo $$b; done \
-- | $(am__create_global_log); \
-- } >$(TEST_SUITE_LOG).tmp || exit 1; \
-- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
-- if $$success; then \
-- col="$$grn"; \
-- else \
-- col="$$red"; \
-- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
-- fi; \
-- echo "$${col}$$br$${std}"; \
-- echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
-- echo "$${col}$$br$${std}"; \
-- create_testsuite_report --maybe-color; \
-- echo "$$col$$br$$std"; \
-- if $$success; then :; else \
-- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
-- if test -n "$(PACKAGE_BUGREPORT)"; then \
-- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
-- fi; \
-- echo "$$col$$br$$std"; \
-- fi; \
-- $$success || exit 1
--
--check-TESTS: $(check_PROGRAMS)
-- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
-- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-- @set +e; $(am__set_TESTS_bases); \
-- log_list=`for i in $$bases; do echo $$i.log; done`; \
-- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-- exit $$?;
--recheck: all $(check_PROGRAMS)
-- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-- @set +e; $(am__set_TESTS_bases); \
-- bases=`for i in $$bases; do echo $$i; done \
-- | $(am__list_recheck_tests)` || exit 1; \
-- log_list=`for i in $$bases; do echo $$i.log; done`; \
-- log_list=`echo $$log_list`; \
-- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-- am__force_recheck=am--force-recheck \
-- TEST_LOGS="$$log_list"; \
-- exit $$?
--test_websocket.log: test_websocket$(EXEEXT)
-- @p='test_websocket$(EXEEXT)'; \
-- b='test_websocket'; \
-- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-- --log-file $$b.log --trs-file $$b.trs \
-- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-- "$$tst" $(AM_TESTS_FD_REDIRECT)
--.test.log:
-- @p='$<'; \
-- $(am__set_b); \
-- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-- --log-file $$b.log --trs-file $$b.trs \
-- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-- "$$tst" $(AM_TESTS_FD_REDIRECT)
--@am__EXEEXT_TRUE@.test$(EXEEXT).log:
--@am__EXEEXT_TRUE@ @p='$<'; \
--@am__EXEEXT_TRUE@ $(am__set_b); \
--@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
--@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
--@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
--@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
--distdir: $(BUILT_SOURCES)
-- $(MAKE) $(AM_MAKEFLAGS) distdir-am
--
--distdir-am: $(DISTFILES)
-- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-- list='$(DISTFILES)'; \
-- dist_files=`for file in $$list; do echo $$file; done | \
-- sed -e "s|^$$srcdirstrip/||;t" \
-- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-- case $$dist_files in \
-- */*) $(MKDIR_P) `echo "$$dist_files" | \
-- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-- sort -u` ;; \
-- esac; \
-- for file in $$dist_files; do \
-- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-- if test -d $$d/$$file; then \
-- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-- if test -d "$(distdir)/$$file"; then \
-- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-- fi; \
-- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-- fi; \
-- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-- else \
-- test -f "$(distdir)/$$file" \
-- || cp -p $$d/$$file "$(distdir)/$$file" \
-- || exit 1; \
-- fi; \
-- done
-- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-- if test "$$subdir" = .; then :; else \
-- $(am__make_dryrun) \
-- || test -d "$(distdir)/$$subdir" \
-- || $(MKDIR_P) "$(distdir)/$$subdir" \
-- || exit 1; \
-- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-- $(am__relativize); \
-- new_distdir=$$reldir; \
-- dir1=$$subdir; dir2="$(top_distdir)"; \
-- $(am__relativize); \
-- new_top_distdir=$$reldir; \
-- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-- ($(am__cd) $$subdir && \
-- $(MAKE) $(AM_MAKEFLAGS) \
-- top_distdir="$$new_top_distdir" \
-- distdir="$$new_distdir" \
-- am__remove_distdir=: \
-- am__skip_length_check=: \
-- am__skip_mode_fix=: \
-- distdir) \
-- || exit 1; \
-- fi; \
-- done
--check-am: all-am
-- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
--check: check-recursive
--all-am: Makefile $(LTLIBRARIES) $(DATA)
--install-checkPROGRAMS: install-libLTLIBRARIES
--
--installdirs: installdirs-recursive
--installdirs-am:
-- for dir in "$(DESTDIR)$(libdir)"; do \
-- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-- done
--install: install-recursive
--install-exec: install-exec-recursive
--install-data: install-data-recursive
--uninstall: uninstall-recursive
--
--install-am: all-am
-- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--
--installcheck: installcheck-recursive
--install-strip:
-- if test -z '$(STRIP)'; then \
-- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-- install; \
-- else \
-- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-- fi
--mostlyclean-generic:
-- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
--
--clean-generic:
--
--distclean-generic:
-- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
--
--maintainer-clean-generic:
-- @echo "This command is intended for maintainers to use"
-- @echo "it deletes files that may require special tools to rebuild."
--clean: clean-recursive
--
--clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-- clean-libtool mostlyclean-am
--
--distclean: distclean-recursive
-- -rm -f ./$(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Plo
-- -rm -f ./$(DEPDIR)/libmicrohttpd_ws_la-sha1.Plo
-- -rm -f ./$(DEPDIR)/test_websocket.Po
-- -rm -f Makefile
--distclean-am: clean-am distclean-compile distclean-generic \
-- distclean-tags
--
--dvi: dvi-recursive
--
--dvi-am:
--
--html: html-recursive
--
--html-am:
--
--info: info-recursive
--
--info-am:
--
--install-data-am:
--
--install-dvi: install-dvi-recursive
--
--install-dvi-am:
--
--install-exec-am: install-libLTLIBRARIES
--
--install-html: install-html-recursive
--
--install-html-am:
--
--install-info: install-info-recursive
--
--install-info-am:
--
--install-man:
--
--install-pdf: install-pdf-recursive
--
--install-pdf-am:
--
--install-ps: install-ps-recursive
--
--install-ps-am:
--
--installcheck-am:
--
--maintainer-clean: maintainer-clean-recursive
-- -rm -f ./$(DEPDIR)/libmicrohttpd_ws_la-mhd_websocket.Plo
-- -rm -f ./$(DEPDIR)/libmicrohttpd_ws_la-sha1.Plo
-- -rm -f ./$(DEPDIR)/test_websocket.Po
-- -rm -f Makefile
--maintainer-clean-am: distclean-am maintainer-clean-generic
--
--mostlyclean: mostlyclean-recursive
--
--mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-- mostlyclean-libtool
--
--pdf: pdf-recursive
--
--pdf-am:
--
--ps: ps-recursive
--
--ps-am:
--
--uninstall-am: uninstall-libLTLIBRARIES
--
--.MAKE: $(am__recursive_targets) check-am install-am install-strip
--
--.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-- am--depfiles check check-TESTS check-am clean \
-- clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-- clean-libtool cscopelist-am ctags ctags-am distclean \
-- distclean-compile distclean-generic distclean-libtool \
-- distclean-tags distdir dvi dvi-am html html-am info info-am \
-- install install-am install-data install-data-am install-dvi \
-- install-dvi-am install-exec install-exec-am install-html \
-- install-html-am install-info install-info-am \
-- install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-- install-ps install-ps-am install-strip installcheck \
-- installcheck-am installdirs installdirs-am maintainer-clean \
-- maintainer-clean-generic mostlyclean mostlyclean-compile \
-- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-- recheck tags tags-am uninstall uninstall-am \
-- uninstall-libLTLIBRARIES
--
--.PRECIOUS: Makefile
--
--
--$(top_builddir)/src/microhttpd/libmicrohttpd.la: $(top_builddir)/src/microhttpd/Makefile
-- @echo ' cd $(top_builddir)/src/microhttpd && $(MAKE) $(AM_MAKEFLAGS) libmicrohttpd.la'; \
-- $(am__cd) $(top_builddir)/src/microhttpd && $(MAKE) $(AM_MAKEFLAGS) libmicrohttpd.la
--
--# Tell versions [3.59,3.63) of GNU make to not export all variables.
--# Otherwise a system limit (for SysV at least) may be exceeded.
--.NOEXPORT:
-diff --git a/src/microhttpd_ws/mhd_websocket.c b/src/microhttpd_ws/mhd_websocket.c
-deleted file mode 100644
-index 935deee..0000000
---- a/src/microhttpd_ws/mhd_websocket.c
-+++ /dev/null
-@@ -1,2443 +0,0 @@
--/*
-- This file is part of libmicrohttpd
-- Copyright (C) 2021 David Gausmann
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--
--*/
--
--/**
-- * @file microhttpd_ws/mhd_websocket.c
-- * @brief Support for the websocket protocol
-- * @author David Gausmann
-- */
--#include "platform.h"
--#include "microhttpd.h"
--#include "microhttpd_ws.h"
--#include "sha1.h"
--
--struct MHD_WebSocketStream
--{
-- /* The function pointer to malloc for payload (can be used to use different memory management) */
-- MHD_WebSocketMallocCallback malloc;
-- /* The function pointer to realloc for payload (can be used to use different memory management) */
-- MHD_WebSocketReallocCallback realloc;
-- /* The function pointer to free for payload (can be used to use different memory management) */
-- MHD_WebSocketFreeCallback free;
-- /* A closure for the random number generator (only used for client mode; usually not required) */
-- void *cls_rng;
-- /* The random number generator (only used for client mode; usually not required) */
-- MHD_WebSocketRandomNumberGenerator rng;
-- /* The flags specified upon initialization. It may alter the behavior of decoding/encoding */
-- int flags;
-- /* The current step for the decoder. 0 means start of a frame. */
-- char decode_step;
-- /* Specifies whether the stream is valid (1) or not (0),
-- if a close frame has been received this is (-1) to indicate that no data frames are allowed anymore */
-- char validity;
-- /* The current step of the UTF-8 encoding check in the data payload */
-- char data_utf8_step;
-- /* The current step of the UTF-8 encoding check in the control payload */
-- char control_utf8_step;
-- /* if != 0 means that we expect a CONTINUATION frame */
-- char data_type;
-- /* The start of the current frame (may differ from data_payload for CONTINUATION frames) */
-- char *data_payload_start;
-- /* The buffer for the data frame */
-- char *data_payload;
-- /* The buffer for the control frame */
-- char *control_payload;
-- /* Configuration for the maximum allowed buffer size for payload data */
-- size_t max_payload_size;
-- /* The current frame header size */
-- size_t frame_header_size;
-- /* The current data payload size (can be greater than payload_size for fragmented frames) */
-- size_t data_payload_size;
-- /* The size of the payload of the current frame (control or data) */
-- size_t payload_size;
-- /* The processing offset to the start of the payload of the current frame (control or data) */
-- size_t payload_index;
-- /* The frame header of the current frame (control or data) */
-- char frame_header[32];
-- /* The mask key of the current frame (control or data); this is 0 if no masking used */
-- char mask_key[4];
--};
--
--#define MHD_WEBSOCKET_FLAG_MASK_SERVERCLIENT MHD_WEBSOCKET_FLAG_CLIENT
--#define MHD_WEBSOCKET_FLAG_MASK_FRAGMENTATION \
-- MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS
--#define MHD_WEBSOCKET_FLAG_MASK_GENERATE_CLOSE_FRAMES \
-- MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR
--#define MHD_WEBSOCKET_FLAG_MASK_ALL \
-- (MHD_WEBSOCKET_FLAG_MASK_SERVERCLIENT \
-- | MHD_WEBSOCKET_FLAG_MASK_FRAGMENTATION \
-- | MHD_WEBSOCKET_FLAG_MASK_GENERATE_CLOSE_FRAMES)
--
--enum MHD_WebSocket_Opcode
--{
-- MHD_WebSocket_Opcode_Continuation = 0x0,
-- MHD_WebSocket_Opcode_Text = 0x1,
-- MHD_WebSocket_Opcode_Binary = 0x2,
-- MHD_WebSocket_Opcode_Close = 0x8,
-- MHD_WebSocket_Opcode_Ping = 0x9,
-- MHD_WebSocket_Opcode_Pong = 0xA
--};
--
--enum MHD_WebSocket_DecodeStep
--{
-- MHD_WebSocket_DecodeStep_Start = 0,
-- MHD_WebSocket_DecodeStep_Length1ofX = 1,
-- MHD_WebSocket_DecodeStep_Length1of2 = 2,
-- MHD_WebSocket_DecodeStep_Length2of2 = 3,
-- MHD_WebSocket_DecodeStep_Length1of8 = 4,
-- MHD_WebSocket_DecodeStep_Length2of8 = 5,
-- MHD_WebSocket_DecodeStep_Length3of8 = 6,
-- MHD_WebSocket_DecodeStep_Length4of8 = 7,
-- MHD_WebSocket_DecodeStep_Length5of8 = 8,
-- MHD_WebSocket_DecodeStep_Length6of8 = 9,
-- MHD_WebSocket_DecodeStep_Length7of8 = 10,
-- MHD_WebSocket_DecodeStep_Length8of8 = 11,
-- MHD_WebSocket_DecodeStep_Mask1Of4 = 12,
-- MHD_WebSocket_DecodeStep_Mask2Of4 = 13,
-- MHD_WebSocket_DecodeStep_Mask3Of4 = 14,
-- MHD_WebSocket_DecodeStep_Mask4Of4 = 15,
-- MHD_WebSocket_DecodeStep_HeaderCompleted = 16,
-- MHD_WebSocket_DecodeStep_PayloadOfDataFrame = 17,
-- MHD_WebSocket_DecodeStep_PayloadOfControlFrame = 18,
-- MHD_WebSocket_DecodeStep_BrokenStream = 99
--};
--
--enum MHD_WebSocket_UTF8Result
--{
-- MHD_WebSocket_UTF8Result_Invalid = 0,
-- MHD_WebSocket_UTF8Result_Valid = 1,
-- MHD_WebSocket_UTF8Result_Incomplete = 2
--};
--
--static void
--MHD_websocket_copy_payload (char *dst,
-- const char *src,
-- size_t len,
-- uint32_t mask,
-- unsigned long mask_offset);
--
--static int
--MHD_websocket_check_utf8 (const char *buf,
-- size_t buf_len,
-- int *utf8_step,
-- size_t *buf_offset);
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_decode_header_complete (struct MHD_WebSocketStream *ws,
-- char **payload,
-- size_t *payload_len);
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_decode_payload_complete (struct MHD_WebSocketStream *ws,
-- char **payload,
-- size_t *payload_len);
--
--static char
--MHD_websocket_encode_is_masked (struct MHD_WebSocketStream *ws);
--static char
--MHD_websocket_encode_overhead_size (struct MHD_WebSocketStream *ws,
-- size_t payload_len);
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_data (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- int fragmentation,
-- char **frame,
-- size_t *frame_len,
-- char opcode);
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_ping_pong (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- char **frame,
-- size_t *frame_len,
-- char opcode);
--
--static uint32_t
--MHD_websocket_generate_mask (struct MHD_WebSocketStream *ws);
--
--static uint16_t
--MHD_htons (uint16_t value);
--
--static uint64_t
--MHD_htonll (uint64_t value);
--
--
--/**
-- * Checks whether the HTTP version is 1.1 or above.
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_check_http_version (const char *http_version)
--{
-- /* validate parameters */
-- if (NULL == http_version)
-- {
-- /* Like with the other check routines, */
-- /* NULL is threated as "value not given" and not as parameter error */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- /* Check whether the version has a valid format */
-- /* RFC 1945 3.1: The format must be "HTTP/x.x" where x is */
-- /* any digit and must appear at least once */
-- if (('H' != http_version[0]) ||
-- ('T' != http_version[1]) ||
-- ('T' != http_version[2]) ||
-- ('P' != http_version[3]) ||
-- ('/' != http_version[4]))
-- {
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- /* Find the major and minor part of the version */
-- /* RFC 1945 3.1: Both numbers must be threated as separate integers. */
-- /* Leading zeros must be ignored and both integers may have multiple digits */
-- const char *major = NULL;
-- const char *dot = NULL;
-- size_t i = 5;
-- for (;;)
-- {
-- char c = http_version[i];
-- if (('0' <= c) && ('9' >= c))
-- {
-- if ((NULL == major) ||
-- ((http_version + i == major + 1) && ('0' == *major)) )
-- {
-- major = http_version + i;
-- }
-- ++i;
-- }
-- else if ('.' == http_version[i])
-- {
-- dot = http_version + i;
-- ++i;
-- break;
-- }
-- else
-- {
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
-- }
-- const char *minor = NULL;
-- const char *end = NULL;
-- for (;;)
-- {
-- char c = http_version[i];
-- if (('0' <= c) && ('9' >= c))
-- {
-- if ((NULL == minor) ||
-- ((http_version + i == minor + 1) && ('0' == *minor)) )
-- {
-- minor = http_version + i;
-- }
-- ++i;
-- }
-- else if (0 == c)
-- {
-- end = http_version + i;
-- break;
-- }
-- else
-- {
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
-- }
-- if ((NULL == major) || (NULL == dot) || (NULL == minor) || (NULL == end))
-- {
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
-- if ((2 <= dot - major) || ('2' <= *major) ||
-- (('1' == *major) && ((2 <= end - minor) || ('1' <= *minor))) )
-- {
-- return MHD_WEBSOCKET_STATUS_OK;
-- }
--
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
--}
--
--
--/**
-- * Checks whether the "Connection" request header has the 'Upgrade' token.
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_check_connection_header (const char *connection_header)
--{
-- /* validate parameters */
-- if (NULL == connection_header)
-- {
-- /* To be compatible with the return value */
-- /* of MHD_lookup_connection_value, */
-- /* NULL is threated as "value not given" and not as parameter error */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- /* Check whether the Connection includes an Upgrade token */
-- /* RFC 7230 6.1: Multiple tokens may appear. */
-- /* RFC 7230 3.2.6: Tokens are comma separated */
-- const char *token_start = NULL;
-- const char *token_end = NULL;
-- for (size_t i = 0; ; ++i)
-- {
-- char c = connection_header[i];
--
-- /* RFC 7230 3.2.6: The list of allowed characters is a token is: */
-- /* "!" / "#" / "$" / "%" / "&" / "'" / "*" / */
-- /* "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" */
-- /* DIGIT / ALPHA */
-- if (('!' == c) || ('#' == c) || ('$' == c) || ('%' == c) ||
-- ('&' == c) || ('\'' == c) || ('*' == c) ||
-- ('+' == c) || ('-' == c) || ('.' == c) || ('^' == c) ||
-- ('_' == c) || ('`' == c) || ('|' == c) || ('~' == c) ||
-- (('0' <= c) && ('9' >= c)) ||
-- (('A' <= c) && ('Z' >= c)) || (('a' <= c) && ('z' >= c)) )
-- {
-- /* This is a valid token character */
-- if (NULL == token_start)
-- {
-- token_start = connection_header + i;
-- }
-- token_end = connection_header + i + 1;
-- }
-- else if ((' ' == c) || ('\t' == c))
-- {
-- /* White-spaces around tokens will be ignored */
-- }
-- else if ((',' == c) || (0 == c))
-- {
-- /* Check the token (case-insensitive) */
-- if (NULL != token_start)
-- {
-- if (7 == (token_end - token_start) )
-- {
-- if ( (('U' == token_start[0]) || ('u' == token_start[0])) &&
-- (('P' == token_start[1]) || ('p' == token_start[1])) &&
-- (('G' == token_start[2]) || ('g' == token_start[2])) &&
-- (('R' == token_start[3]) || ('r' == token_start[3])) &&
-- (('A' == token_start[4]) || ('a' == token_start[4])) &&
-- (('D' == token_start[5]) || ('d' == token_start[5])) &&
-- (('E' == token_start[6]) || ('e' == token_start[6])) )
-- {
-- /* The token equals to "Upgrade" */
-- return MHD_WEBSOCKET_STATUS_OK;
-- }
-- }
-- }
-- if (0 == c)
-- {
-- break;
-- }
-- token_start = NULL;
-- token_end = NULL;
-- }
-- else
-- {
-- /* RFC 7230 3.2.6: Other characters are not allowed */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
-- }
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
--}
--
--
--/**
-- * Checks whether the "Upgrade" request header has the "websocket" keyword.
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_check_upgrade_header (const char *upgrade_header)
--{
-- /* validate parameters */
-- if (NULL == upgrade_header)
-- {
-- /* To be compatible with the return value */
-- /* of MHD_lookup_connection_value, */
-- /* NULL is threated as "value not given" and not as parameter error */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- /* Check whether the Connection includes an Upgrade token */
-- /* RFC 7230 6.1: Multiple tokens may appear. */
-- /* RFC 7230 3.2.6: Tokens are comma separated */
-- const char *keyword_start = NULL;
-- const char *keyword_end = NULL;
-- for (size_t i = 0; ; ++i)
-- {
-- char c = upgrade_header[i];
--
-- /* RFC 7230 3.2.6: The list of allowed characters is a token is: */
-- /* "!" / "#" / "$" / "%" / "&" / "'" / "*" / */
-- /* "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" */
-- /* DIGIT / ALPHA */
-- /* We also allow "/" here as the sub-delimiter for the protocol version */
-- if (('!' == c) || ('#' == c) || ('$' == c) || ('%' == c) ||
-- ('&' == c) || ('\'' == c) || ('*' == c) ||
-- ('+' == c) || ('-' == c) || ('.' == c) || ('^' == c) ||
-- ('_' == c) || ('`' == c) || ('|' == c) || ('~' == c) ||
-- ('/' == c) ||
-- (('0' <= c) && ('9' >= c)) ||
-- (('A' <= c) && ('Z' >= c)) || (('a' <= c) && ('z' >= c)) )
-- {
-- /* This is a valid token character */
-- if (NULL == keyword_start)
-- {
-- keyword_start = upgrade_header + i;
-- }
-- keyword_end = upgrade_header + i + 1;
-- }
-- else if ((' ' == c) || ('\t' == c))
-- {
-- /* White-spaces around tokens will be ignored */
-- }
-- else if ((',' == c) || (0 == c))
-- {
-- /* Check the token (case-insensitive) */
-- if (NULL != keyword_start)
-- {
-- if (9 == (keyword_end - keyword_start) )
-- {
-- if ( (('W' == keyword_start[0]) || ('w' == keyword_start[0])) &&
-- (('E' == keyword_start[1]) || ('e' == keyword_start[1])) &&
-- (('B' == keyword_start[2]) || ('b' == keyword_start[2])) &&
-- (('S' == keyword_start[3]) || ('s' == keyword_start[3])) &&
-- (('O' == keyword_start[4]) || ('o' == keyword_start[4])) &&
-- (('C' == keyword_start[5]) || ('c' == keyword_start[5])) &&
-- (('K' == keyword_start[6]) || ('k' == keyword_start[6])) &&
-- (('E' == keyword_start[7]) || ('e' == keyword_start[7])) &&
-- (('T' == keyword_start[8]) || ('t' == keyword_start[8])) )
-- {
-- /* The keyword equals to "websocket" */
-- return MHD_WEBSOCKET_STATUS_OK;
-- }
-- }
-- }
-- if (0 == c)
-- {
-- break;
-- }
-- keyword_start = NULL;
-- keyword_end = NULL;
-- }
-- else
-- {
-- /* RFC 7230 3.2.6: Other characters are not allowed */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
-- }
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
--}
--
--
--/**
-- * Checks whether the "Sec-WebSocket-Version" request header
-- * equals to "13"
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_check_version_header (const char *version_header)
--{
-- /* validate parameters */
-- if (NULL == version_header)
-- {
-- /* To be compatible with the return value */
-- /* of MHD_lookup_connection_value, */
-- /* NULL is threated as "value not given" and not as parameter error */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- if (('1' == version_header[0]) &&
-- ('3' == version_header[1]) &&
-- (0 == version_header[2]))
-- {
-- /* The version equals to "13" */
-- return MHD_WEBSOCKET_STATUS_OK;
-- }
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
--}
--
--
--/**
-- * Creates the response for the Sec-WebSocket-Accept header
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_create_accept_header (const char *sec_websocket_key,
-- char *sec_websocket_accept)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != sec_websocket_accept)
-- *sec_websocket_accept = 0;
--
-- /* validate parameters */
-- if (NULL == sec_websocket_accept)
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
-- if (NULL == sec_websocket_key)
-- {
-- /* NULL is not a parameter error, */
-- /* because MHD_lookup_connection_value returns NULL */
-- /* if the header wasn't found */
-- return MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER;
-- }
--
-- /* build SHA1 hash of the given key and the UUID appended */
-- char sha1[20];
-- const char *suffix = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
-- int length = (int) strlen (sec_websocket_key);
-- struct sha1_ctx ctx;
-- MHD_SHA1_init (&ctx);
-- MHD_SHA1_update (&ctx, (const uint8_t *) sec_websocket_key, length);
-- MHD_SHA1_update (&ctx, (const uint8_t *) suffix, 36);
-- MHD_SHA1_finish (&ctx, (uint8_t *) sha1);
--
-- /* base64 encode that SHA1 hash */
-- /* (simple algorithm here; SHA1 has always 20 bytes, */
-- /* which will always result in a 28 bytes base64 hash) */
-- const char *base64_encoding_table =
-- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-- for (int i = 0, j = 0; i < 20;)
-- {
-- uint32_t octet_a = i < 20 ? (unsigned char) sha1[i++] : 0;
-- uint32_t octet_b = i < 20 ? (unsigned char) sha1[i++] : 0;
-- uint32_t octet_c = i < 20 ? (unsigned char) sha1[i++] : 0;
-- uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
--
-- sec_websocket_accept[j++] = base64_encoding_table[(triple >> 3 * 6) & 0x3F];
-- sec_websocket_accept[j++] = base64_encoding_table[(triple >> 2 * 6) & 0x3F];
-- sec_websocket_accept[j++] = base64_encoding_table[(triple >> 1 * 6) & 0x3F];
-- sec_websocket_accept[j++] = base64_encoding_table[(triple >> 0 * 6) & 0x3F];
--
-- }
-- sec_websocket_accept[27] = '=';
-- sec_websocket_accept[28] = 0;
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Initializes a new websocket stream
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_stream_init (struct MHD_WebSocketStream **ws,
-- int flags,
-- size_t max_payload_size)
--{
-- return MHD_websocket_stream_init2 (ws,
-- flags,
-- max_payload_size,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- NULL);
--}
--
--
--/**
-- * Initializes a new websocket stream with
-- * additional parameters for allocation functions
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_stream_init2 (struct MHD_WebSocketStream **ws,
-- int flags,
-- size_t max_payload_size,
-- MHD_WebSocketMallocCallback callback_malloc,
-- MHD_WebSocketReallocCallback callback_realloc,
-- MHD_WebSocketFreeCallback callback_free,
-- void *cls_rng,
-- MHD_WebSocketRandomNumberGenerator callback_rng)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != ws)
-- *ws = NULL;
--
-- /* validate parameters */
-- if ((NULL == ws) ||
-- (0 != (flags & ~MHD_WEBSOCKET_FLAG_MASK_ALL)) ||
-- ((uint64_t) 0x7FFFFFFFFFFFFFFF < max_payload_size) ||
-- (NULL == callback_malloc) ||
-- (NULL == callback_realloc) ||
-- (NULL == callback_free) ||
-- ((0 != (flags & MHD_WEBSOCKET_FLAG_CLIENT)) &&
-- (NULL == callback_rng)))
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* allocate stream */
-- struct MHD_WebSocketStream *ws_ = (struct MHD_WebSocketStream *) malloc (
-- sizeof (struct MHD_WebSocketStream));
-- if (NULL == ws_)
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
--
-- /* initialize stream */
-- memset (ws_, 0, sizeof (struct MHD_WebSocketStream));
-- ws_->flags = flags;
-- ws_->max_payload_size = max_payload_size;
-- ws_->malloc = callback_malloc;
-- ws_->realloc = callback_realloc;
-- ws_->free = callback_free;
-- ws_->cls_rng = cls_rng;
-- ws_->rng = callback_rng;
-- ws_->validity = MHD_WEBSOCKET_VALIDITY_VALID;
--
-- /* return stream */
-- *ws = ws_;
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Frees a previously allocated websocket stream
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_stream_free (struct MHD_WebSocketStream *ws)
--{
-- /* validate parameters */
-- if (NULL == ws)
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
--
-- /* free allocated payload data */
-- if (ws->data_payload)
-- ws->free (ws->data_payload);
-- if (ws->control_payload)
-- ws->free (ws->control_payload);
--
-- /* free the stream */
-- free (ws);
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Invalidates a websocket stream (no more decoding possible)
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_stream_invalidate (struct MHD_WebSocketStream *ws)
--{
-- /* validate parameters */
-- if (NULL == ws)
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
--
-- /* invalidate stream */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Returns whether a websocket stream is valid
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_VALIDITY
--MHD_websocket_stream_is_valid (struct MHD_WebSocketStream *ws)
--{
-- /* validate parameters */
-- if (NULL == ws)
-- return MHD_WEBSOCKET_VALIDITY_INVALID;
--
-- return ws->validity;
--}
--
--
--/**
-- * Decodes incoming data to a websocket frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_decode (struct MHD_WebSocketStream *ws,
-- const char *streambuf,
-- size_t streambuf_len,
-- size_t *streambuf_read_len,
-- char **payload,
-- size_t *payload_len)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != streambuf_read_len)
-- *streambuf_read_len = 0;
-- if (NULL != payload)
-- *payload = NULL;
-- if (NULL != payload_len)
-- *payload_len = 0;
--
-- /* validate parameters */
-- if ((NULL == ws) ||
-- ((NULL == streambuf) && (0 != streambuf_len)) ||
-- (NULL == streambuf_read_len) ||
-- (NULL == payload) ||
-- (NULL == payload_len) )
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* validate stream validity */
-- if (MHD_WEBSOCKET_VALIDITY_INVALID == ws->validity)
-- return MHD_WEBSOCKET_STATUS_STREAM_BROKEN;
--
-- /* decode loop */
-- size_t current = 0;
-- while (current < streambuf_len)
-- {
-- switch (ws->decode_step)
-- {
-- /* start of frame */
-- case MHD_WebSocket_DecodeStep_Start:
-- {
-- /* The first byte contains the opcode, the fin flag and three reserved bits */
-- if (MHD_WEBSOCKET_VALIDITY_INVALID != ws->validity)
-- {
-- char opcode = streambuf [current];
-- if (0 != (opcode & 0x70))
-- {
-- /* RFC 6455 5.2 RSV1-3: If a reserved flag is set */
-- /* (while it isn't specified by an extension) the communication must fail. */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- switch (opcode & 0x0F)
-- {
-- case MHD_WebSocket_Opcode_Continuation:
-- if (0 == ws->data_type)
-- {
-- /* RFC 6455 5.4: Continuation frame without previous data frame */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if (MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES ==
-- ws->validity)
-- {
-- /* RFC 6455 5.5.1: After a close frame has been sent, */
-- /* no data frames may be sent (so we don't accept data frames */
-- /* for decoding anymore) */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- break;
--
-- case MHD_WebSocket_Opcode_Text:
-- case MHD_WebSocket_Opcode_Binary:
-- if (0 != ws->data_type)
-- {
-- /* RFC 6455 5.4: Continuation expected, but new data frame */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if (MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES ==
-- ws->validity)
-- {
-- /* RFC 6455 5.5.1: After a close frame has been sent, */
-- /* no data frames may be sent (so we don't accept data frames */
-- /* for decoding anymore) */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- break;
--
-- case MHD_WebSocket_Opcode_Close:
-- case MHD_WebSocket_Opcode_Ping:
-- case MHD_WebSocket_Opcode_Pong:
-- if ((opcode & 0x80) == 0)
-- {
-- /* RFC 6455 5.4: Control frames may not be fragmented */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if (MHD_WebSocket_Opcode_Close == (opcode & 0x0F))
-- {
-- /* RFC 6455 5.5.1: After a close frame has been sent, */
-- /* no data frames may be sent (so we don't accept data frames */
-- /* for decoding anymore) */
-- ws->validity =
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES;
-- }
-- break;
--
-- default:
-- /* RFC 6455 5.2 OPCODE: Only six opcodes are specified. */
-- /* All other are invalid in version 13 of the protocol. */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- }
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
-- ws->decode_step = MHD_WebSocket_DecodeStep_Length1ofX;
-- }
-- break;
--
-- case MHD_WebSocket_DecodeStep_Length1ofX:
-- {
-- /* The second byte specifies whether the data is masked and the size */
-- /* (the client MUST mask the payload, the server MUST NOT mask the payload) */
-- char frame_len = streambuf [current];
-- char is_masked = (frame_len & 0x80);
-- frame_len &= 0x7f;
-- if (MHD_WEBSOCKET_VALIDITY_INVALID != ws->validity)
-- {
-- if (0 != is_masked)
-- {
-- if (MHD_WEBSOCKET_FLAG_CLIENT == (ws->flags
-- & MHD_WEBSOCKET_FLAG_CLIENT))
-- {
-- /* RFC 6455 5.1: All frames from the server must be unmasked */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- }
-- else
-- {
-- if (MHD_WEBSOCKET_FLAG_SERVER == (ws->flags
-- & MHD_WEBSOCKET_FLAG_CLIENT))
-- {
-- /* RFC 6455 5.1: All frames from the client must be masked */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- }
-- if (126 <= frame_len)
-- {
-- if (0 != (ws->frame_header [0] & 0x08))
-- {
-- /* RFC 6455 5.5: Control frames may not have more payload than 125 bytes */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- }
-- if (1 == frame_len)
-- {
-- if (MHD_WebSocket_Opcode_Close == (ws->frame_header [0] & 0x0F))
-- {
-- /* RFC 6455 5.5.1: The close frame must have at least */
-- /* two bytes of payload if payload is used */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- }
-- }
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
--
-- if (126 == frame_len)
-- {
-- ws->decode_step = MHD_WebSocket_DecodeStep_Length1of2;
-- }
-- else if (127 == frame_len)
-- {
-- ws->decode_step = MHD_WebSocket_DecodeStep_Length1of8;
-- }
-- else
-- {
-- size_t size = (size_t) frame_len;
-- if ((SIZE_MAX < size) ||
-- (ws->max_payload_size && (ws->max_payload_size < size)) )
-- {
-- /* RFC 6455 7.4.1 1009: If the message is too big to process, we may close the connection */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_MAXIMUM_ALLOWED_PAYLOAD_SIZE_EXCEEDED,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
-- ws->payload_size = size;
-- if (0 != is_masked)
-- {
-- /* with mask */
-- ws->decode_step = MHD_WebSocket_DecodeStep_Mask1Of4;
-- }
-- else
-- {
-- /* without mask */
-- *((uint32_t *) ws->mask_key) = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_HeaderCompleted;
-- }
-- }
-- }
-- break;
--
-- /* Payload size first byte of 2 bytes */
-- case MHD_WebSocket_DecodeStep_Length1of2:
-- /* Payload size first 7 bytes of 8 bytes */
-- case MHD_WebSocket_DecodeStep_Length1of8:
-- case MHD_WebSocket_DecodeStep_Length2of8:
-- case MHD_WebSocket_DecodeStep_Length3of8:
-- case MHD_WebSocket_DecodeStep_Length4of8:
-- case MHD_WebSocket_DecodeStep_Length5of8:
-- case MHD_WebSocket_DecodeStep_Length6of8:
-- case MHD_WebSocket_DecodeStep_Length7of8:
-- /* Mask first 3 bytes of 4 bytes */
-- case MHD_WebSocket_DecodeStep_Mask1Of4:
-- case MHD_WebSocket_DecodeStep_Mask2Of4:
-- case MHD_WebSocket_DecodeStep_Mask3Of4:
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
-- ++ws->decode_step;
-- break;
--
-- /* 2 byte length finished */
-- case MHD_WebSocket_DecodeStep_Length2of2:
-- {
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
-- size_t size = (size_t) MHD_htons (
-- *((uint16_t *) &ws->frame_header [2]));
-- if (125 >= size)
-- {
-- /* RFC 6455 5.2 Payload length: The minimal number of bytes */
-- /* must be used for the length */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if ((SIZE_MAX < size) ||
-- (ws->max_payload_size && (ws->max_payload_size < size)) )
-- {
-- /* RFC 6455 7.4.1 1009: If the message is too big to process, */
-- /* we may close the connection */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_MAXIMUM_ALLOWED_PAYLOAD_SIZE_EXCEEDED,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
-- ws->payload_size = size;
-- if (0 != (ws->frame_header [1] & 0x80))
-- {
-- /* with mask */
-- ws->decode_step = MHD_WebSocket_DecodeStep_Mask1Of4;
-- }
-- else
-- {
-- /* without mask */
-- *((uint32_t *) ws->mask_key) = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_HeaderCompleted;
-- }
-- }
-- break;
--
-- /* 8 byte length finished */
-- case MHD_WebSocket_DecodeStep_Length8of8:
-- {
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
-- uint64_t size = MHD_htonll (*((uint64_t *) &ws->frame_header [2]));
-- if (0x7fffffffffffffff < size)
-- {
-- /* RFC 6455 5.2 frame-payload-length-63: The length may */
-- /* not exceed 0x7fffffffffffffff */
-- ws->decode_step = MHD_WebSocket_DecodeStep_BrokenStream;
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if (65535 >= size)
-- {
-- /* RFC 6455 5.2 Payload length: The minimal number of bytes */
-- /* must be used for the length */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- }
-- if ((SIZE_MAX < size) ||
-- (ws->max_payload_size && (ws->max_payload_size < size)) )
-- {
-- /* RFC 6455 7.4.1 1009: If the message is too big to process, */
-- /* we may close the connection */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_MAXIMUM_ALLOWED_PAYLOAD_SIZE_EXCEEDED,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
-- ws->payload_size = (size_t) size;
--
-- if (0 != (ws->frame_header [1] & 0x80))
-- {
-- /* with mask */
-- ws->decode_step = MHD_WebSocket_DecodeStep_Mask1Of4;
-- }
-- else
-- {
-- /* without mask */
-- *((uint32_t *) ws->mask_key) = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_HeaderCompleted;
-- }
-- }
-- break;
--
-- /* mask finished */
-- case MHD_WebSocket_DecodeStep_Mask4Of4:
-- ws->frame_header [ws->frame_header_size++] = streambuf [current++];
-- *((uint32_t *) ws->mask_key) = *((uint32_t *) &ws->frame_header [ws->
-- frame_header_size
-- - 4]);
-- ws->decode_step = MHD_WebSocket_DecodeStep_HeaderCompleted;
-- break;
--
-- /* header finished */
-- case MHD_WebSocket_DecodeStep_HeaderCompleted:
-- /* return or assign either to data or control */
-- {
-- int ret = MHD_websocket_decode_header_complete (ws,
-- payload,
-- payload_len);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- *streambuf_read_len = current;
-- return ret;
-- }
-- }
-- break;
--
-- /* payload data */
-- case MHD_WebSocket_DecodeStep_PayloadOfDataFrame:
-- case MHD_WebSocket_DecodeStep_PayloadOfControlFrame:
-- {
-- size_t bytes_needed = ws->payload_size - ws->payload_index;
-- size_t bytes_remaining = streambuf_len - current;
-- size_t bytes_to_take = bytes_needed < bytes_remaining ? bytes_needed :
-- bytes_remaining;
-- if (0 != bytes_to_take)
-- {
-- size_t utf8_start = ws->payload_index;
-- char *decode_payload = ws->decode_step ==
-- MHD_WebSocket_DecodeStep_PayloadOfDataFrame ?
-- ws->data_payload_start :
-- ws->control_payload;
--
-- /* copy the new payload data (with unmasking if necessary */
-- MHD_websocket_copy_payload (decode_payload + ws->payload_index,
-- &streambuf [current],
-- bytes_to_take,
-- *((uint32_t *) ws->mask_key),
-- (unsigned long) (ws->payload_index
-- & 0x03));
-- current += bytes_to_take;
-- ws->payload_index += bytes_to_take;
-- if (((MHD_WebSocket_DecodeStep_PayloadOfDataFrame ==
-- ws->decode_step) &&
-- (MHD_WebSocket_Opcode_Text == ws->data_type)) ||
-- ((MHD_WebSocket_DecodeStep_PayloadOfControlFrame ==
-- ws->decode_step) &&
-- (MHD_WebSocket_Opcode_Close == (ws->frame_header [0] & 0x0f)) &&
-- (2 < ws->payload_index)) )
-- {
-- /* RFC 6455 8.1: We need to check the UTF-8 validity */
-- int utf8_step;
-- char *decode_payload_utf8;
-- size_t bytes_to_check;
-- size_t utf8_error_offset = 0;
-- if (MHD_WebSocket_DecodeStep_PayloadOfDataFrame == ws->decode_step)
-- {
-- utf8_step = ws->data_utf8_step;
-- decode_payload_utf8 = decode_payload + utf8_start;
-- bytes_to_check = bytes_to_take;
-- }
-- else
-- {
-- utf8_step = ws->control_utf8_step;
-- if ((MHD_WebSocket_Opcode_Close == (ws->frame_header [0]
-- & 0x0f)) &&
-- (2 > utf8_start) )
-- {
-- /* The first two bytes of the close frame are binary content and */
-- /* must be skipped in the UTF-8 check */
-- utf8_start = 2;
-- utf8_error_offset = 2;
-- }
-- decode_payload_utf8 = decode_payload + utf8_start;
-- bytes_to_check = bytes_to_take - utf8_start;
-- }
-- size_t utf8_check_offset = 0;
-- int utf8_result = MHD_websocket_check_utf8 (decode_payload_utf8,
-- bytes_to_check,
-- &utf8_step,
-- &utf8_check_offset);
-- if (MHD_WebSocket_UTF8Result_Invalid != utf8_result)
-- {
-- /* memorize current validity check step to continue later */
-- ws->data_utf8_step = utf8_step;
-- }
-- else
-- {
-- /* RFC 6455 8.1: We must fail on broken UTF-8 sequence */
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_MALFORMED_UTF8,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- *streambuf_read_len = current - bytes_to_take
-- + utf8_check_offset + utf8_error_offset;
-- return MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR;
-- }
-- }
-- }
-- }
--
-- if (ws->payload_size == ws->payload_index)
-- {
-- /* all payload data of the current frame has been received */
-- int ret = MHD_websocket_decode_payload_complete (ws,
-- payload,
-- payload_len);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- *streambuf_read_len = current;
-- return ret;
-- }
-- }
-- break;
--
-- case MHD_WebSocket_DecodeStep_BrokenStream:
-- *streambuf_read_len = current;
-- return MHD_WEBSOCKET_STATUS_STREAM_BROKEN;
-- }
-- }
--
-- /* Special treatment for zero payload length messages */
-- if (MHD_WebSocket_DecodeStep_HeaderCompleted == ws->decode_step)
-- {
-- int ret = MHD_websocket_decode_header_complete (ws,
-- payload,
-- payload_len);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- *streambuf_read_len = current;
-- return ret;
-- }
-- }
-- switch (ws->decode_step)
-- {
-- case MHD_WebSocket_DecodeStep_PayloadOfDataFrame:
-- case MHD_WebSocket_DecodeStep_PayloadOfControlFrame:
-- if (ws->payload_size == ws->payload_index)
-- {
-- /* all payload data of the current frame has been received */
-- int ret = MHD_websocket_decode_payload_complete (ws,
-- payload,
-- payload_len);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- *streambuf_read_len = current;
-- return ret;
-- }
-- }
-- break;
-- }
-- *streambuf_read_len = current;
--
-- /* more data needed */
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_decode_header_complete (struct MHD_WebSocketStream *ws,
-- char **payload,
-- size_t *payload_len)
--{
-- /* assign either to data or control */
-- char opcode = ws->frame_header [0] & 0x0f;
-- switch (opcode)
-- {
-- case MHD_WebSocket_Opcode_Continuation:
-- {
-- /* validate payload size */
-- size_t new_size_total = ws->payload_size + ws->data_payload_size;
-- if ((0 != ws->max_payload_size) && (ws->max_payload_size <
-- new_size_total) )
-- {
-- /* RFC 6455 7.4.1 1009: If the message is too big to process, */
-- /* we may close the connection */
-- ws->decode_step = MHD_WebSocket_DecodeStep_BrokenStream;
-- ws->validity = MHD_WEBSOCKET_VALIDITY_INVALID;
-- if (0 != (ws->flags
-- & MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR))
-- {
-- MHD_websocket_encode_close (ws,
-- MHD_WEBSOCKET_CLOSEREASON_MAXIMUM_ALLOWED_PAYLOAD_SIZE_EXCEEDED,
-- 0,
-- 0,
-- payload,
-- payload_len);
-- }
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
-- /* allocate buffer for continued data frame */
-- char *new_buf = NULL;
-- if (0 != new_size_total)
-- {
-- new_buf = ws->realloc (ws->data_payload, new_size_total + 1);
-- if (NULL == new_buf)
-- {
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- }
-- new_buf [new_size_total] = 0;
-- ws->data_payload_start = &new_buf[ws->data_payload_size];
-- }
-- else
-- {
-- ws->data_payload_start = new_buf;
-- }
-- ws->data_payload = new_buf;
-- ws->data_payload_size = new_size_total;
-- }
-- ws->decode_step = MHD_WebSocket_DecodeStep_PayloadOfDataFrame;
-- break;
--
-- case MHD_WebSocket_Opcode_Text:
-- case MHD_WebSocket_Opcode_Binary:
-- /* allocate buffer for data frame */
-- {
-- size_t new_size_total = ws->payload_size;
-- char *new_buf = NULL;
-- if (0 != new_size_total)
-- {
-- new_buf = ws->malloc (new_size_total + 1);
-- if (NULL == new_buf)
-- {
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- }
-- new_buf [new_size_total] = 0;
-- }
-- ws->data_payload = new_buf;
-- ws->data_payload_start = new_buf;
-- ws->data_payload_size = new_size_total;
-- ws->data_type = opcode;
-- }
-- ws->decode_step = MHD_WebSocket_DecodeStep_PayloadOfDataFrame;
-- break;
--
-- case MHD_WebSocket_Opcode_Close:
-- case MHD_WebSocket_Opcode_Ping:
-- case MHD_WebSocket_Opcode_Pong:
-- /* allocate buffer for control frame */
-- {
-- size_t new_size_total = ws->payload_size;
-- char *new_buf = NULL;
-- if (0 != new_size_total)
-- {
-- new_buf = ws->malloc (new_size_total + 1);
-- if (NULL == new_buf)
-- {
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- }
-- new_buf[new_size_total] = 0;
-- }
-- ws->control_payload = new_buf;
-- }
-- ws->decode_step = MHD_WebSocket_DecodeStep_PayloadOfControlFrame;
-- break;
-- }
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_decode_payload_complete (struct MHD_WebSocketStream *ws,
-- char **payload,
-- size_t *payload_len)
--{
-- /* all payload data of the current frame has been received */
-- char is_continue = MHD_WebSocket_Opcode_Continuation ==
-- (ws->frame_header [0] & 0x0F);
-- char is_fin = ws->frame_header [0] & 0x80;
-- if (0 != is_fin)
-- {
-- /* the frame is complete */
-- if (MHD_WebSocket_DecodeStep_PayloadOfDataFrame == ws->decode_step)
-- {
-- /* data frame */
-- char data_type = ws->data_type;
-- if ((0 != (ws->flags & MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS)) &&
-- (0 != is_continue))
-- {
-- data_type |= 0x40; /* mark as last fragment */
-- }
-- *payload = ws->data_payload;
-- *payload_len = ws->data_payload_size;
-- ws->data_payload = 0;
-- ws->data_payload_start = 0;
-- ws->data_payload_size = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_Start;
-- ws->payload_index = 0;
-- ws->data_type = 0;
-- ws->frame_header_size = 0;
-- return data_type;
-- }
-- else
-- {
-- /* control frame */
-- *payload = ws->control_payload;
-- *payload_len = ws->payload_size;
-- ws->control_payload = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_Start;
-- ws->payload_index = 0;
-- ws->frame_header_size = 0;
-- return (ws->frame_header [0] & 0x0f);
-- }
-- }
-- else if (0 != (ws->flags & MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS))
-- {
-- /* RFC 6455 5.4: To allow streaming, the user can choose */
-- /* to return fragments */
-- if ((MHD_WebSocket_Opcode_Text == ws->data_type) &&
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != ws->data_utf8_step) )
-- {
-- /* the last UTF-8 sequence is incomplete, so we keep the start of
-- that and only return the part before */
-- size_t given_utf8 = 0;
-- switch (ws->data_utf8_step)
-- {
-- /* one byte given */
-- case MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1:
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL1_1OF2:
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL2_1OF2:
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_1OF2:
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL1_1OF3:
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL2_1OF3:
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_1OF3:
-- given_utf8 = 1;
-- break;
-- /* two bytes given */
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2:
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3:
-- given_utf8 = 2;
-- break;
-- /* three bytes given */
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_3OF3:
-- given_utf8 = 3;
-- break;
-- }
-- size_t new_len = ws->data_payload_size - given_utf8;
-- if (0 != new_len)
-- {
-- char *next_payload = ws->malloc (given_utf8 + 1);
-- if (NULL == next_payload)
-- {
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- }
-- memcpy (next_payload,
-- ws->data_payload_start + ws->payload_index - given_utf8,
-- given_utf8);
-- next_payload[given_utf8] = 0;
--
-- ws->data_payload[new_len] = 0;
-- *payload = ws->data_payload;
-- *payload_len = new_len;
-- ws->data_payload = next_payload;
-- ws->data_payload_size = given_utf8;
-- }
-- else
-- {
-- *payload = NULL;
-- *payload_len = 0;
-- }
-- ws->decode_step = MHD_WebSocket_DecodeStep_Start;
-- ws->payload_index = 0;
-- ws->frame_header_size = 0;
-- if (0 != is_continue)
-- return ws->data_type | 0x20; /* mark as middle fragment */
-- else
-- return ws->data_type | 0x10; /* mark as first fragment */
-- }
-- else
-- {
-- /* we simply pass the entire data frame */
-- *payload = ws->data_payload;
-- *payload_len = ws->data_payload_size;
-- ws->data_payload = 0;
-- ws->data_payload_start = 0;
-- ws->data_payload_size = 0;
-- ws->decode_step = MHD_WebSocket_DecodeStep_Start;
-- ws->payload_index = 0;
-- ws->frame_header_size = 0;
-- if (0 != is_continue)
-- return ws->data_type | 0x20; /* mark as middle fragment */
-- else
-- return ws->data_type | 0x10; /* mark as first fragment */
-- }
-- }
-- else
-- {
-- /* RFC 6455 5.4: We must await a continuation frame to get */
-- /* the remainder of this data frame */
-- ws->decode_step = MHD_WebSocket_DecodeStep_Start;
-- ws->frame_header_size = 0;
-- ws->payload_index = 0;
-- return MHD_WEBSOCKET_STATUS_OK;
-- }
--}
--
--
--/**
-- * Splits the received close reason
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_split_close_reason (const char *payload,
-- size_t payload_len,
-- unsigned short *reason_code,
-- const char **reason_utf8,
-- size_t *reason_utf8_len)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != reason_code)
-- *reason_code = MHD_WEBSOCKET_CLOSEREASON_NO_REASON;
-- if (NULL != reason_utf8)
-- *reason_utf8 = NULL;
-- if (NULL != reason_utf8_len)
-- *reason_utf8_len = 0;
--
-- /* validate parameters */
-- if ((NULL == payload) && (0 != payload_len))
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- if (1 == payload_len)
-- return MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR;
-- if (125 < payload_len)
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
--
-- /* decode reason code */
-- if (2 > payload_len)
-- {
-- if (NULL != reason_code)
-- *reason_code = MHD_WEBSOCKET_CLOSEREASON_NO_REASON;
-- }
-- else
-- {
-- if (NULL != reason_code)
-- *reason_code = MHD_htons (*((uint16_t *) payload));
-- }
--
-- /* decode reason text */
-- if (2 >= payload_len)
-- {
-- if (NULL != reason_utf8)
-- *reason_utf8 = NULL;
-- if (NULL != reason_utf8_len)
-- *reason_utf8_len = 0;
-- }
-- else
-- {
-- if (NULL != reason_utf8)
-- *reason_utf8 = payload + 2;
-- if (NULL != reason_utf8_len)
-- *reason_utf8_len = payload_len - 2;
-- }
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Encodes a text into a websocket text frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_text (struct MHD_WebSocketStream *ws,
-- const char *payload_utf8,
-- size_t payload_utf8_len,
-- int fragmentation,
-- char **frame,
-- size_t *frame_len,
-- int *utf8_step)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != frame)
-- *frame = NULL;
-- if (NULL != frame_len)
-- *frame_len = 0;
-- if ((NULL != utf8_step) &&
-- ((MHD_WEBSOCKET_FRAGMENTATION_FIRST == fragmentation) ||
-- (MHD_WEBSOCKET_FRAGMENTATION_NONE == fragmentation) ))
-- {
-- /* the old UTF-8 step will be ignored for new fragments */
-- *utf8_step = MHD_WEBSOCKET_UTF8STEP_NORMAL;
-- }
--
-- /* validate parameters */
-- if ((NULL == ws) ||
-- ((0 != payload_utf8_len) && (NULL == payload_utf8)) ||
-- (NULL == frame) ||
-- (NULL == frame_len) ||
-- (MHD_WEBSOCKET_FRAGMENTATION_NONE > fragmentation) ||
-- (MHD_WEBSOCKET_FRAGMENTATION_LAST < fragmentation) ||
-- ((MHD_WEBSOCKET_FRAGMENTATION_NONE != fragmentation) &&
-- (NULL == utf8_step)) )
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* check max length */
-- if ((uint64_t) 0x7FFFFFFFFFFFFFFF < (uint64_t) payload_utf8_len)
-- {
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
--
-- /* check UTF-8 */
-- int utf8_result = MHD_websocket_check_utf8 (payload_utf8,
-- payload_utf8_len,
-- utf8_step,
-- NULL);
-- if ((MHD_WebSocket_UTF8Result_Invalid == utf8_result) ||
-- ((MHD_WebSocket_UTF8Result_Incomplete == utf8_result) &&
-- (MHD_WEBSOCKET_FRAGMENTATION_NONE == fragmentation)) )
-- {
-- return MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR;
-- }
--
-- /* encode data */
-- return MHD_websocket_encode_data (ws,
-- payload_utf8,
-- payload_utf8_len,
-- fragmentation,
-- frame,
-- frame_len,
-- MHD_WebSocket_Opcode_Text);
--}
--
--
--/**
-- * Encodes binary data into a websocket binary frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_binary (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- int fragmentation,
-- char **frame,
-- size_t *frame_len)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != frame)
-- *frame = NULL;
-- if (NULL != frame_len)
-- *frame_len = 0;
--
-- /* validate parameters */
-- if ((NULL == ws) ||
-- ((0 != payload_len) && (NULL == payload)) ||
-- (NULL == frame) ||
-- (NULL == frame_len) ||
-- (MHD_WEBSOCKET_FRAGMENTATION_NONE > fragmentation) ||
-- (MHD_WEBSOCKET_FRAGMENTATION_LAST < fragmentation) )
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* check max length */
-- if ((uint64_t) 0x7FFFFFFFFFFFFFFF < (uint64_t) payload_len)
-- {
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
-- }
--
-- return MHD_websocket_encode_data (ws,
-- payload,
-- payload_len,
-- fragmentation,
-- frame,
-- frame_len,
-- MHD_WebSocket_Opcode_Binary);
--}
--
--
--/**
-- * Internal function for encoding text/binary data into a websocket frame
-- */
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_data (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- int fragmentation,
-- char **frame,
-- size_t *frame_len,
-- char opcode)
--{
-- /* calculate length and masking */
-- char is_masked = MHD_websocket_encode_is_masked (ws);
-- size_t overhead_len = MHD_websocket_encode_overhead_size (ws, payload_len);
-- size_t total_len = overhead_len + payload_len;
-- uint32_t mask = 0 != is_masked ? MHD_websocket_generate_mask (ws) : 0;
--
-- /* allocate memory */
-- char *result = ws->malloc (total_len + 1);
-- if (NULL == result)
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- result [total_len] = 0;
-- *frame = result;
-- *frame_len = total_len;
--
-- /* add the opcode */
-- switch (fragmentation)
-- {
-- case MHD_WEBSOCKET_FRAGMENTATION_NONE:
-- *(result++) = 0x80 | opcode;
-- break;
-- case MHD_WEBSOCKET_FRAGMENTATION_FIRST:
-- *(result++) = opcode;
-- break;
-- case MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING:
-- *(result++) = MHD_WebSocket_Opcode_Continuation;
-- break;
-- case MHD_WEBSOCKET_FRAGMENTATION_LAST:
-- *(result++) = 0x80 | MHD_WebSocket_Opcode_Continuation;
-- break;
-- }
--
-- /* add the length */
-- if (126 > payload_len)
-- {
-- *(result++) = is_masked | (char) payload_len;
-- }
-- else if (65536 > payload_len)
-- {
-- *(result++) = is_masked | 126;
-- *((uint16_t *) result) = MHD_htons ((uint16_t) payload_len);
-- result += 2;
-- }
-- else
-- {
-- *(result++) = is_masked | 127;
-- *((uint64_t *) result) = MHD_htonll ((uint64_t) payload_len);
-- result += 8;
--
-- }
--
-- /* add the mask */
-- if (0 != is_masked)
-- {
-- *(result++) = ((char *) &mask)[0];
-- *(result++) = ((char *) &mask)[1];
-- *(result++) = ((char *) &mask)[2];
-- *(result++) = ((char *) &mask)[3];
-- }
--
-- /* add the payload */
-- if (0 != payload_len)
-- {
-- MHD_websocket_copy_payload (result,
-- payload,
-- payload_len,
-- mask,
-- 0);
-- }
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Encodes a websocket ping frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_ping (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- char **frame,
-- size_t *frame_len)
--{
-- /* encode the ping frame */
-- return MHD_websocket_encode_ping_pong (ws,
-- payload,
-- payload_len,
-- frame,
-- frame_len,
-- MHD_WebSocket_Opcode_Ping);
--}
--
--
--/**
-- * Encodes a websocket pong frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_pong (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- char **frame,
-- size_t *frame_len)
--{
-- /* encode the pong frame */
-- return MHD_websocket_encode_ping_pong (ws,
-- payload,
-- payload_len,
-- frame,
-- frame_len,
-- MHD_WebSocket_Opcode_Pong);
--}
--
--
--/**
-- * Internal function for encoding ping/pong frames
-- */
--static enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_ping_pong (struct MHD_WebSocketStream *ws,
-- const char *payload,
-- size_t payload_len,
-- char **frame,
-- size_t *frame_len,
-- char opcode)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != frame)
-- *frame = NULL;
-- if (NULL != frame_len)
-- *frame_len = 0;
--
-- /* validate the parameters */
-- if ((NULL == ws) ||
-- ((0 != payload_len) && (NULL == payload)) ||
-- (NULL == frame) ||
-- (NULL == frame_len) )
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* RFC 6455 5.5: Control frames may only have up to 125 bytes of payload data */
-- if (125 < payload_len)
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
--
-- /* calculate length and masking */
-- char is_masked = MHD_websocket_encode_is_masked (ws);
-- size_t overhead_len = MHD_websocket_encode_overhead_size (ws, payload_len);
-- size_t total_len = overhead_len + payload_len;
-- uint32_t mask = is_masked != 0 ? MHD_websocket_generate_mask (ws) : 0;
--
-- /* allocate memory */
-- char *result = ws->malloc (total_len + 1);
-- if (NULL == result)
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- result [total_len] = 0;
-- *frame = result;
-- *frame_len = total_len;
--
-- /* add the opcode */
-- *(result++) = 0x80 | opcode;
--
-- /* add the length */
-- *(result++) = is_masked | (char) payload_len;
--
-- /* add the mask */
-- if (0 != is_masked)
-- {
-- *(result++) = ((char *) &mask)[0];
-- *(result++) = ((char *) &mask)[1];
-- *(result++) = ((char *) &mask)[2];
-- *(result++) = ((char *) &mask)[3];
-- }
--
-- /* add the payload */
-- if (0 != payload_len)
-- {
-- MHD_websocket_copy_payload (result,
-- payload,
-- payload_len,
-- mask,
-- 0);
-- }
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Encodes a websocket close frame
-- */
--_MHD_EXTERN enum MHD_WEBSOCKET_STATUS
--MHD_websocket_encode_close (struct MHD_WebSocketStream *ws,
-- unsigned short reason_code,
-- const char *reason_utf8,
-- size_t reason_utf8_len,
-- char **frame,
-- size_t *frame_len)
--{
-- /* initialize output variables for errors cases */
-- if (NULL != frame)
-- *frame = NULL;
-- if (NULL != frame_len)
-- *frame_len = 0;
--
-- /* validate the parameters */
-- if ((NULL == ws) ||
-- ((0 != reason_utf8_len) && (NULL == reason_utf8)) ||
-- (NULL == frame) ||
-- (NULL == frame_len) ||
-- ((MHD_WEBSOCKET_CLOSEREASON_NO_REASON != reason_code) &&
-- (1000 > reason_code)) ||
-- ((0 != reason_utf8_len) &&
-- (MHD_WEBSOCKET_CLOSEREASON_NO_REASON == reason_code)) )
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- /* RFC 6455 5.5: Control frames may only have up to 125 bytes of payload data, */
-- /* but in this case only 123 bytes, because 2 bytes are reserved */
-- /* for the close reason code. */
-- if (123 < reason_utf8_len)
-- return MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED;
--
-- /* RFC 6455 5.5.1: If close payload data is given, it must be valid UTF-8 */
-- if (0 != reason_utf8_len)
-- {
-- int utf8_result = MHD_websocket_check_utf8 (reason_utf8,
-- reason_utf8_len,
-- NULL,
-- NULL);
-- if (MHD_WebSocket_UTF8Result_Valid != utf8_result)
-- return MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR;
-- }
--
-- /* calculate length and masking */
-- char is_masked = MHD_websocket_encode_is_masked (ws);
-- size_t payload_len = (MHD_WEBSOCKET_CLOSEREASON_NO_REASON != reason_code ?
-- 2 + reason_utf8_len : 0);
-- size_t overhead_len = MHD_websocket_encode_overhead_size (ws, payload_len);
-- size_t total_len = overhead_len + payload_len;
-- uint32_t mask = is_masked != 0 ? MHD_websocket_generate_mask (ws) : 0;
--
-- /* allocate memory */
-- char *result = ws->malloc (total_len + 1);
-- if (NULL == result)
-- return MHD_WEBSOCKET_STATUS_MEMORY_ERROR;
-- result [total_len] = 0;
-- *frame = result;
-- *frame_len = total_len;
--
-- /* add the opcode */
-- *(result++) = 0x88;
--
-- /* add the length */
-- *(result++) = is_masked | (char) payload_len;
--
-- /* add the mask */
-- if (0 != is_masked)
-- {
-- *(result++) = ((char *) &mask)[0];
-- *(result++) = ((char *) &mask)[1];
-- *(result++) = ((char *) &mask)[2];
-- *(result++) = ((char *) &mask)[3];
-- }
--
-- /* add the payload */
-- if (0 != reason_code)
-- {
-- /* close reason code */
-- uint16_t reason_code_nb = MHD_htons (reason_code);
-- MHD_websocket_copy_payload (result,
-- (const char *) &reason_code_nb,
-- 2,
-- mask,
-- 0);
-- result += 2;
--
-- /* custom reason payload */
-- if (0 != reason_utf8_len)
-- {
-- MHD_websocket_copy_payload (result,
-- reason_utf8,
-- reason_utf8_len,
-- mask,
-- 2);
-- }
-- }
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Returns the 0x80 prefix for masked data, 0x00 otherwise
-- */
--static char
--MHD_websocket_encode_is_masked (struct MHD_WebSocketStream *ws)
--{
-- return (ws->flags & MHD_WEBSOCKET_FLAG_MASK_SERVERCLIENT) ==
-- MHD_WEBSOCKET_FLAG_CLIENT ? 0x80 : 0x00;
--}
--
--
--/**
-- * Calculates the size of the overhead in bytes
-- */
--static char
--MHD_websocket_encode_overhead_size (struct MHD_WebSocketStream *ws,
-- size_t payload_len)
--{
-- return 2 + (MHD_websocket_encode_is_masked (ws) != 0 ? 4 : 0) + (125 <
-- payload_len ?
-- (65535 <
-- payload_len
-- ? 8 : 2) : 0);
--}
--
--
--/**
-- * Copies the payload to the destination (using mask)
-- */
--static void
--MHD_websocket_copy_payload (char *dst,
-- const char *src,
-- size_t len,
-- uint32_t mask,
-- unsigned long mask_offset)
--{
-- if (0 != len)
-- {
-- if (0 == mask)
-- {
-- /* when the mask is zero, we can just copy the data */
-- memcpy (dst, src, len);
-- }
-- else
-- {
-- /* mask is used */
-- char mask_[4];
-- *((uint32_t *) mask_) = mask;
-- for (size_t i = 0; i < len; ++i)
-- {
-- dst[i] = src[i] ^ mask_[(i + mask_offset) & 3];
-- }
-- }
-- }
--}
--
--
--/**
-- * Checks a UTF-8 sequence
-- */
--static int
--MHD_websocket_check_utf8 (const char *buf,
-- size_t buf_len,
-- int *utf8_step,
-- size_t *buf_offset)
--{
-- int utf8_step_ = (NULL != utf8_step) ? *utf8_step :
-- MHD_WEBSOCKET_UTF8STEP_NORMAL;
--
-- for (size_t i = 0; i < buf_len; ++i)
-- {
-- unsigned char character = (unsigned char) buf[i];
-- switch (utf8_step_)
-- {
-- case MHD_WEBSOCKET_UTF8STEP_NORMAL:
-- if ((0x00 <= character) && (0x7F >= character))
-- {
-- /* RFC 3629 4: single byte UTF-8 sequence */
-- /* (nothing to do here) */
-- }
-- else if ((0xC2 <= character) && (0xDF >= character))
-- {
-- /* RFC 3629 4: two byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1;
-- }
-- else if (0xE0 == character)
-- {
-- /* RFC 3629 4: three byte UTF-8 sequence, but the second byte must be 0xA0-0xBF */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL1_1OF2;
-- }
-- else if (0xED == character)
-- {
-- /* RFC 3629 4: three byte UTF-8 sequence, but the second byte must be 0x80-0x9F */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL2_1OF2;
-- }
-- else if (((0xE1 <= character) && (0xEC >= character)) ||
-- ((0xEE <= character) && (0xEF >= character)) )
-- {
-- /* RFC 3629 4: three byte UTF-8 sequence, both tail bytes must be 0x80-0xBF */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_1OF2;
-- }
-- else if (0xF0 == character)
-- {
-- /* RFC 3629 4: four byte UTF-8 sequence, but the second byte must be 0x90-0xBF */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL1_1OF3;
-- }
-- else if (0xF4 == character)
-- {
-- /* RFC 3629 4: four byte UTF-8 sequence, but the second byte must be 0x80-0x8F */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL2_1OF3;
-- }
-- else if ((0xF1 <= character) && (0xF3 >= character))
-- {
-- /* RFC 3629 4: four byte UTF-8 sequence, all three tail bytes must be 0x80-0xBF */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_1OF3;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL1_1OF2:
-- if ((0xA0 <= character) && (0xBF >= character))
-- {
-- /* RFC 3629 4: Second byte of three byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL2_1OF2:
-- if ((0x80 <= character) && (0x9F >= character))
-- {
-- /* RFC 3629 4: Second byte of three byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_1OF2:
-- if ((0x80 <= character) && (0xBF >= character))
-- {
-- /* RFC 3629 4: Second byte of three byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL1_1OF3:
-- if ((0x90 <= character) && (0xBF >= character))
-- {
-- /* RFC 3629 4: Second byte of four byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL2_1OF3:
-- if ((0x80 <= character) && (0x8F >= character))
-- {
-- /* RFC 3629 4: Second byte of four byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_1OF3:
-- if ((0x80 <= character) && (0xBF >= character))
-- {
-- /* RFC 3629 4: Second byte of four byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3:
-- if ((0x80 <= character) && (0xBF >= character))
-- {
-- /* RFC 3629 4: Third byte of four byte UTF-8 sequence */
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_3OF3;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- /* RFC 3629 4: Second byte of two byte UTF-8 sequence */
-- case MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1:
-- /* RFC 3629 4: Third byte of three byte UTF-8 sequence */
-- case MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2:
-- /* RFC 3629 4: Fourth byte of four byte UTF-8 sequence */
-- case MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_3OF3:
-- if ((0x80 <= character) && (0xBF >= character))
-- {
-- utf8_step_ = MHD_WEBSOCKET_UTF8STEP_NORMAL;
-- }
-- else
-- {
-- /* RFC 3629 4: Invalid UTF-8 byte */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- break;
--
-- default:
-- /* Invalid last step...? */
-- if (NULL != buf_offset)
-- *buf_offset = i;
-- return MHD_WebSocket_UTF8Result_Invalid;
-- }
-- }
--
-- /* return values */
-- if (NULL != utf8_step)
-- *utf8_step = utf8_step_;
-- if (NULL != buf_offset)
-- *buf_offset = buf_len;
-- if (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step_)
-- {
-- return MHD_WebSocket_UTF8Result_Incomplete;
-- }
-- return MHD_WebSocket_UTF8Result_Valid;
--}
--
--
--/**
-- * Generates a mask for masking by calling
-- * a random number generator.
-- */
--static uint32_t
--MHD_websocket_generate_mask (struct MHD_WebSocketStream *ws)
--{
-- unsigned char mask_[4];
-- if (NULL != ws->rng)
-- {
-- size_t offset = 0;
-- while (offset < 4)
-- {
-- size_t encoded = ws->rng (ws->cls_rng,
-- mask_ + offset,
-- 4 - offset);
-- offset += encoded;
-- }
-- }
-- else
-- {
-- /* this case should never happen */
-- mask_ [0] = 0;
-- mask_ [1] = 0;
-- mask_ [2] = 0;
-- mask_ [3] = 0;
-- }
--
-- return *((uint32_t *) mask_);
--}
--
--
--/**
-- * Calls the malloc function associated with the websocket steam
-- */
--_MHD_EXTERN void *
--MHD_websocket_malloc (struct MHD_WebSocketStream *ws,
-- size_t buf_len)
--{
-- if (NULL == ws)
-- {
-- return NULL;
-- }
--
-- return ws->malloc (buf_len);
--}
--
--
--/**
-- * Calls the realloc function associated with the websocket steam
-- */
--_MHD_EXTERN void *
--MHD_websocket_realloc (struct MHD_WebSocketStream *ws,
-- void *buf,
-- size_t new_buf_len)
--{
-- if (NULL == ws)
-- {
-- return NULL;
-- }
--
-- return ws->realloc (buf, new_buf_len);
--}
--
--
--/**
-- * Calls the free function associated with the websocket steam
-- */
--_MHD_EXTERN int
--MHD_websocket_free (struct MHD_WebSocketStream *ws,
-- void *buf)
--{
-- if (NULL == ws)
-- {
-- return MHD_WEBSOCKET_STATUS_PARAMETER_ERROR;
-- }
--
-- ws->free (buf);
--
-- return MHD_WEBSOCKET_STATUS_OK;
--}
--
--
--/**
-- * Converts a 16 bit value into network byte order (MSB first)
-- * in dependence of the host system
-- */
--static uint16_t
--MHD_htons (uint16_t value)
--{
-- uint16_t endian = 0x0001;
--
-- if (((char *) &endian)[0] == 0x01)
-- {
-- /* least significant byte first */
-- ((char *) &endian)[0] = ((char *) &value)[1];
-- ((char *) &endian)[1] = ((char *) &value)[0];
-- return endian;
-- }
-- else
-- {
-- /* most significant byte first */
-- return value;
-- }
--}
--
--
--/**
-- * Converts a 64 bit value into network byte order (MSB first)
-- * in dependence of the host system
-- */
--static uint64_t
--MHD_htonll (uint64_t value)
--{
-- uint64_t endian = 0x0000000000000001;
--
-- if (((char *) &endian)[0] == 0x01)
-- {
-- /* least significant byte first */
-- ((char *) &endian)[0] = ((char *) &value)[7];
-- ((char *) &endian)[1] = ((char *) &value)[6];
-- ((char *) &endian)[2] = ((char *) &value)[5];
-- ((char *) &endian)[3] = ((char *) &value)[4];
-- ((char *) &endian)[4] = ((char *) &value)[3];
-- ((char *) &endian)[5] = ((char *) &value)[2];
-- ((char *) &endian)[6] = ((char *) &value)[1];
-- ((char *) &endian)[7] = ((char *) &value)[0];
-- return endian;
-- }
-- else
-- {
-- /* most significant byte first */
-- return value;
-- }
--}
-diff --git a/src/microhttpd_ws/sha1.c b/src/microhttpd_ws/sha1.c
-deleted file mode 100644
-index 1e9da5c..0000000
---- a/src/microhttpd_ws/sha1.c
-+++ /dev/null
-@@ -1,378 +0,0 @@
--/*
-- This file is part of libmicrohttpd
-- Copyright (C) 2019-2021 Karlson2k (Evgeny Grin)
--
-- libmicrohttpd is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library.
-- If not, see <http://www.gnu.org/licenses/>.
--*/
--
--/**
-- * @file microhttpd/sha1.c
-- * @brief Calculation of SHA-1 digest as defined in FIPS PUB 180-4 (2015)
-- * @author Karlson2k (Evgeny Grin)
-- */
--
--#include "sha1.h"
--
--#include <string.h>
--#ifdef HAVE_MEMORY_H
--#include <memory.h>
--#endif /* HAVE_MEMORY_H */
--#include "mhd_bithelpers.h"
--#include "mhd_assert.h"
--
--/**
-- * Initialise structure for SHA-1 calculation.
-- *
-- * @param ctx_ must be a `struct sha1_ctx *`
-- */
--void
--MHD_SHA1_init (void *ctx_)
--{
-- struct sha1_ctx *const ctx = ctx_;
-- /* Initial hash values, see FIPS PUB 180-4 paragraph 5.3.1 */
-- /* Just some "magic" numbers defined by standard */
-- ctx->H[0] = UINT32_C (0x67452301);
-- ctx->H[1] = UINT32_C (0xefcdab89);
-- ctx->H[2] = UINT32_C (0x98badcfe);
-- ctx->H[3] = UINT32_C (0x10325476);
-- ctx->H[4] = UINT32_C (0xc3d2e1f0);
--
-- /* Initialise number of bytes. */
-- ctx->count = 0;
--}
--
--
--/**
-- * Base of SHA-1 transformation.
-- * Gets full 512 bits / 64 bytes block of data and updates hash values;
-- * @param H hash values
-- * @param data data, must be exactly 64 bytes long
-- */
--static void
--sha1_transform (uint32_t H[_SHA1_DIGEST_LENGTH],
-- const uint8_t data[SHA1_BLOCK_SIZE])
--{
-- /* Working variables,
-- see FIPS PUB 180-4 paragraph 6.1.3 */
-- uint32_t a = H[0];
-- uint32_t b = H[1];
-- uint32_t c = H[2];
-- uint32_t d = H[3];
-- uint32_t e = H[4];
--
-- /* Data buffer, used as cyclic buffer.
-- See FIPS PUB 180-4 paragraphs 5.2.1, 6.1.3 */
-- uint32_t W[16];
--
-- /* 'Ch' and 'Maj' macro functions are defined with
-- widely-used optimization.
-- See FIPS PUB 180-4 formulae 4.1. */
--#define Ch(x,y,z) ( (z) ^ ((x) & ((y) ^ (z))) )
--#define Maj(x,y,z) ( ((x) & (y)) ^ ((z) & ((x) ^ (y))) )
-- /* Unoptimized (original) versions: */
--/* #define Ch(x,y,z) ( ( (x) & (y) ) ^ ( ~(x) & (z) ) ) */
--/* #define Maj(x,y,z) ( ((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)) ) */
--#define Par(x,y,z) ( (x) ^ (y) ^ (z) )
--
-- /* Single step of SHA-1 computation,
-- see FIPS PUB 180-4 paragraph 6.1.3 step 3.
-- * Note: instead of reassigning all working variables on each step,
-- variables are rotated for each step:
-- SHA1STEP32 (a, b, c, d, e, func, K00, W[0]);
-- SHA1STEP32 (e, a, b, c, d, func, K00, W[1]);
-- so current 'vC' will be used as 'vD' on the next step,
-- current 'vE' will be used as 'vA' on the next step.
-- * Note: 'wt' must be used exactly one time in this macro as it change other data as well
-- every time when used. */
--
--#define SHA1STEP32(vA,vB,vC,vD,vE,ft,kt,wt) do { \
-- (vE) += _MHD_ROTL32 ((vA), 5) + ft ((vB), (vC), (vD)) + (kt) + (wt); \
-- (vB) = _MHD_ROTL32 ((vB), 30); } while (0)
--
-- /* Get value of W(t) from input data buffer,
-- See FIPS PUB 180-4 paragraph 6.1.3.
-- Input data must be read in big-endian bytes order,
-- see FIPS PUB 180-4 paragraph 3.1.2. */
--#define GET_W_FROM_DATA(buf,t) \
-- _MHD_GET_32BIT_BE (((const uint8_t*) (buf)) + (t) * SHA1_BYTES_IN_WORD)
--
--#ifndef _MHD_GET_32BIT_BE_UNALIGNED
-- if (0 != (((uintptr_t) data) % _MHD_UINT32_ALIGN))
-- {
-- /* Copy the unaligned input data to the aligned buffer */
-- memcpy (W, data, SHA1_BLOCK_SIZE);
-- /* The W[] buffer itself will be used as the source of the data,
-- * but data will be reloaded in correct bytes order during
-- * the next steps */
-- data = (uint8_t *) W;
-- }
--#endif /* _MHD_GET_32BIT_BE_UNALIGNED */
--
--/* SHA-1 values of Kt for t=0..19, see FIPS PUB 180-4 paragraph 4.2.1. */
--#define K00 UINT32_C(0x5a827999)
--/* SHA-1 values of Kt for t=20..39, see FIPS PUB 180-4 paragraph 4.2.1.*/
--#define K20 UINT32_C(0x6ed9eba1)
--/* SHA-1 values of Kt for t=40..59, see FIPS PUB 180-4 paragraph 4.2.1.*/
--#define K40 UINT32_C(0x8f1bbcdc)
--/* SHA-1 values of Kt for t=60..79, see FIPS PUB 180-4 paragraph 4.2.1.*/
--#define K60 UINT32_C(0xca62c1d6)
--
-- /* During first 16 steps, before making any calculations on each step,
-- the W element is read from input data buffer as big-endian value and
-- stored in array of W elements. */
-- /* Note: instead of using K constants as array, all K values are specified
-- individually for each step. */
-- SHA1STEP32 (a, b, c, d, e, Ch, K00, W[0] = GET_W_FROM_DATA (data, 0));
-- SHA1STEP32 (e, a, b, c, d, Ch, K00, W[1] = GET_W_FROM_DATA (data, 1));
-- SHA1STEP32 (d, e, a, b, c, Ch, K00, W[2] = GET_W_FROM_DATA (data, 2));
-- SHA1STEP32 (c, d, e, a, b, Ch, K00, W[3] = GET_W_FROM_DATA (data, 3));
-- SHA1STEP32 (b, c, d, e, a, Ch, K00, W[4] = GET_W_FROM_DATA (data, 4));
-- SHA1STEP32 (a, b, c, d, e, Ch, K00, W[5] = GET_W_FROM_DATA (data, 5));
-- SHA1STEP32 (e, a, b, c, d, Ch, K00, W[6] = GET_W_FROM_DATA (data, 6));
-- SHA1STEP32 (d, e, a, b, c, Ch, K00, W[7] = GET_W_FROM_DATA (data, 7));
-- SHA1STEP32 (c, d, e, a, b, Ch, K00, W[8] = GET_W_FROM_DATA (data, 8));
-- SHA1STEP32 (b, c, d, e, a, Ch, K00, W[9] = GET_W_FROM_DATA (data, 9));
-- SHA1STEP32 (a, b, c, d, e, Ch, K00, W[10] = GET_W_FROM_DATA (data, 10));
-- SHA1STEP32 (e, a, b, c, d, Ch, K00, W[11] = GET_W_FROM_DATA (data, 11));
-- SHA1STEP32 (d, e, a, b, c, Ch, K00, W[12] = GET_W_FROM_DATA (data, 12));
-- SHA1STEP32 (c, d, e, a, b, Ch, K00, W[13] = GET_W_FROM_DATA (data, 13));
-- SHA1STEP32 (b, c, d, e, a, Ch, K00, W[14] = GET_W_FROM_DATA (data, 14));
-- SHA1STEP32 (a, b, c, d, e, Ch, K00, W[15] = GET_W_FROM_DATA (data, 15));
--
-- /* 'W' generation and assignment for 16 <= t <= 79.
-- See FIPS PUB 180-4 paragraph 6.1.3.
-- As only last 16 'W' are used in calculations, it is possible to
-- use 16 elements array of W as cyclic buffer. */
--#define Wgen(w,t) _MHD_ROTL32((w)[(t + 13) & 0xf] ^ (w)[(t + 8) & 0xf] \
-- ^ (w)[(t + 2) & 0xf] ^ (w)[t & 0xf], 1)
--
-- /* During last 60 steps, before making any calculations on each step,
-- W element is generated from W elements of cyclic buffer and generated value
-- stored back in cyclic buffer. */
-- /* Note: instead of using K constants as array, all K values are specified
-- individually for each step, see FIPS PUB 180-4 paragraph 4.2.1. */
-- SHA1STEP32 (e, a, b, c, d, Ch, K00, W[16 & 0xf] = Wgen (W, 16));
-- SHA1STEP32 (d, e, a, b, c, Ch, K00, W[17 & 0xf] = Wgen (W, 17));
-- SHA1STEP32 (c, d, e, a, b, Ch, K00, W[18 & 0xf] = Wgen (W, 18));
-- SHA1STEP32 (b, c, d, e, a, Ch, K00, W[19 & 0xf] = Wgen (W, 19));
-- SHA1STEP32 (a, b, c, d, e, Par, K20, W[20 & 0xf] = Wgen (W, 20));
-- SHA1STEP32 (e, a, b, c, d, Par, K20, W[21 & 0xf] = Wgen (W, 21));
-- SHA1STEP32 (d, e, a, b, c, Par, K20, W[22 & 0xf] = Wgen (W, 22));
-- SHA1STEP32 (c, d, e, a, b, Par, K20, W[23 & 0xf] = Wgen (W, 23));
-- SHA1STEP32 (b, c, d, e, a, Par, K20, W[24 & 0xf] = Wgen (W, 24));
-- SHA1STEP32 (a, b, c, d, e, Par, K20, W[25 & 0xf] = Wgen (W, 25));
-- SHA1STEP32 (e, a, b, c, d, Par, K20, W[26 & 0xf] = Wgen (W, 26));
-- SHA1STEP32 (d, e, a, b, c, Par, K20, W[27 & 0xf] = Wgen (W, 27));
-- SHA1STEP32 (c, d, e, a, b, Par, K20, W[28 & 0xf] = Wgen (W, 28));
-- SHA1STEP32 (b, c, d, e, a, Par, K20, W[29 & 0xf] = Wgen (W, 29));
-- SHA1STEP32 (a, b, c, d, e, Par, K20, W[30 & 0xf] = Wgen (W, 30));
-- SHA1STEP32 (e, a, b, c, d, Par, K20, W[31 & 0xf] = Wgen (W, 31));
-- SHA1STEP32 (d, e, a, b, c, Par, K20, W[32 & 0xf] = Wgen (W, 32));
-- SHA1STEP32 (c, d, e, a, b, Par, K20, W[33 & 0xf] = Wgen (W, 33));
-- SHA1STEP32 (b, c, d, e, a, Par, K20, W[34 & 0xf] = Wgen (W, 34));
-- SHA1STEP32 (a, b, c, d, e, Par, K20, W[35 & 0xf] = Wgen (W, 35));
-- SHA1STEP32 (e, a, b, c, d, Par, K20, W[36 & 0xf] = Wgen (W, 36));
-- SHA1STEP32 (d, e, a, b, c, Par, K20, W[37 & 0xf] = Wgen (W, 37));
-- SHA1STEP32 (c, d, e, a, b, Par, K20, W[38 & 0xf] = Wgen (W, 38));
-- SHA1STEP32 (b, c, d, e, a, Par, K20, W[39 & 0xf] = Wgen (W, 39));
-- SHA1STEP32 (a, b, c, d, e, Maj, K40, W[40 & 0xf] = Wgen (W, 40));
-- SHA1STEP32 (e, a, b, c, d, Maj, K40, W[41 & 0xf] = Wgen (W, 41));
-- SHA1STEP32 (d, e, a, b, c, Maj, K40, W[42 & 0xf] = Wgen (W, 42));
-- SHA1STEP32 (c, d, e, a, b, Maj, K40, W[43 & 0xf] = Wgen (W, 43));
-- SHA1STEP32 (b, c, d, e, a, Maj, K40, W[44 & 0xf] = Wgen (W, 44));
-- SHA1STEP32 (a, b, c, d, e, Maj, K40, W[45 & 0xf] = Wgen (W, 45));
-- SHA1STEP32 (e, a, b, c, d, Maj, K40, W[46 & 0xf] = Wgen (W, 46));
-- SHA1STEP32 (d, e, a, b, c, Maj, K40, W[47 & 0xf] = Wgen (W, 47));
-- SHA1STEP32 (c, d, e, a, b, Maj, K40, W[48 & 0xf] = Wgen (W, 48));
-- SHA1STEP32 (b, c, d, e, a, Maj, K40, W[49 & 0xf] = Wgen (W, 49));
-- SHA1STEP32 (a, b, c, d, e, Maj, K40, W[50 & 0xf] = Wgen (W, 50));
-- SHA1STEP32 (e, a, b, c, d, Maj, K40, W[51 & 0xf] = Wgen (W, 51));
-- SHA1STEP32 (d, e, a, b, c, Maj, K40, W[52 & 0xf] = Wgen (W, 52));
-- SHA1STEP32 (c, d, e, a, b, Maj, K40, W[53 & 0xf] = Wgen (W, 53));
-- SHA1STEP32 (b, c, d, e, a, Maj, K40, W[54 & 0xf] = Wgen (W, 54));
-- SHA1STEP32 (a, b, c, d, e, Maj, K40, W[55 & 0xf] = Wgen (W, 55));
-- SHA1STEP32 (e, a, b, c, d, Maj, K40, W[56 & 0xf] = Wgen (W, 56));
-- SHA1STEP32 (d, e, a, b, c, Maj, K40, W[57 & 0xf] = Wgen (W, 57));
-- SHA1STEP32 (c, d, e, a, b, Maj, K40, W[58 & 0xf] = Wgen (W, 58));
-- SHA1STEP32 (b, c, d, e, a, Maj, K40, W[59 & 0xf] = Wgen (W, 59));
-- SHA1STEP32 (a, b, c, d, e, Par, K60, W[60 & 0xf] = Wgen (W, 60));
-- SHA1STEP32 (e, a, b, c, d, Par, K60, W[61 & 0xf] = Wgen (W, 61));
-- SHA1STEP32 (d, e, a, b, c, Par, K60, W[62 & 0xf] = Wgen (W, 62));
-- SHA1STEP32 (c, d, e, a, b, Par, K60, W[63 & 0xf] = Wgen (W, 63));
-- SHA1STEP32 (b, c, d, e, a, Par, K60, W[64 & 0xf] = Wgen (W, 64));
-- SHA1STEP32 (a, b, c, d, e, Par, K60, W[65 & 0xf] = Wgen (W, 65));
-- SHA1STEP32 (e, a, b, c, d, Par, K60, W[66 & 0xf] = Wgen (W, 66));
-- SHA1STEP32 (d, e, a, b, c, Par, K60, W[67 & 0xf] = Wgen (W, 67));
-- SHA1STEP32 (c, d, e, a, b, Par, K60, W[68 & 0xf] = Wgen (W, 68));
-- SHA1STEP32 (b, c, d, e, a, Par, K60, W[69 & 0xf] = Wgen (W, 69));
-- SHA1STEP32 (a, b, c, d, e, Par, K60, W[70 & 0xf] = Wgen (W, 70));
-- SHA1STEP32 (e, a, b, c, d, Par, K60, W[71 & 0xf] = Wgen (W, 71));
-- SHA1STEP32 (d, e, a, b, c, Par, K60, W[72 & 0xf] = Wgen (W, 72));
-- SHA1STEP32 (c, d, e, a, b, Par, K60, W[73 & 0xf] = Wgen (W, 73));
-- SHA1STEP32 (b, c, d, e, a, Par, K60, W[74 & 0xf] = Wgen (W, 74));
-- SHA1STEP32 (a, b, c, d, e, Par, K60, W[75 & 0xf] = Wgen (W, 75));
-- SHA1STEP32 (e, a, b, c, d, Par, K60, W[76 & 0xf] = Wgen (W, 76));
-- SHA1STEP32 (d, e, a, b, c, Par, K60, W[77 & 0xf] = Wgen (W, 77));
-- SHA1STEP32 (c, d, e, a, b, Par, K60, W[78 & 0xf] = Wgen (W, 78));
-- SHA1STEP32 (b, c, d, e, a, Par, K60, W[79 & 0xf] = Wgen (W, 79));
--
-- /* Compute intermediate hash.
-- See FIPS PUB 180-4 paragraph 6.1.3 step 4. */
-- H[0] += a;
-- H[1] += b;
-- H[2] += c;
-- H[3] += d;
-- H[4] += e;
--}
--
--
--/**
-- * Process portion of bytes.
-- *
-- * @param ctx_ must be a `struct sha1_ctx *`
-- * @param data bytes to add to hash
-- * @param length number of bytes in @a data
-- */
--void
--MHD_SHA1_update (void *ctx_,
-- const uint8_t *data,
-- size_t length)
--{
-- struct sha1_ctx *const ctx = ctx_;
-- unsigned bytes_have; /**< Number of bytes in buffer */
--
-- mhd_assert ((data != NULL) || (length == 0));
--
-- if (0 == length)
-- return; /* Do nothing */
--
-- /* Note: (count & (SHA1_BLOCK_SIZE-1))
-- equal (count % SHA1_BLOCK_SIZE) for this block size. */
-- bytes_have = (unsigned) (ctx->count & (SHA1_BLOCK_SIZE - 1));
-- ctx->count += length;
--
-- if (0 != bytes_have)
-- {
-- unsigned bytes_left = SHA1_BLOCK_SIZE - bytes_have;
-- if (length >= bytes_left)
-- { /* Combine new data with the data in the buffer and
-- process the full block. */
-- memcpy (ctx->buffer + bytes_have,
-- data,
-- bytes_left);
-- data += bytes_left;
-- length -= bytes_left;
-- sha1_transform (ctx->H, ctx->buffer);
-- bytes_have = 0;
-- }
-- }
--
-- while (SHA1_BLOCK_SIZE <= length)
-- { /* Process any full blocks of new data directly,
-- without copying to the buffer. */
-- sha1_transform (ctx->H, data);
-- data += SHA1_BLOCK_SIZE;
-- length -= SHA1_BLOCK_SIZE;
-- }
--
-- if (0 != length)
-- { /* Copy incomplete block of new data (if any)
-- to the buffer. */
-- memcpy (ctx->buffer + bytes_have, data, length);
-- }
--}
--
--
--/**
-- * Size of "length" padding addition in bytes.
-- * See FIPS PUB 180-4 paragraph 5.1.1.
-- */
--#define SHA1_SIZE_OF_LEN_ADD (64 / 8)
--
--/**
-- * Finalise SHA-1 calculation, return digest.
-- *
-- * @param ctx_ must be a `struct sha1_ctx *`
-- * @param[out] digest set to the hash, must be #SHA1_DIGEST_SIZE bytes
-- */
--void
--MHD_SHA1_finish (void *ctx_,
-- uint8_t digest[SHA1_DIGEST_SIZE])
--{
-- struct sha1_ctx *const ctx = ctx_;
-- uint64_t num_bits; /**< Number of processed bits */
-- unsigned bytes_have; /**< Number of bytes in buffer */
--
-- num_bits = ctx->count << 3;
-- /* Note: (count & (SHA1_BLOCK_SIZE-1))
-- equals (count % SHA1_BLOCK_SIZE) for this block size. */
-- bytes_have = (unsigned) (ctx->count & (SHA1_BLOCK_SIZE - 1));
--
-- /* Input data must be padded with bit "1" and with length of data in bits.
-- See FIPS PUB 180-4 paragraph 5.1.1. */
-- /* Data is always processed in form of bytes (not by individual bits),
-- therefore position of first padding bit in byte is always predefined (0x80). */
-- /* Buffer always have space at least for one byte (as full buffers are
-- processed immediately). */
-- ctx->buffer[bytes_have++] = 0x80;
--
-- if (SHA1_BLOCK_SIZE - bytes_have < SHA1_SIZE_OF_LEN_ADD)
-- { /* No space in current block to put total length of message.
-- Pad current block with zeros and process it. */
-- if (SHA1_BLOCK_SIZE > bytes_have)
-- memset (ctx->buffer + bytes_have, 0, SHA1_BLOCK_SIZE - bytes_have);
-- /* Process full block. */
-- sha1_transform (ctx->H, ctx->buffer);
-- /* Start new block. */
-- bytes_have = 0;
-- }
--
-- /* Pad the rest of the buffer with zeros. */
-- memset (ctx->buffer + bytes_have, 0,
-- SHA1_BLOCK_SIZE - SHA1_SIZE_OF_LEN_ADD - bytes_have);
-- /* Put the number of bits in the processed message as a big-endian value. */
-- _MHD_PUT_64BIT_BE_SAFE (ctx->buffer + SHA1_BLOCK_SIZE - SHA1_SIZE_OF_LEN_ADD,
-- num_bits);
-- /* Process the full final block. */
-- sha1_transform (ctx->H, ctx->buffer);
--
-- /* Put final hash/digest in BE mode */
--#ifndef _MHD_PUT_32BIT_BE_UNALIGNED
-- if (0 != ((uintptr_t) digest) % _MHD_UINT32_ALIGN)
-- {
-- uint32_t alig_dgst[_SHA1_DIGEST_LENGTH];
-- _MHD_PUT_32BIT_BE (alig_dgst + 0, ctx->H[0]);
-- _MHD_PUT_32BIT_BE (alig_dgst + 1, ctx->H[1]);
-- _MHD_PUT_32BIT_BE (alig_dgst + 2, ctx->H[2]);
-- _MHD_PUT_32BIT_BE (alig_dgst + 3, ctx->H[3]);
-- _MHD_PUT_32BIT_BE (alig_dgst + 4, ctx->H[4]);
-- /* Copy result to unaligned destination address */
-- memcpy (digest, alig_dgst, SHA1_DIGEST_SIZE);
-- }
-- else
--#else /* _MHD_PUT_32BIT_BE_UNALIGNED */
-- if (1)
--#endif /* _MHD_PUT_32BIT_BE_UNALIGNED */
-- {
-- _MHD_PUT_32BIT_BE (digest + 0 * SHA1_BYTES_IN_WORD, ctx->H[0]);
-- _MHD_PUT_32BIT_BE (digest + 1 * SHA1_BYTES_IN_WORD, ctx->H[1]);
-- _MHD_PUT_32BIT_BE (digest + 2 * SHA1_BYTES_IN_WORD, ctx->H[2]);
-- _MHD_PUT_32BIT_BE (digest + 3 * SHA1_BYTES_IN_WORD, ctx->H[3]);
-- _MHD_PUT_32BIT_BE (digest + 4 * SHA1_BYTES_IN_WORD, ctx->H[4]);
-- }
--
-- /* Erase potentially sensitive data. */
-- memset (ctx, 0, sizeof(struct sha1_ctx));
--}
-diff --git a/src/microhttpd_ws/sha1.h b/src/microhttpd_ws/sha1.h
-deleted file mode 100644
-index 851a442..0000000
---- a/src/microhttpd_ws/sha1.h
-+++ /dev/null
-@@ -1,110 +0,0 @@
--/*
-- This file is part of libmicrohttpd
-- Copyright (C) 2019-2021 Karlson2k (Evgeny Grin)
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library.
-- If not, see <http://www.gnu.org/licenses/>.
--*/
--
--/**
-- * @file microhttpd/sha1.h
-- * @brief Calculation of SHA-1 digest
-- * @author Karlson2k (Evgeny Grin)
-- */
--
--#ifndef MHD_SHA1_H
--#define MHD_SHA1_H 1
--
--#include "mhd_options.h"
--#include <stdint.h>
--#ifdef HAVE_STDDEF_H
--#include <stddef.h> /* for size_t */
--#endif /* HAVE_STDDEF_H */
--
--/**
-- * SHA-1 digest is kept internally as 5 32-bit words.
-- */
--#define _SHA1_DIGEST_LENGTH 5
--
--/**
-- * Number of bits in single SHA-1 word
-- */
--#define SHA1_WORD_SIZE_BITS 32
--
--/**
-- * Number of bytes in single SHA-1 word
-- */
--#define SHA1_BYTES_IN_WORD (SHA1_WORD_SIZE_BITS / 8)
--
--/**
-- * Size of SHA-1 digest in bytes
-- */
--#define SHA1_DIGEST_SIZE (_SHA1_DIGEST_LENGTH * SHA1_BYTES_IN_WORD)
--
--/**
-- * Size of SHA-1 digest string in chars including termination NUL
-- */
--#define SHA1_DIGEST_STRING_SIZE ((SHA1_DIGEST_SIZE) * 2 + 1)
--
--/**
-- * Size of single processing block in bits
-- */
--#define SHA1_BLOCK_SIZE_BITS 512
--
--/**
-- * Size of single processing block in bytes
-- */
--#define SHA1_BLOCK_SIZE (SHA1_BLOCK_SIZE_BITS / 8)
--
--
--struct sha1_ctx
--{
-- uint32_t H[_SHA1_DIGEST_LENGTH]; /**< Intermediate hash value / digest at end of calculation */
-- uint8_t buffer[SHA1_BLOCK_SIZE]; /**< SHA256 input data buffer */
-- uint64_t count; /**< number of bytes, mod 2^64 */
--};
--
--/**
-- * Initialise structure for SHA-1 calculation.
-- *
-- * @param ctx must be a `struct sha1_ctx *`
-- */
--void
--MHD_SHA1_init (void *ctx_);
--
--
--/**
-- * Process portion of bytes.
-- *
-- * @param ctx_ must be a `struct sha1_ctx *`
-- * @param data bytes to add to hash
-- * @param length number of bytes in @a data
-- */
--void
--MHD_SHA1_update (void *ctx_,
-- const uint8_t *data,
-- size_t length);
--
--
--/**
-- * Finalise SHA-1 calculation, return digest.
-- *
-- * @param ctx_ must be a `struct sha1_ctx *`
-- * @param[out] digest set to the hash, must be #SHA1_DIGEST_SIZE bytes
-- */
--void
--MHD_SHA1_finish (void *ctx_,
-- uint8_t digest[SHA1_DIGEST_SIZE]);
--
--#endif /* MHD_SHA1_H */
-diff --git a/src/microhttpd_ws/test_websocket.c b/src/microhttpd_ws/test_websocket.c
-deleted file mode 100644
-index b824b9c..0000000
---- a/src/microhttpd_ws/test_websocket.c
-+++ /dev/null
-@@ -1,10105 +0,0 @@
--/*
-- This file is part of libmicrohttpd
-- Copyright (C) 2021 David Gausmann
--
-- libmicrohttpd is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published
-- by the Free Software Foundation; either version 3, or (at your
-- option) any later version.
--
-- libmicrohttpd is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with libmicrohttpd; see the file COPYING. If not, write to the
-- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-- Boston, MA 02110-1301, USA.
--*/
--/**
-- * @file test_websocket.c
-- * @brief Testcase for WebSocket decoding/encoding
-- * @author David Gausmann
-- */
--#include "microhttpd.h"
--#include "microhttpd_ws.h"
--#include <stdlib.h>
--#include <string.h>
--#include <stdio.h>
--#include <stdint.h>
--#include <time.h>
--
--#if SIZE_MAX >= 0x100000000
-- #define ENABLE_64BIT_TESTS 1
--#endif
--
--int disable_alloc = 0;
--size_t open_allocs = 0;
--
--/**
-- * Custom `malloc()` function used for memory tests
-- */
--static void *
--test_malloc (size_t buf_len)
--{
-- if (0 != disable_alloc)
-- return NULL;
-- void *result = malloc (buf_len);
-- if (NULL != result)
-- ++open_allocs;
-- return result;
--}
--
--
--/**
-- * Custom `realloc()` function used for memory tests
-- */
--static void *
--test_realloc (void *buf, size_t buf_len)
--{
-- if (0 != disable_alloc)
-- return NULL;
-- void *result = realloc (buf, buf_len);
-- if ((NULL != result) && (NULL == buf))
-- ++open_allocs;
-- return result;
--}
--
--
--/**
-- * Custom `free()` function used for memory tests
-- */
--static void
--test_free (void *buf)
--{
-- if (NULL != buf)
-- --open_allocs;
-- free (buf);
--}
--
--
--/**
-- * Custom `rng()` function used for client mode tests
-- */
--static size_t
--test_rng (void *cls, void *buf, size_t buf_len)
--{
-- for (size_t i = 0; i < buf_len; ++i)
-- {
-- ((char *) buf) [i] = (char) (rand () % 0xFF);
-- }
--
-- return buf_len;
--}
--
--
--/**
-- * Helper function which allocates a big amount of data
-- */
--static void
--allocate_length_test_data (char **buf1,
-- char **buf2,
-- size_t buf_len,
-- const char *buf1_prefix,
-- size_t buf1_prefix_len)
--{
-- if (NULL != *buf1)
-- free (*buf1);
-- if (NULL != *buf2)
-- free (*buf2);
-- *buf1 = (char *) malloc (buf_len + buf1_prefix_len);
-- *buf2 = (char *) malloc (buf_len);
-- if ((NULL == buf1) || (NULL == buf2))
-- return;
-- memcpy (*buf1,
-- buf1_prefix,
-- buf1_prefix_len);
-- for (size_t i = 0; i < buf_len; i += 64)
-- {
-- size_t bytes_to_copy = buf_len - i;
-- if (64 < bytes_to_copy)
-- bytes_to_copy = 64;
-- memcpy (*buf1 + i + buf1_prefix_len,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-",
-- bytes_to_copy);
-- memcpy (*buf2 + i,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-",
-- bytes_to_copy);
-- }
--}
--
--
--/**
-- * Helper function which performs a single decoder test
-- */
--static int
--test_decode_single (unsigned int test_line,
-- int flags, size_t max_payload_size, size_t decode_count,
-- size_t buf_step,
-- const char *buf, size_t buf_len,
-- const char *expected_payload, size_t expected_payload_len,
-- int expected_return, int expected_valid, size_t
-- expected_streambuf_read_len)
--{
-- struct MHD_WebSocketStream *ws = NULL;
-- int ret = MHD_WEBSOCKET_STATUS_OK;
--
-- /* initialize stream */
-- ret = MHD_websocket_stream_init2 (&ws,
-- flags,
-- max_payload_size,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Allocation failed for decode test in line %u.\n",
-- (unsigned int) test_line);
-- return 1;
-- }
--
-- /* perform decoding in a loop */
-- size_t streambuf_read_len = 0;
-- size_t payload_len = 0;
-- char *payload = NULL;
-- for (size_t i = 0; i < decode_count; ++i)
-- {
-- size_t streambuf_read_len_ = 0;
-- size_t bytes_to_take = buf_len - streambuf_read_len;
-- if ((0 != buf_step) && (buf_step < bytes_to_take))
-- bytes_to_take = buf_step;
-- ret = MHD_websocket_decode (ws, buf + streambuf_read_len, bytes_to_take,
-- &streambuf_read_len_, &payload, &payload_len);
-- streambuf_read_len += streambuf_read_len_;
-- if (i + 1 < decode_count)
-- {
-- if (payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- payload_len = 0;
-- }
-- }
-- }
--
-- /* check the (last) result */
-- if (ret != expected_return)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The return value should be %d, but is %d\n",
-- (unsigned int) test_line,
-- (int) expected_return,
-- (int) ret);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- if (payload_len != expected_payload_len)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The payload_len should be %u, but is %u\n",
-- (unsigned int) test_line,
-- (unsigned int) expected_payload_len,
-- (unsigned int) payload_len);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- if (0 != payload_len)
-- {
-- if (NULL == payload)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The payload is NULL\n",
-- (unsigned int) test_line);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- else if (NULL == expected_payload)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The expected_payload is NULL (wrong test declaration)\n",
-- (unsigned int) test_line);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- else if (0 != memcmp (payload, expected_payload, payload_len))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The payload differs from the expected_payload\n",
-- (unsigned int) test_line);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- }
-- else
-- {
-- if (NULL != payload)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The payload is not NULL, but payload_len is 0\n",
-- (unsigned int) test_line);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- else if (NULL != expected_payload)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The expected_payload is not NULL, but expected_payload_len is 0 (wrong test declaration)\n",
-- (unsigned int) test_line);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- }
-- if (streambuf_read_len != expected_streambuf_read_len)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The streambuf_read_len should be %u, but is %u\n",
-- (unsigned int) test_line,
-- (unsigned int) expected_streambuf_read_len,
-- (unsigned int) streambuf_read_len);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
-- ret = MHD_websocket_stream_is_valid (ws);
-- if (ret != expected_valid)
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u: The stream validity should be %u, but is %u\n",
-- (unsigned int) test_line,
-- (int) expected_valid,
-- (int) ret);
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
-- return 1;
-- }
--
-- /* cleanup */
-- MHD_websocket_free (ws, payload);
-- MHD_websocket_stream_free (ws);
--
-- return 0;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_stream_init()` and
-- * `MHD_websocket_stream_init2()`
-- */
--int
--test_inits ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *ws;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- All valid flags
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: all valid flags for init (only the even ones work) */
-- for (int i = 0; i < 7; ++i)
-- {
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- i,
-- 0);
-- if (((0 == (i & MHD_WEBSOCKET_FLAG_CLIENT)) &&
-- ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws))) ||
-- ((0 != (i & MHD_WEBSOCKET_FLAG_CLIENT)) &&
-- ((MHD_WEBSOCKET_STATUS_OK == ret) ||
-- (NULL != ws))))
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for flags %d.\n",
-- (unsigned int) __LINE__,
-- (int) i);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- }
-- /* Regular test: all valid flags for init2 */
-- for (int i = 0; i < 7; ++i)
-- {
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- i,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- test_rng);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for flags %d.\n",
-- (unsigned int) __LINE__,
-- (int) i);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- }
-- /* Fail test: Invalid flags for init */
-- for (int i = 4; i < 32; ++i)
-- {
-- int flags = 1 << i;
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- flags,
-- 0);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for invalid flags %d.\n",
-- (unsigned int) __LINE__,
-- (int) flags);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- }
-- /* Fail test: Invalid flag for init2 */
-- for (int i = 4; i < 32; ++i)
-- {
-- int flags = 1 << i;
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- flags,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for invalid flags %d.\n",
-- (unsigned int) __LINE__,
-- (int) flags);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- max_payload_size
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: max_payload_size = 0 for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: max_payload_size = 0 for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Edge test (success): max_payload_size = 1 for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 1);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 1.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Edge test (success): max_payload_size = 1 for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 1,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 1.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: max_payload_size = 1000 for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 1000);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 1000.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: max_payload_size = 1000 for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 1000,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 1000.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
--#ifdef ENABLE_64BIT_TESTS
-- /* Edge test (success): max_payload_size = 0x7FFFFFFFFFFFFFFF for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- (uint64_t) 0x7FFFFFFFFFFFFFFF);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0x7FFFFFFFFFFFFFFF.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Edge test (success): max_payload_size = 0x7FFFFFFFFFFFFFFF for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- (uint64_t) 0x7FFFFFFFFFFFFFFF,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0x7FFFFFFFFFFFFFFF.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Edge test (fail): max_payload_size = 0x8000000000000000 for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- (uint64_t) 0x8000000000000000);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0x8000000000000000.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Edge test (fail): max_payload_size = 0x8000000000000000 for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- (uint64_t) 0x8000000000000000,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u for max_payload_size 0x8000000000000000.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
--#endif
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: websocket stream variable missing for init */
-- ws = NULL;
-- ret = MHD_websocket_stream_init (NULL,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Fail test: websocket stream variable missing for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (NULL,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Fail test: malloc missing for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- NULL,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Fail test: realloc missing for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- NULL,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Fail test: free missing for init2 */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- NULL,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: rng given for server mode (will be ignored) */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- test_rng);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: cls_rng given for server mode (will be ignored) */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- (void *) 12345,
-- test_rng);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Regular test: rng given for client mode */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- test_rng);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL == ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
-- /* Fail test: rng not given for client mode */
-- ws = NULL;
-- ret = MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != ws) )
-- {
-- fprintf (stderr,
-- "Init test failed in line %u %u.\n",
-- (unsigned int) __LINE__, ret);
-- ++failed;
-- }
-- if (NULL != ws)
-- {
-- MHD_websocket_stream_free (ws);
-- ws = NULL;
-- }
--
-- return failed != 0 ? 0x01 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_create_accept_header()`
-- */
--int
--test_accept ()
--{
-- int failed = 0;
-- char accept_key[29];
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- accepting
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Test case from RFC6455 4.2.2 */
-- memset (accept_key, 0, 29);
-- ret = MHD_websocket_create_accept_header ("dGhlIHNhbXBsZSBub25jZQ==",
-- accept_key);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != memcmp (accept_key, "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", 29)))
-- {
-- fprintf (stderr,
-- "Accept test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: missing sec-key value */
-- memset (accept_key, 0, 29);
-- ret = MHD_websocket_create_accept_header (NULL,
-- accept_key);
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "Accept test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: missing accept variable */
-- memset (accept_key, 0, 29);
-- ret = MHD_websocket_create_accept_header ("dGhlIHNhbXBsZSBub25jZQ==",
-- NULL);
-- if (MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret)
-- {
-- fprintf (stderr,
-- "Accept test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x02 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_decode()`
-- */
--int
--test_decodes ()
--{
-- int failed = 0;
-- char *buf1 = NULL, *buf2 = NULL;
--
-- /*
-- ------------------------------------------------------------------------------
-- text frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Masked text frame from RFC 6455, must succeed for server */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58",
-- 11,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Unmasked text frame from RFC 6455, must succeed for client */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x05\x48\x65\x6c\x6c\x6f",
-- 7,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Fail test: Unmasked text frame from RFC 6455, must fail for server */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x05\x48\x65\x6c\x6c\x6f",
-- 7,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Masked text frame from RFC 6455, must fail for client */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Text frame with UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x90\x00\x00\x00\x00" "This is my n"
-- "\xC3\xB6" "te",
-- 22,
-- "This is my n" "\xC3\xB6" "te",
-- 16,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 22);
-- /* Fail test: Text frame with with invalid UTF-8 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8F\x00\x00\x00\x00" "This is my n" "\xFF"
-- "te",
-- 21,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 18);
-- /* Fail test: Text frame with broken UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8F\x00\x00\x00\x00" "This is my n" "\xC3"
-- "te",
-- 21,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 19);
-- /* Regular test: Text frame without payload and mask (caller = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x80\x01\x02\x03\x04",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Fail test: Text frame without payload and no mask (caller = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Text frame without payload and mask (caller = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 2);
-- /* Fail test: Text frame without payload and no mask (caller = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x80\x01\x02\x03\x04",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
--
-- /*
-- ------------------------------------------------------------------------------
-- binary frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Masked binary frame (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58",
-- 11,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Unmasked binary frame (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x05\x48\x65\x6c\x6c\x6f",
-- 7,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Fail test: Unmasked binary frame (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x05\x48\x65\x6c\x6c\x6f",
-- 7,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Masked binary frame (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Binary frame without payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Regular test: Fragmented binary frame without payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x80\x00\x00\x00\x00\x80\x80\x00\x00\x00\x00",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 12);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x80\x00\x00\x00\x00\x80\x80\x00\x00\x00\x00",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_BINARY_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x02\x80\x00\x00\x00\x00\x80\x80\x00\x00\x00\x00",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_BINARY_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 12);
-- /* Regular test: Fragmented binary frame with payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x80\x83\x00\x00\x00\x00\x04\x05\x06",
-- 18,
-- "\x01\x02\x03\x04\x05\x06",
-- 6,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 18);
-- /* Regular test: Fragmented binary frame with payload, fragments to the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x80\x83\x00\x00\x00\x00\x04\x05\x06",
-- 18,
-- "\x01\x02\x03",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 9);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x80\x83\x00\x00\x00\x00\x04\x05\x06",
-- 18,
-- "\x04\x05\x06",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 18);
-- /* Regular test: Fragmented binary frame with payload, fragments to the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x00\x83\x00\x00\x00\x00\x04\x05\x06\x00\x83\x00\x00\x00\x00\x07\x08\x09\x80\x83\x00\x00\x00\x00\x0A\x0B\x0C",
-- 36,
-- "\x01\x02\x03",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 9);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x00\x83\x00\x00\x00\x00\x04\x05\x06\x00\x83\x00\x00\x00\x00\x07\x08\x09\x80\x83\x00\x00\x00\x00\x0A\x0B\x0C",
-- 36,
-- "\x04\x05\x06",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_NEXT_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 18);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 3rd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x00\x83\x00\x00\x00\x00\x04\x05\x06\x00\x83\x00\x00\x00\x00\x07\x08\x09\x80\x83\x00\x00\x00\x00\x0A\x0B\x0C",
-- 36,
-- "\x07\x08\x09",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_NEXT_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 27);
-- /* Regular test: Fragmented binary frame without payload, fragments to the caller, 4th call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 4,
-- 0,
-- "\x02\x83\x00\x00\x00\x00\x01\x02\x03\x00\x83\x00\x00\x00\x00\x04\x05\x06\x00\x83\x00\x00\x00\x00\x07\x08\x09\x80\x83\x00\x00\x00\x00\x0A\x0B\x0C",
-- 36,
-- "\x0A\x0B\x0C",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 36);
-- /* Regular test: Binary frame with bytes which look like invalid UTF-8 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x85\x00\x00\x00\x00" "Hell\xf6",
-- 11,
-- "Hell\xf6",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Binary frame with bytes which look like broken UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x85\x00\x00\x00\x00" "H\xC3llo",
-- 11,
-- "H\xC3llo",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Binary frame with bytes which look like valid UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x82\x85\x00\x00\x00\x00" "H\xC3\xA4lo",
-- 11,
-- "H\xC3\xA4lo",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Fragmented binary frame with bytes which look like valid UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x82\x00\x00\x00\x00" "H\xC3"
-- "\x80\x83\x00\x00\x00\x00" "\xA4lo",
-- 17,
-- "H\xC3\xA4lo",
-- 5,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented binary frame with bytes which look like valid UTF-8 sequence,
-- fragments to the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x02\x82\x00\x00\x00\x00" "H\xC3"
-- "\x80\x83\x00\x00\x00\x00" "\xA4lo",
-- 17,
-- "H\xC3",
-- 2,
-- MHD_WEBSOCKET_STATUS_BINARY_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 8);
-- /* Regular test: Fragmented binary frame with bytes which look like valid UTF-8 sequence,
-- fragments to the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x02\x82\x00\x00\x00\x00" "H\xC3"
-- "\x80\x83\x00\x00\x00\x00" "\xA4lo",
-- 17,
-- "\xA4lo",
-- 3,
-- MHD_WEBSOCKET_STATUS_BINARY_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
--
-- /*
-- ------------------------------------------------------------------------------
-- close frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Close frame with no payload but with mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 6);
-- /* Regular test: Close frame with no payload (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 2);
-- /* Fail test: Close frame with no payload and no mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Close frame with no payload but with mask (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Close frame with 2 byte payload for close reason */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x82\x00\x00\x00\x00\x03\xEB",
-- 8,
-- "\x03\xEB",
-- 2,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 8);
-- /* Fail test: Close frame with 1 byte payload (no valid close reason) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x81\x00\x00\x00\x00\x03",
-- 7,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Close frame with close reason and UTF-8 description */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x95\x00\x00\x00\x00\x03\xEB"
-- "Something was wrong",
-- 27,
-- "\x03\xEB" "Something was wrong",
-- 21,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 27);
-- /* Regular test: Close frame with close reason and UTF-8 description (with UTF-8 sequence) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x96\x00\x00\x00\x00\x03\xEB"
-- "Something was wr" "\xC3\xB6" "ng",
-- 28,
-- "\x03\xEB" "Something was wr" "\xC3\xB6" "ng",
-- 22,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 28);
-- /* Fail test: Close frame with close reason and invalid UTF-8 in description */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x95\x00\x00\x00\x00\x03\xEB"
-- "Something was wr" "\xFF" "ng",
-- 27,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 24);
-- /* Fail test: Close frame with close reason and broken UTF-8 sequence in description */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x95\x00\x00\x00\x00\x03\xEB"
-- "Something was wr" "\xC3" "ng",
-- 27,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 25);
-- /* Edge test (success): Close frame with 125 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFD\x00\x00\x00\x00\x03\xEB"
-- "Something was wrong, so I decided to close this websocket. I hope you are not angry. But this is also the 123 cap test. :-)",
-- 131,
-- "\x03\xEB"
-- "Something was wrong, so I decided to close this websocket. I hope you are not angry. But this is also the 123 cap test. :-)",
-- 125,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 131);
-- /* Edge test (failure): Close frame with 126 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFE\x00\x7e\x00\x00\x00\x00\x03\xEB"
-- "Something was wrong, so I decided to close this websocket. I hope you are not angry. But this is also the 123 cap test. >:-)",
-- 134,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Close frame with 500 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFE\x01\xf4\x00\x00\x00\x00\x03\xEB"
-- "The payload of this test isn't parsed.",
-- 49,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Edge test (failure): Close frame with 65535 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFE\xff\xff\x00\x00\x00\x00\x03\xEB"
-- "The payload of this test isn't parsed.",
-- 49,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Edge test (failure): Close frame with 65536 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFF\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03\xEB"
-- "The payload of this test isn't parsed.",
-- 54,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Close frame with 1000000 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\xFF\x00\x00\x00\x00\x00\x0F\x42\x40\x00\x00\x00\x00\x03\xEB"
-- "The payload of this test isn't parsed.",
-- 54,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
--
-- /*
-- ------------------------------------------------------------------------------
-- ping frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Ping frame with no payload but with mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Regular test: Ping frame with no payload (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 2);
-- /* Fail test: Ping frame with no payload and no mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Ping frame with no payload but with mask (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Ping frame with some (masked) payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x88\x01\x20\x03\x40\xFF\xFF\xFF\xFF\x00\x00\x00\x00",
-- 14,
-- "\xFE\xDF\xFC\xBF\x01\x20\x03\x40",
-- 8,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 14);
-- /* Edge test (success): Ping frame with one byte of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x81\x00\x00\x00\x00" "a",
-- 7,
-- "a",
-- 1,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Edge test (success): Ping frame with 125 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\xFD\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 131,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 131);
-- /* Edge test (fail): Ping frame with 126 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\xFE\x00\x7E\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 134,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Ping frame with UTF-8 data */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x90\x00\x00\x00\x00" "Ping is bin"
-- "\xC3\xA4" "ry.",
-- 22,
-- "Ping is bin" "\xC3\xA4" "ry.",
-- 16,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 22);
-- /* Regular test: Ping frame with invalid UTF-8 data */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x8F\x00\x00\x00\x00" "Ping is bin" "\xFF"
-- "ry.",
-- 21,
-- "Ping is bin" "\xFF" "ry.",
-- 15,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 21);
-- /* Regular test: Ping frame with broken UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x8F\x00\x00\x00\x00" "Ping is bin" "\xC3"
-- "ry.",
-- 21,
-- "Ping is bin" "\xC3" "ry.",
-- 15,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 21);
--
-- /*
-- ------------------------------------------------------------------------------
-- pong frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Pong frame with no payload but with mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Regular test: Pong frame with no payload (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 2);
-- /* Fail test: Pong frame with no payload and no mask (decoder = server) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x00",
-- 2,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Fail test: Pong frame with no payload but with mask (decoder = client) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_CLIENT
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Pong frame with some (masked) payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x88\x01\x20\x03\x40\xFF\xFF\xFF\xFF\x00\x00\x00\x00",
-- 14,
-- "\xFE\xDF\xFC\xBF\x01\x20\x03\x40",
-- 8,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 14);
-- /* Edge test (success): Pong frame with one byte of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x81\x00\x00\x00\x00" "a",
-- 7,
-- "a",
-- 1,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Edge test (success): Pong frame with 125 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\xFD\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 131,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 131);
-- /* Edge test (fail): Pong frame with 126 bytes of payload */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\xFE\x00\x7E\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 134,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 1);
-- /* Regular test: Pong frame with UTF-8 data */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x90\x00\x00\x00\x00" "Pong is bin"
-- "\xC3\xA4" "ry.",
-- 22,
-- "Pong is bin" "\xC3\xA4" "ry.",
-- 16,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 22);
-- /* Regular test: Pong frame with invalid UTF-8 data */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x8F\x00\x00\x00\x00" "Pong is bin" "\xFF"
-- "ry.",
-- 21,
-- "Pong is bin" "\xFF" "ry.",
-- 15,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 21);
-- /* Regular test: Pong frame with broken UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8A\x8F\x00\x00\x00\x00" "Pong is bin" "\xC3"
-- "ry.",
-- 21,
-- "Pong is bin" "\xC3" "ry.",
-- 15,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 21);
--
-- /*
-- ------------------------------------------------------------------------------
-- fragmentation
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Fragmented, masked text frame, we are the server and don't want fragments as caller */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x80\x82\x3d\x37\xfa\x21\x51\x58",
-- 17,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented, masked text frame, we are the server and don't want fragments as caller, but call decode two times */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x80\x82\x3d\x37\xfa\x21\x51\x58",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, one call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x80\x82\x3d\x37\xfa\x21\x51\x58",
-- 17,
-- "Hel",
-- 3,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 9);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, second call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x80\x82\x3d\x37\xfa\x21\x51\x58",
-- 17,
-- "lo",
-- 2,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, third call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x80\x82\x3d\x37\xfa\x21\x51\x58",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x00\x81\x3d\x37\xfa\x21\x51\x80\x81\x37\x37\xfa\x21\x58",
-- 23,
-- "Hel",
-- 3,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 9);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x00\x81\x3d\x37\xfa\x21\x51\x80\x81\x37\x37\xfa\x21\x58",
-- 23,
-- "l",
-- 1,
-- MHD_WEBSOCKET_STATUS_TEXT_NEXT_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Regular test: Fragmented, masked text frame, we are the server and want fragments, 3rd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x01\x83\x37\xfa\x21\x3d\x7f\x9f\x4d\x00\x81\x3d\x37\xfa\x21\x51\x80\x81\x37\x37\xfa\x21\x58",
-- 23,
-- "o",
-- 1,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 23);
--
--
-- /*
-- ------------------------------------------------------------------------------
-- invalid flags
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Template with valid data for the next tests (this one must succeed) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Fail test: RSV1 flag set */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x91\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: RSV2 flag set */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\xA1\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: RSV3 flag set */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\xC1\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
--
-- /*
-- ------------------------------------------------------------------------------
-- invalid opcodes
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: Invalid opcode 0 (0 is usually valid, but only if there was a data frame before) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x80\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 3 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x83\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 4 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x84\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 5 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x85\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 6 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x86\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 7 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x87\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 0x0B */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8B\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 0x0C */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8c\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 0x0D */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8d\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 0x0E */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8e\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Invalid opcode 0x0F */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x8f\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
--
--
-- /*
-- ------------------------------------------------------------------------------
-- control frames without FIN flag
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: Close frame without FIN flag */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x08\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Ping frame without FIN flag */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x09\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Fail test: Pong frame without FIN flag */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x0a\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
--
-- /*
-- ------------------------------------------------------------------------------
-- length checks (without max_payload_len)
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): 0 bytes of payload (requires 1 byte length) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x80\x00\x00\x00\x00",
-- 6,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 6);
-- /* Edge test (success): 1 byte of payload (requires 1 byte length) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x81\x00\x00\x00\x00" "a",
-- 7,
-- "a",
-- 1,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Edge test (success): 125 bytes of payload (requires 1 byte length) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xfd\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 131,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 131);
-- /* Edge test (success): 126 bytes of payload (requires 2 byte length) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xfe\x00\x7e\x00\x00\x00\x00"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 134,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 126,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 134);
-- /* Edge test (success): 65535 bytes of payload (requires 2 byte length) */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65535,
-- "\x81\xfe\xff\xff\x00\x00\x00\x00",
-- 8);
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- buf1,
-- 65535 + 8,
-- buf2,
-- 65535,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 65535 + 8);
-- /* Edge test (success): 65536 bytes of payload (requires 8 byte length) */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65536,
-- "\x81\xff\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00",
-- 14);
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- buf1,
-- 65536 + 14,
-- buf2,
-- 65536,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 65536 + 14);
-- /* Regular test: 1 MB of payload */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 1048576,
-- "\x81\xff\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00",
-- 14);
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- buf1,
-- 1048576 + 14,
-- buf2,
-- 1048576,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 1048576 + 14);
-- /* Regular test: 100 MB of payload */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 104857600,
-- "\x81\xff\x00\x00\x00\x00\x06\x40\x00\x00\x00\x00\x00\x00",
-- 14);
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- buf1,
-- 104857600 + 14,
-- buf2,
-- 104857600,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 104857600 + 14);
-- if (NULL != buf1)
-- {
-- free (buf1);
-- buf1 = NULL;
-- }
-- if (NULL != buf2)
-- {
-- free (buf2);
-- buf2 = NULL;
-- }
--#ifdef ENABLE_64BIT_TESTS
-- /* Edge test (success): Maximum allowed length (here is only the header checked) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\x7f\xff\xff\xff\xff\xff\xff\xff",
-- 10,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 10);
--#else
-- /* Edge test (fail): Maximum allowed length
-- (the size is allowed, but the system cannot handle this amount of memory) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\x7f\xff\xff\xff\xff\xff\xff\xff",
-- 10,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
--#endif
-- /* Edge test (fail): Too big payload length */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\x80\x00\x00\x00\x00\x00\x00\x00",
-- 10,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
-- /* Edge test (fail): Too big payload length */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\xff\xff\xff\xff\xff\xff\xff\xff",
-- 10,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
-- /* Fail test: Not the smallest payload length syntax used (2 byte instead of 1 byte) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xfe\x00\x05\x00\x00\x00\x00" "abcde",
-- 13,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 4);
-- /* Fail test: Not the smallest payload length syntax used (8 byte instead of 1 byte) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00"
-- "abcde",
-- 13,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
-- /* Fail test: Not the smallest payload length syntax used (8 byte instead of 2 byte) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\xff\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00"
-- "abcde",
-- 13,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
--
-- /*
-- ------------------------------------------------------------------------------
-- length checks (with max_payload_len)
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Frame with less payload than specified as limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 100,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Edge test (success): Frame with the same payload as the specified limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 5,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Edge test (fail): Frame with more payload than specified as limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 4,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 2);
-- /* Regular test: Fragmented frames with the sum of payload less than specified as limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 100,
-- 1,
-- 0,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Edge test (success): Fragmented frames with the sum of payload equal to the specified limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 5,
-- 1,
-- 0,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Edge test (fail): Fragmented frames with the sum of payload more than specified as limit */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 4,
-- 1,
-- 0,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 15);
-- /* Edge test (success): Fragmented frames with the sum of payload greater than
-- the specified limit, but we take fragments (one call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 5,
-- 1,
-- 0,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- "Hel",
-- 3,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 9);
-- /* Edge test (success): Fragmented frames with the sum of payload greater than
-- the specified limit, but we take fragments (two calls) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 5,
-- 2,
-- 0,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- "lo",
-- 2,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
--
-- /*
-- ------------------------------------------------------------------------------
-- UTF-8 sequences
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: No UTF-8 characters */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 a ",
-- 16,
-- " a ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Fail test: A UTF-8 tail character without sequence start character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xA4 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Regular test: A two byte UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xC3\xA4 ",
-- 16,
-- " \xC3\xA4 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Fail test: A broken two byte UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xC3 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Fail test: A two byte UTF-8 sequence with one UTF-8 tail too much */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xC3\xA4\xA4 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 9);
-- /* Regular test: A three byte UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\x8F\x8F ",
-- 16,
-- " \xEF\x8F\x8F ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Fail test: A broken byte UTF-8 sequence (two of three bytes) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 9);
-- /* Fail test: A broken byte UTF-8 sequence (one of three bytes) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Fail test: A three byte UTF-8 sequence followed by one UTF-8 tail byte */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
-- /* Regular test: A four byte UTF-8 sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF2\x8F\x8F\x8F ",
-- 16,
-- " \xF2\x8F\x8F\x8F ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Fail test: A broken four byte UTF-8 sequence (three of four bytes) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF2\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 10);
-- /* Fail test: A broken four byte UTF-8 sequence (two of four bytes) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF2\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 9);
-- /* Fail test: A broken four byte UTF-8 sequence (one of four bytes) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF2 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Fail test: A four byte UTF-8 sequence followed by UTF-8 tail */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF2\x8F\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 11);
-- /* Fail test: A five byte UTF-8 sequence (only up to four bytes allowed) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xFB\x8F\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Fail test: A six byte UTF-8 sequence (only up to four bytes allowed) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xFD\x8F\x8F\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Fail test: A seven byte UTF-8 sequence (only up to four bytes allowed) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xFE\x8F\x8F\x8F\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Fail test: A eight byte UTF-8 sequence (only up to four bytes allowed) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xFF\x8F\x8F\x8F\x8F\x8F\x8F\x8F ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Edge test (success): The maximum allowed UTF-8 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF4\x8F\xBF\xBF ",
-- 16,
-- " \xF4\x8F\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The maximum allowed UTF-8 character + 1 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF4\x90\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The last valid UTF8-1 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \x7F ",
-- 16,
-- " \x7F ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the last valid UTF8-1 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Edge test (fail): The value before the first valid UTF8-2 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xC1\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Edge test (success): The first valid UTF8-2 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xC2\x80 ",
-- 16,
-- " \xC2\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-2 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xDF\xBF ",
-- 16,
-- " \xDF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the lst valid UTF8-2 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE0\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): The value before the first valid UTF8-3 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE0\x9F\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-3 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE0\xA0\x80 ",
-- 16,
-- " \xE0\xA0\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-3 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE0\xBF\xBF ",
-- 16,
-- " \xE0\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the first valid UTF8-3 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE0\xC0\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-3 character (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xE1\x80\x80 ",
-- 16,
-- " \xE1\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-3 character (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEC\xBF\xBF ",
-- 16,
-- " \xEC\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the last valid UTF8-3 character (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEC\xC0\xBF ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): The value before the first valid UTF8-3 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xED\x7F\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-3 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xED\x80\x80 ",
-- 16,
-- " \xED\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-3 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xED\x9F\xBF ",
-- 16,
-- " \xED\x9F\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the last valid UTF8-3 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xED\xA0\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): The value before the first valid UTF8-3 character (tail 4) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEE\x7F\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-3 character (tail 4) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEE\x80\x80 ",
-- 16,
-- " \xEE\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-3 character (tail 4) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\xBF\xBF ",
-- 16,
-- " \xEF\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the last valid UTF8-3 character (tail 4) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\xBF\xC0 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 9);
-- /* Edge test (fail): The value after the last valid UTF8-3 character (tail 4) #2 */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xEF\xC0\xBF ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): The value before the first valid UTF8-4 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF0\x8F\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-4 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF0\x90\x80\x80 ",
-- 16,
-- " \xF0\x90\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-4 character (tail 1) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF0\xBF\xBF\xBF ",
-- 16,
-- " \xF0\xBF\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The first valid UTF8-4 character (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF1\x80\x80\x80 ",
-- 16,
-- " \xF1\x80\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-4 character (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF3\xBF\xBF\xBF ",
-- 16,
-- " \xF3\xBF\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): A value before the last valid UTF8-4 character in the second byte (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF3\x7F\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): A value after the last valid UTF8-4 character in the second byte (tail 2) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF3\xC0\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (success): The first valid UTF8-4 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF4\x80\x80\x80 ",
-- 16,
-- " \xF4\x80\x80\x80 ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (success): The last valid UTF8-4 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF4\x8F\xBF\xBF ",
-- 16,
-- " \xF4\x8F\xBF\xBF ",
-- 10,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 16);
-- /* Edge test (fail): The value after the last valid UTF8-4 character (tail 3) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF4\x90\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 8);
-- /* Edge test (fail): The first byte value the last valid UTF8-4 character */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x8A\x00\x00\x00\x00 \xF5\x90\x80\x80 ",
-- 16,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
--
-- /*
-- ------------------------------------------------------------------------------
-- Unfinished UTF-8 sequence between fragmented text frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: UTF-8 sequence between fragments, no fragmentation for the caller */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x8D\x00\x00\x00\x00" "This is my n"
-- "\xC3\x80\x83\x00\x00\x00\x00\xB6" "te",
-- 28,
-- "This is my n" "\xC3\xB6" "te",
-- 16,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 28);
-- /* Regular test: UTF-8 sequence between fragments, fragmentation for the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x8D\x00\x00\x00\x00" "This is my n"
-- "\xC3\x80\x83\x00\x00\x00\x00\xB6" "te",
-- 28,
-- "This is my n",
-- 12,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 19);
-- /* Regular test: UTF-8 sequence between fragments, fragmentation for the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x8D\x00\x00\x00\x00" "This is my n"
-- "\xC3\x80\x83\x00\x00\x00\x00\xB6" "te",
-- 28,
-- "\xC3\xB6" "te",
-- 4,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 28);
-- /* Edge test (success): UTF-8 sequence between fragments, but nothing before, fragmentation for the caller, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x81\x00\x00\x00\x00\xC3\x80\x81\x00\x00\x00\x00\xB6",
-- 14,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 7);
-- /* Edge test (success): UTF-8 sequence between fragments, but nothing before, fragmentation for the caller, 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x81\x00\x00\x00\x00\xC3\x80\x81\x00\x00\x00\x00\xB6",
-- 14,
-- "\xC3\xB6",
-- 2,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 14);
--
-- /*
-- ------------------------------------------------------------------------------
-- Decoding with broken stream
-- ------------------------------------------------------------------------------
-- */
-- /* Failure test: Invalid sequence */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\xFF\x81\x85\x00\x00\x00\x00" "Hello",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Failure test: Call after invalidated stream */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\xFF\x81\x85\x00\x00\x00\x00" "Hello",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_STREAM_BROKEN,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Failure test: Call after invalidated stream (but with different buffer) */
-- {
-- struct MHD_WebSocketStream *ws;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0))
-- {
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
-- ret = MHD_websocket_decode (ws,
-- "\xFF",
-- 1,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if (MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR != ret)
-- {
-- fprintf (stderr,
-- "Test failed in line %u: The return value should be -1, but is %d\n",
-- (unsigned int) __LINE__,
-- (int) ret);
-- ++failed;
-- }
-- else
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if (MHD_WEBSOCKET_STATUS_STREAM_BROKEN != ret)
-- {
-- fprintf (stderr,
-- "Test failed in line %u: The return value should be -2, but is %d\n",
-- (unsigned int) __LINE__,
-- (int) ret);
-- ++failed;
-- }
-- }
-- MHD_websocket_stream_free (ws);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Individual test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- frame after close frame
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x81\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 6);
-- /* Failure test: Text frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x81\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 6);
-- /* Failure test: Binary frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x82\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 6);
-- /* Failure test: Continue frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x80\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 6);
-- /* Regular test: Ping frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x89\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 17);
-- /* Regular test: Pong frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x8A\x85\x00\x00\x00\x00"
-- "Hello",
-- 17,
-- "Hello",
-- 5,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 17);
-- /* Regular test: Close frame after close frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x88\x80\x00\x00\x00\x00\x88\x80\x00\x00\x00\x00",
-- 12,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 12);
--
-- /*
-- ------------------------------------------------------------------------------
-- decoding byte-by-byte
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Text frame, 2 bytes per loop, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 2,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 2);
-- /* Regular test: Text frame, 2 bytes per loop, 11th call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 11,
-- 2,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 22);
-- /* Regular test: Text frame, 2 bytes per loop, 12th call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 12,
-- 2,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- "This is the test.",
-- 17,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 23);
-- /* Regular test: Text frame, 1 byte per loop, 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 1,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 1);
-- /* Regular test: Text frame, 1 byte per loop, 22nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 22,
-- 1,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_OK,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 22);
-- /* Regular test: Text frame, 1 byte per loop, 23rd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 23,
-- 1,
-- "\x81\x91\x01\x02\x04\x08" "Ujm{!kw(uja(ugw|/",
-- 23,
-- "This is the test.",
-- 17,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 23);
--
-- /*
-- ------------------------------------------------------------------------------
-- mix of fragmented data frames and control frames
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Fragmented text frame mixed with one ping frame (1st call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x89\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented text frame mixed with one ping frame (2nd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x89\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- "This is the test.",
-- 17,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 35);
-- /* Regular test: Fragmented text frame mixed with one close frame (1st call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x88\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 17);
-- /* Fail test: Fragmented text frame mixed with one ping frame (2nd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x88\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 17);
-- /* Regular test: Fragmented text frame mixed with one ping frame, the caller wants fragments (1st call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x89\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- "This ",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Fragmented text frame mixed with one ping frame, the caller wants fragments (2nd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x89\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 17);
-- /* Regular test: Fragmented text frame mixed with one ping frame, the caller wants fragments (3rd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x89\x80\x00\x00\x00\x00"
-- "\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 35,
-- "is the test.",
-- 12,
-- MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 35);
--
-- /*
-- ------------------------------------------------------------------------------
-- mix of fragmented data frames and data frames
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: Fragmented text frame mixed with one non-fragmented binary frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x82\x81\x00\x00\x00\x00"
-- "a\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 36,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 11);
-- /* Regular test: Fragmented text frame mixed with one non-fragmented binary frame; the caller wants fragments; 1st call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x82\x81\x00\x00\x00\x00"
-- "a\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 36,
-- "This ",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Fail test: Fragmented text frame mixed with one non-fragmented binary frame; the caller wants fragments; 2nd call */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x82\x81\x00\x00\x00\x00"
-- "a\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 36,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 11);
-- /* Fail test: Fragmented text frame mixed with one fragmented binary frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x02\x81\x00\x00\x00\x00"
-- "a\x80\x8C\x00\x00\x00\x00" "is the test.",
-- 36,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 11);
-- /* Fail test: Fragmented text frame, continue frame, non-fragmented binary frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x00\x8C\x00\x00\x00\x00"
-- "is the test.\x82\x81\x00\x00\x00\x00" "a",
-- 36,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 29);
-- /* Fail test: Fragmented text frame, continue frame, fragmented binary frame */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x01\x85\x00\x00\x00\x00"
-- "This \x00\x8C\x00\x00\x00\x00"
-- "is the test.\x02\x81\x00\x00\x00\x00" "a",
-- 36,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 29);
--
-- /*
-- ------------------------------------------------------------------------------
-- multiple data frames
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Text frame, binary frame, text frame (1st call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00"
-- "This \x82\x87\x00\x00\x00\x00"
-- "is the \x81\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "This ",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Text frame, binary frame, text frame (2nd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x81\x85\x00\x00\x00\x00"
-- "This \x82\x87\x00\x00\x00\x00"
-- "is the \x81\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "is the ",
-- 7,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 24);
-- /* Regular test: Text frame, binary frame, text frame (3rd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x81\x85\x00\x00\x00\x00"
-- "This \x82\x87\x00\x00\x00\x00"
-- "is the \x81\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "test.",
-- 5,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 35);
-- /*
-- ------------------------------------------------------------------------------
-- multiple control frames
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Ping frame, pong frame, close frame (1st call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- "\x89\x85\x00\x00\x00\x00"
-- "This \x8A\x87\x00\x00\x00\x00"
-- "is the \x88\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "This ",
-- 5,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 11);
-- /* Regular test: Ping frame, pong frame, close frame (2nd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 2,
-- 0,
-- "\x89\x85\x00\x00\x00\x00"
-- "This \x8A\x87\x00\x00\x00\x00"
-- "is the \x88\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "is the ",
-- 7,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- 24);
-- /* Regular test: Ping frame, pong frame, close frame (3rd call) */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 3,
-- 0,
-- "\x89\x85\x00\x00\x00\x00"
-- "This \x8A\x87\x00\x00\x00\x00"
-- "is the \x88\x85\x00\x00\x00\x00" "test.",
-- 35,
-- "test.",
-- 5,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- 35);
--
-- /*
-- ------------------------------------------------------------------------------
-- generated close frames for errors
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Close frame generated for protocol error */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS
-- |
-- MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR,
-- 0,
-- 1,
-- 0,
-- "\xFF",
-- 1,
-- "\x88\x02\x03\xEA",
-- 4,
-- MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 0);
-- /* Regular test: Close frame generated for UTF-8 sequence error */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS
-- |
-- MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR,
-- 0,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00T\xFFst.",
-- 11,
-- "\x88\x02\x03\xEF",
-- 4,
-- MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 7);
-- /* Regular test: Close frame generated for message size exceeded */
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS
-- |
-- MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR,
-- 3,
-- 1,
-- 0,
-- "\x81\x85\x00\x00\x00\x00T\xFFst.",
-- 11,
-- "\x88\x02\x03\xF1",
-- 4,
-- MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED,
-- MHD_WEBSOCKET_VALIDITY_INVALID,
-- 2);
--
-- /*
-- ------------------------------------------------------------------------------
-- terminating NUL character
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *ws;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0))
-- {
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
--
-- /* Regular test: text frame */
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_FRAME != ret) ||
-- (5 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("Hello", payload, 5 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: text frame fragment */
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_FRAME != ret) ||
-- (5 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("Hello", payload, 5 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: binary frame */
-- ret = MHD_websocket_decode (ws,
-- "\x82\x85\x00\x00\x00\x00" "Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_BINARY_FRAME != ret) ||
-- (5 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("Hello", payload, 5 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: binary frame fragment */
-- ret = MHD_websocket_decode (ws,
-- "\x02\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_BINARY_FRAME != ret) ||
-- (5 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("Hello", payload, 5 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- MHD_websocket_stream_free (ws);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Individual decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- {
-- struct MHD_WebSocketStream *ws;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS,
-- 0))
-- {
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
--
-- /* Regular test: text frame fragment (caller wants fragment, 1st call) */
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo",
-- 17,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT != ret) ||
-- (3 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("Hel", payload, 3 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: text frame fragment (caller wants fragment, 2nd call) */
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00"
-- "Hel\x80\x82\x00\x00\x00\x00" "lo"
-- + streambuf_read_len,
-- 17 - streambuf_read_len,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT != ret) ||
-- (2 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("lo", payload, 2 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: text frame fragment with broken UTF-8 sequence (caller wants fragment, 1st call) */
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00"
-- "He\xC3\x80\x82\x00\x00\x00\x00" "\xB6o",
-- 17,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT != ret) ||
-- (2 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("He", payload, 2 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- /* Regular test: text frame fragment with broken UTF-8 sequence (caller wants fragment, 2nd call) */
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00"
-- "He\xC3\x80\x82\x00\x00\x00\x00" "\xB6o"
-- + streambuf_read_len,
-- 17 - streambuf_read_len,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT != ret) ||
-- (3 != payload_len) ||
-- (NULL == payload) ||
-- (0 != memcmp ("\xC3\xB6o", payload, 3 + 1)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- payload = NULL;
-- }
--
-- MHD_websocket_stream_free (ws);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Individual decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
--
-- /*
-- ------------------------------------------------------------------------------
-- invalid parameters
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *ws;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0))
-- {
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
--
-- /* Failure test: `ws` is NULL */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (NULL,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Failure test: `buf` is NULL, while `buf_len` != 0 */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- NULL,
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Failure test: `streambuf_read_len` is NULL */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- NULL,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Failure test: `payload` is NULL */
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- NULL,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != payload_len) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Failure test: `payload_len` is NULL */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Regular test: `buf` is NULL and `buf_len` is 0 */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- NULL,
-- 0,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Regular test: `buf` is not NULL and `buf_len` is 0 */
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 0,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (0 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
--
-- MHD_websocket_stream_free (ws);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Parameter decode tests failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *ws;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
--
-- /* Failure test: No memory allocation at the start */
-- disable_alloc = 1;
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (1000 == streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Failure test: No memory allocation after fragmented frame */
-- disable_alloc = 0;
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x01\x83\x00\x00\x00\x00" "Hel",
-- 9,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (9 != streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (
-- ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- disable_alloc = 1;
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- streambuf_read_len = 1000;
-- ret = MHD_websocket_decode (ws,
-- "\x80\x82\x00\x00\x00\x00" "lo",
-- 8,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (NULL != payload) ||
-- (0 != payload_len) ||
-- (1000 == streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (
-- ws)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
-- /* Regular test: Success after memory allocation ok again */
-- /* (streambuf_read_len may not be overwritten for this test) */
-- disable_alloc = 0;
-- payload = (char *) (uintptr_t) 0xBAADF00D;
-- payload_len = 0x87654321;
-- size_t old_streambuf_read_len = streambuf_read_len;
-- ret = MHD_websocket_decode (ws,
-- "\x80\x82\x00\x00\x00\x00lo"
-- + old_streambuf_read_len,
-- 8 - old_streambuf_read_len,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_TEXT_FRAME != ret) ||
-- (NULL == payload) ||
-- (5 != payload_len) ||
-- (8 != streambuf_read_len + old_streambuf_read_len) ||
-- (MHD_WEBSOCKET_VALIDITY_VALID != MHD_websocket_stream_is_valid (
-- ws)) ||
-- (0 != memcmp ("Hello", payload, 5)))
-- {
-- fprintf (stderr,
-- "Decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == payload)
-- {
-- payload = NULL;
-- }
-- if (NULL != payload)
-- {
-- MHD_websocket_free (ws, payload);
-- }
--
-- MHD_websocket_stream_free (ws);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory decode tests failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- memory leak test, when freeing while decoding
-- ------------------------------------------------------------------------------
-- */
-- {
-- disable_alloc = 0;
-- struct MHD_WebSocketStream *ws;
-- size_t streambuf_read_len = 0;
-- char *payload = NULL;
-- size_t payload_len = 0;
-- int ret = 0;
--
-- /* Regular test: Free while decoding of data frame */
-- open_allocs = 0;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x81\x85\x00\x00\x00\x00Hel",
-- 9,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (9 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (0 != open_allocs)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u (memory leak detected)\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /* Regular test: Free while decoding of control frame */
-- open_allocs = 0;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x88\x85\x00\x00\x00\x00Hel",
-- 9,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (9 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (0 != open_allocs)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u (memory leak detected)\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /* Regular test: Free while decoding of fragmented data frame */
-- open_allocs = 0;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x01\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (11 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (0 != open_allocs)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u (memory leak detected)\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: Free while decoding of continued fragmented data frame */
-- open_allocs = 0;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x01\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (11 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_decode (ws,
-- "\x80\x85\x00\x00\x00\x00Hel",
-- 9,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (9 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (0 != open_allocs)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u (memory leak detected)\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: Free while decoding of control frame during fragmented data frame */
-- open_allocs = 0;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&ws,
-- MHD_WEBSOCKET_FLAG_SERVER
-- |
-- MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- ret = MHD_websocket_decode (ws,
-- "\x01\x85\x00\x00\x00\x00Hello",
-- 11,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (11 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_decode (ws,
-- "\x88\x85\x00\x00\x00\x00Hel",
-- 9,
-- &streambuf_read_len,
-- &payload,
-- &payload_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (0 != payload_len) ||
-- (NULL != payload) ||
-- (9 != streambuf_read_len) )
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- ret = MHD_websocket_stream_free (ws);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (0 != open_allocs)
-- {
-- fprintf (stderr,
-- "Memory decode test failed in line %u (memory leak detected)\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
-- else
-- {
-- fprintf (stderr,
-- "Memory test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- {
-- free (buf1);
-- buf1 = NULL;
-- }
-- if (NULL != buf2)
-- {
-- free (buf2);
-- buf2 = NULL;
-- }
-- return failed != 0 ? 0x04 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_encode_text()`
-- */
--int
--test_encodes_text ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *wss;
-- struct MHD_WebSocketStream *wsc;
-- int ret;
-- char *buf1 = NULL, *buf2 = NULL;
-- char *frame = NULL;
-- size_t frame_len = 0;
-- int utf8_step = 0;
--
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wsc,
-- MHD_WEBSOCKET_FLAG_CLIENT,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode text tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- return 0x08;
-- }
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init (&wss,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0))
-- {
-- fprintf (stderr,
-- "No encode text tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- return 0x08;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Encoding
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data without UTF-8, we are server */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data without UTF-8, we are client */
-- ret = MHD_websocket_encode_text (wsc,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (15 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data with UTF-8, we are server */
-- ret = MHD_websocket_encode_text (wss,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x0B" "bla" "\xC3\xA4" "blabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data with UTF-8, we are client */
-- ret = MHD_websocket_encode_text (wsc,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (17 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- MHD_WEBSOCKET_STATUS_TEXT_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Some data with NUL characters, we are server */
-- ret = MHD_websocket_encode_text (wss,
-- "bla" "\0\0\0" "bla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x09" "bla" "\0\0\0" "bla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: Some data with broken UTF-8, we are server */
-- ret = MHD_websocket_encode_text (wss,
-- "bla" "\xC3" "blabla",
-- 10,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Fragmentation
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data without UTF-8 */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x81\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: First fragment without UTF-8 */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_FIRST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x01\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Middle fragment without UTF-8 */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x00\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment without UTF-8 */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): First fragment with UTF-8 on the edge */
-- ret = MHD_websocket_encode_text (wss,
-- "blablabl\xC3",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_FIRST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1 != utf8_step) ||
-- (0 != memcmp (frame, "\x01\x09" "blablabl\xC3", 11)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Last fragment with UTF-8 on the edge */
-- ret = MHD_websocket_encode_text (wss,
-- "\xA4" "blablabla",
-- 10,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (12 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0A" "\xA4" "blablabla", 12)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: Last fragment with UTF-8 on the edge (here with wrong old utf8_step) */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_NORMAL;
-- ret = MHD_websocket_encode_text (wss,
-- "\xA4" "blablabla",
-- 10,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF2TAIL_1OF1 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1;
-- ret = MHD_websocket_encode_text (wss,
-- "\xA4" "blablabla",
-- 10,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (12 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0A" "\xA4" "blablabla", 12)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF3TAIL1_1OF2 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL1_1OF2;
-- ret = MHD_websocket_encode_text (wss,
-- "\xA0\x80" "blablabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0B" "\xA0\x80" "blablabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF3TAIL2_1OF2 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL2_1OF2;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80\x80" "blablabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0B" "\x80\x80" "blablabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF3TAIL_1OF2 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_1OF2;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80\x80" "blablabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0B" "\x80\x80" "blablabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF3TAIL_2OF2 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80" " blablabla",
-- 11,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0B" "\x80" " blablabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF4TAIL1_1OF3 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL1_1OF3;
-- ret = MHD_websocket_encode_text (wss,
-- "\x90\x80\x80" "blablabla",
-- 12,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (14 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0C" "\x90\x80\x80" "blablabla", 14)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF4TAIL2_1OF3 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL2_1OF3;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80\x80\x80" "blablabla",
-- 12,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (14 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0C" "\x80\x80\x80" "blablabla", 14)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF4TAIL_1OF3 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_1OF3;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80\x80\x80" "blablabla",
-- 12,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (14 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0C" "\x80\x80\x80" "blablabla", 14)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF4TAIL_2OF3 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80\x80" " blablabla",
-- 12,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (14 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0C" "\x80\x80" " blablabla", 14)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment with UTF-8 on the edge for UTF4TAIL_3OF3 */
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_3OF3;
-- ret = MHD_websocket_encode_text (wss,
-- "\x80" " blablabla",
-- 12,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (14 != frame_len) ||
-- (NULL == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x0C" "\x80" " blablabla", 14)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Length checks
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): Text frame without data */
-- ret = MHD_websocket_encode_text (wss,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Text frame with 1 byte of data */
-- ret = MHD_websocket_encode_text (wss,
-- "a",
-- 1,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (3 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x01" "a", 3)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Text frame with 125 bytes of data */
-- ret = MHD_websocket_encode_text (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (127 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x7D"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 127)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Text frame with 126 bytes of data */
-- ret = MHD_websocket_encode_text (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 126,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (130 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x7E\x00\x7E"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 130)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Text frame with 65535 bytes of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65535,
-- "\x81\x7E\xFF\xFF",
-- 4);
-- ret = MHD_websocket_encode_text (wss,
-- buf2,
-- 65535,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (65535 + 4 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 65535 + 4)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Text frame with 65536 bytes of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65536,
-- "\x81\x7F\x00\x00\x00\x00\x00\x01\x00\x00",
-- 10);
-- ret = MHD_websocket_encode_text (wss,
-- buf2,
-- 65536,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (65536 + 10 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 65536 + 10)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Text frame with 100 MB of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 104857600,
-- "\x81\x7F\x00\x00\x00\x00\x06\x40\x00\x00",
-- 10);
-- ret = MHD_websocket_encode_text (wss,
-- buf2,
-- 104857600,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (104857600 + 10 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 104857600 + 10)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- if (NULL != buf1)
-- {
-- free (buf1);
-- buf1 = NULL;
-- }
-- if (NULL != buf2)
-- {
-- free (buf2);
-- buf2 = NULL;
-- }
--#ifdef ENABLE_64BIT_TESTS
-- /* Fail test: frame_len is greater than 0x7FFFFFFFFFFFFFFF
-- (this is the maximum allowed payload size) */
-- frame_len = 0;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- (uint64_t) 0x8000000000000000,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--#endif
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `ws` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (NULL,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `payload_utf8` not passed, but `payload_utf8_len` != 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- NULL,
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `payload_utf8` passed, but `payload_utf8_len` == 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 0,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x81\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `frame` not passed */
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- NULL,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: `frame_len` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- NULL,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `utf8_step` passed for non-fragmentation
-- (is allowed and `utf8_step` will be filled then) */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = -99;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x81\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `utf8_step` passed for non-fragmentation with invalid UTF-8
-- (is allowed and `utf8_step` will be filled then) */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = -99;
-- ret = MHD_websocket_encode_text (wss,
-- "ab\xC3",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1 != utf8_step) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `utf8_step` not passed for fragmentation #1 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_FIRST,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `utf8_step` not passed for fragmentation #2 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `utf8_step` not passed for fragmentation #3 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `utf8_step` passed for fragmentation #1 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = -99;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_FIRST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x01\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `utf8_step` passed for fragmentation #2 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_NORMAL;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x00\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `utf8_step` passed for fragmentation #3 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = MHD_WEBSOCKET_UTF8STEP_NORMAL;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (MHD_WEBSOCKET_UTF8STEP_NORMAL != utf8_step) ||
-- (0 != memcmp (frame, "\x80\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `fragmentation` has an invalid value */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- utf8_step = -99;
-- ret = MHD_websocket_encode_text (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST + 1,
-- &frame,
-- &frame_len,
-- &utf8_step);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) ||
-- (-99 != utf8_step) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *wsx;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&wsx,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Fail test: allocation while no memory available */
-- disable_alloc = 1;
-- ret = MHD_websocket_encode_text (wsx,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
-- /* Regular test: allocation while memory is available again */
-- disable_alloc = 0;
-- ret = MHD_websocket_encode_text (wsx,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x81\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode text test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
--
-- MHD_websocket_stream_free (wsx);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Couldn't perform memory test for text encoding in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- free (buf1);
-- if (NULL != buf2)
-- free (buf2);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- if (NULL != wss)
-- MHD_websocket_stream_free (wss);
--
-- return failed != 0 ? 0x08 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_encode_binary()`
-- */
--int
--test_encodes_binary ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *wss;
-- struct MHD_WebSocketStream *wsc;
-- int ret;
-- char *buf1 = NULL, *buf2 = NULL;
-- char *frame = NULL;
-- size_t frame_len = 0;
--
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wsc,
-- MHD_WEBSOCKET_FLAG_CLIENT,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode binary tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- return 0x10;
-- }
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init (&wss,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0))
-- {
-- fprintf (stderr,
-- "No encode binary tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- return 0x10;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Encoding
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data, we are server */
-- ret = MHD_websocket_encode_binary (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data, we are client */
-- ret = MHD_websocket_encode_binary (wsc,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (15 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_STATUS_BINARY_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Some data with NUL characters, we are server */
-- ret = MHD_websocket_encode_binary (wss,
-- "bla" "\0\0\0" "bla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x09" "bla" "\0\0\0" "bla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data which looks like broken UTF-8, we are server */
-- ret = MHD_websocket_encode_binary (wss,
-- "bla" "\xC3" "blabla",
-- 10,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (12 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x0A" "bla" "\xC3" "blabla", 12)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Fragmentation
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data */
-- ret = MHD_websocket_encode_binary (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: First fragment */
-- ret = MHD_websocket_encode_binary (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_FIRST,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x02\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Middle fragment */
-- ret = MHD_websocket_encode_binary (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x00\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Last fragment */
-- ret = MHD_websocket_encode_binary (wss,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x80\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Length checks
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): Binary frame without data */
-- ret = MHD_websocket_encode_binary (wss,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Binary frame with 1 byte of data */
-- ret = MHD_websocket_encode_binary (wss,
-- "a",
-- 1,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (3 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x01" "a", 3)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Binary frame with 125 bytes of data */
-- ret = MHD_websocket_encode_binary (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (127 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x7D"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 127)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Binary frame with 126 bytes of data */
-- ret = MHD_websocket_encode_binary (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 126,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (130 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x7E\x00\x7E"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 130)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Binary frame with 65535 bytes of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65535,
-- "\x82\x7E\xFF\xFF",
-- 4);
-- ret = MHD_websocket_encode_binary (wss,
-- buf2,
-- 65535,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (65535 + 4 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 65535 + 4)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Binary frame with 65536 bytes of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 65536,
-- "\x82\x7F\x00\x00\x00\x00\x00\x01\x00\x00",
-- 10);
-- ret = MHD_websocket_encode_binary (wss,
-- buf2,
-- 65536,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (65536 + 10 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 65536 + 10)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Binary frame with 100 MB of data */
-- allocate_length_test_data (&buf1,
-- &buf2,
-- 104857600,
-- "\x82\x7F\x00\x00\x00\x00\x06\x40\x00\x00",
-- 10);
-- ret = MHD_websocket_encode_binary (wss,
-- buf2,
-- 104857600,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (104857600 + 10 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, buf1, 104857600 + 10)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- if (NULL != buf1)
-- {
-- free (buf1);
-- buf1 = NULL;
-- }
-- if (NULL != buf2)
-- {
-- free (buf2);
-- buf2 = NULL;
-- }
--#ifdef ENABLE_64BIT_TESTS
-- /* Fail test: `frame_len` is greater than 0x7FFFFFFFFFFFFFFF
-- (this is the maximum allowed payload size) */
-- frame_len = 0;
-- ret = MHD_websocket_encode_binary (wss,
-- "abc",
-- (uint64_t) 0x8000000000000000,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--#endif
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `ws` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_binary (NULL,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `payload` not passed, but `payload_len` != 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_binary (wss,
-- NULL,
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `payload` passed, but `payload_len` == 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_binary (wss,
-- "abc",
-- 0,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x82\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `frame` not passed */
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_binary (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- NULL,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: `frame_len` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- ret = MHD_websocket_encode_binary (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `fragmentation` has an invalid value */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_binary (wss,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_LAST + 1,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *wsx;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&wsx,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Fail test: allocation while no memory available */
-- disable_alloc = 1;
-- ret = MHD_websocket_encode_binary (wsx,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
-- /* Regular test: allocation while memory is available again */
-- disable_alloc = 0;
-- ret = MHD_websocket_encode_binary (wsx,
-- "abc",
-- 3,
-- MHD_WEBSOCKET_FRAGMENTATION_NONE,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x82\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode binary test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
--
-- MHD_websocket_stream_free (wsx);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Couldn't perform memory test for binary encoding in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- free (buf1);
-- if (NULL != buf2)
-- free (buf2);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- if (NULL != wss)
-- MHD_websocket_stream_free (wss);
--
-- return failed != 0 ? 0x10 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_encode_close()`
-- */
--int
--test_encodes_close ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *wss;
-- struct MHD_WebSocketStream *wsc;
-- int ret;
-- char *buf1 = NULL, *buf2 = NULL;
-- char *frame = NULL;
-- size_t frame_len = 0;
--
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wsc,
-- MHD_WEBSOCKET_FLAG_CLIENT,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode close tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- return 0x10;
-- }
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wss,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode close tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- return 0x10;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Encoding
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data, we are server */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x0B\x03\xE8" "blablabla", 13)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data, we are client */
-- ret = MHD_websocket_encode_close (wsc,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (17 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "\x03\xE8" "blablabla",
-- 11,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Close reason without text, we are server */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (4 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x02\x03\xE8", 4)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Close reason without text, we are client */
-- ret = MHD_websocket_encode_close (wsc,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (8 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "\x03\xE8",
-- 2,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Close without reason, we are server */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_NO_REASON,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Close without reason, we are client */
-- ret = MHD_websocket_encode_close (wsc,
-- MHD_WEBSOCKET_CLOSEREASON_NO_REASON,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (6 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Close with UTF-8 sequence in reason, we are client */
-- ret = MHD_websocket_encode_close (wsc,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (19 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "\x03\xE8" "bla" "\xC3\xA4" "blabla",
-- 13,
-- MHD_WEBSOCKET_STATUS_CLOSE_FRAME,
-- MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Close reason with NUL characters, we are server */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_GOING_AWAY,
-- "bla" "\0\0\0" "bla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (13 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x0B\x03\xE9" "bla" "\0\0\0" "bla", 13)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: Some data with broken UTF-8, we are server */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "bla" "\xC3" "blabla",
-- 10,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Length checks
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): Close frame without payload */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_NO_REASON,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Close frame only reason code */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (4 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x02\x03\xE8", 4)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Close frame with 1 bytes of reason text */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "a",
-- 1,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x03\x03\xE8" "a", 5)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Close frame with 123 bytes of reason text */
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456",
-- 123,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (127 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x7D\x03\xE8"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456",
-- 127)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (fail): Close frame with 124 bytes of reason text*/
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567",
-- 124,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `ws` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (NULL,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `payload` not passed, but `payload_len` != 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- NULL,
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `payload` passed, but `payload_len` == 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (4 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x88\x02\x03\xE8", 4)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `frame` not passed */
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 3,
-- NULL,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: `frame_len` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 3,
-- &frame,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: no reason code passed, but reason text */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- MHD_WEBSOCKET_CLOSEREASON_NO_REASON,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (fail): Invalid reason code */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- 1,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (fail): Invalid reason code */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- 999,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Custom reason code */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_close (wss,
-- 2000,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (7 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x88\x05\x07\xD0" "abc", 7)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *wsx;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&wsx,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Fail test: allocation while no memory available */
-- disable_alloc = 1;
-- ret = MHD_websocket_encode_close (wsx,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
-- /* Regular test: allocation while memory is available again */
-- disable_alloc = 0;
-- ret = MHD_websocket_encode_close (wsx,
-- MHD_WEBSOCKET_CLOSEREASON_REGULAR,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (7 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x88\x05\x03\xE8" "abc", 7)))
-- {
-- fprintf (stderr,
-- "Encode close test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
--
-- MHD_websocket_stream_free (wsx);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Couldn't perform memory test for close encoding in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- free (buf1);
-- if (NULL != buf2)
-- free (buf2);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- if (NULL != wss)
-- MHD_websocket_stream_free (wss);
--
-- return failed != 0 ? 0x20 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_encode_ping()`
-- */
--int
--test_encodes_ping ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *wss;
-- struct MHD_WebSocketStream *wsc;
-- int ret;
-- char *buf1 = NULL, *buf2 = NULL;
-- char *frame = NULL;
-- size_t frame_len = 0;
--
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wsc,
-- MHD_WEBSOCKET_FLAG_CLIENT,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode ping tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- return 0x10;
-- }
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init (&wss,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0))
-- {
-- fprintf (stderr,
-- "No encode ping tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- return 0x10;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Encoding
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data, we are server */
-- ret = MHD_websocket_encode_ping (wss,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data, we are client */
-- ret = MHD_websocket_encode_ping (wsc,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (15 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Ping without payload, we are server */
-- ret = MHD_websocket_encode_ping (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Ping without payload, we are client */
-- ret = MHD_websocket_encode_ping (wsc,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (6 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Ping with something like UTF-8 sequence in payload, we are client */
-- ret = MHD_websocket_encode_ping (wsc,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (17 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- MHD_WEBSOCKET_STATUS_PING_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Ping payload with NUL characters, we are server */
-- ret = MHD_websocket_encode_ping (wss,
-- "bla" "\0\0\0" "bla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x09" "bla" "\0\0\0" "bla", 11)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Ping payload with with something which looks like broken UTF-8, we are server */
-- ret = MHD_websocket_encode_ping (wss,
-- "bla" "\xC3" "blabla",
-- 10,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (12 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x0A" "bla" "\xC3" "blabla", 12)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Length checks
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): Ping frame without payload */
-- ret = MHD_websocket_encode_ping (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Ping frame with one byte of payload */
-- ret = MHD_websocket_encode_ping (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Ping frame with 125 bytes of payload */
-- ret = MHD_websocket_encode_ping (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (127 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x7D"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 127)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (fail): Ping frame with 126 bytes of payload */
-- ret = MHD_websocket_encode_ping (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 126,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `ws` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_ping (NULL,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `payload` not passed, but `payload_len` != 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_ping (wss,
-- NULL,
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `payload` passed, but `payload_len` == 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_ping (wss,
-- "abc",
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x89\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `frame` not passed */
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_ping (wss,
-- "abc",
-- 3,
-- NULL,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: `frame_len` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- ret = MHD_websocket_encode_ping (wss,
-- "abc",
-- 3,
-- &frame,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *wsx;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&wsx,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Fail test: allocation while no memory available */
-- disable_alloc = 1;
-- ret = MHD_websocket_encode_ping (wsx,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
-- /* Regular test: allocation while memory is available again */
-- disable_alloc = 0;
-- ret = MHD_websocket_encode_ping (wsx,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x89\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode ping test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
--
-- MHD_websocket_stream_free (wsx);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Couldn't perform memory test for ping encoding in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- free (buf1);
-- if (NULL != buf2)
-- free (buf2);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- if (NULL != wss)
-- MHD_websocket_stream_free (wss);
--
-- return failed != 0 ? 0x40 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_encode_pong()`
-- */
--int
--test_encodes_pong ()
--{
-- int failed = 0;
-- struct MHD_WebSocketStream *wss;
-- struct MHD_WebSocketStream *wsc;
-- int ret;
-- char *buf1 = NULL, *buf2 = NULL;
-- char *frame = NULL;
-- size_t frame_len = 0;
--
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init2 (&wsc,
-- MHD_WEBSOCKET_FLAG_CLIENT,
-- 0,
-- malloc,
-- realloc,
-- free,
-- NULL,
-- test_rng))
-- {
-- fprintf (stderr,
-- "No encode pong tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- return 0x10;
-- }
-- if (MHD_WEBSOCKET_STATUS_OK != MHD_websocket_stream_init (&wss,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0))
-- {
-- fprintf (stderr,
-- "No encode pong tests possible due to failed stream init in line %u\n",
-- (unsigned int) __LINE__);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- return 0x10;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Encoding
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Some data, we are server */
-- ret = MHD_websocket_encode_pong (wss,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x09" "blablabla", 11)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Some data, we are client */
-- ret = MHD_websocket_encode_pong (wsc,
-- "blablabla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (15 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "blablabla",
-- 9,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Pong without payload, we are server */
-- ret = MHD_websocket_encode_pong (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Pong without payload, we are client */
-- ret = MHD_websocket_encode_pong (wsc,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (6 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- NULL,
-- 0,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Regular test: Pong with something like UTF-8 sequence in payload, we are client */
-- ret = MHD_websocket_encode_pong (wsc,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (17 != frame_len) ||
-- (NULL == frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- else
-- {
-- failed += test_decode_single (__LINE__,
-- MHD_WEBSOCKET_FLAG_SERVER
-- | MHD_WEBSOCKET_FLAG_NO_FRAGMENTS,
-- 0,
-- 1,
-- 0,
-- frame,
-- frame_len,
-- "bla" "\xC3\xA4" "blabla",
-- 11,
-- MHD_WEBSOCKET_STATUS_PONG_FRAME,
-- MHD_WEBSOCKET_VALIDITY_VALID,
-- frame_len);
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsc, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Pong payload with NUL characters, we are server */
-- ret = MHD_websocket_encode_pong (wss,
-- "bla" "\0\0\0" "bla",
-- 9,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (11 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x09" "bla" "\0\0\0" "bla", 11)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: Pong payload with with something which looks like broken UTF-8, we are server */
-- ret = MHD_websocket_encode_pong (wss,
-- "bla" "\xC3" "blabla",
-- 10,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (12 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x0A" "bla" "\xC3" "blabla", 12)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Length checks
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): Pong frame without payload */
-- ret = MHD_websocket_encode_pong (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Pong frame with one byte of payload */
-- ret = MHD_websocket_encode_pong (wss,
-- NULL,
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (success): Pong frame with 125 bytes of payload */
-- ret = MHD_websocket_encode_pong (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 125,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (127 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x7D"
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678",
-- 127)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Edge test (fail): Pong frame with 126 bytes of payload */
-- ret = MHD_websocket_encode_pong (wss,
-- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
-- 126,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `ws` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_pong (NULL,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `payload` not passed, but `payload_len` != 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_pong (wss,
-- NULL,
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Regular test: `payload` passed, but `payload_len` == 0 */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_pong (wss,
-- "abc",
-- 0,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (2 != frame_len) ||
-- (NULL == frame) ||
-- (((char *) (uintptr_t) 0xBAADF00D) == frame) ||
-- (0 != memcmp (frame, "\x8A\x00", 2)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
-- /* Fail test: `frame` not passed */
-- frame_len = 0x87654321;
-- ret = MHD_websocket_encode_pong (wss,
-- "abc",
-- 3,
-- NULL,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (0 != frame_len) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: `frame_len` not passed */
-- frame = (char *) (uintptr_t) 0xBAADF00D;
-- ret = MHD_websocket_encode_pong (wss,
-- "abc",
-- 3,
-- &frame,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (((char *) (uintptr_t) 0xBAADF00D) == frame)
-- {
-- frame = NULL;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wss, frame);
-- frame = NULL;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- validity after temporary out-of-memory
-- ------------------------------------------------------------------------------
-- */
-- {
-- struct MHD_WebSocketStream *wsx;
-- if (MHD_WEBSOCKET_STATUS_OK == MHD_websocket_stream_init2 (&wsx,
-- MHD_WEBSOCKET_FLAG_SERVER,
-- 0,
-- test_malloc,
-- test_realloc,
-- test_free,
-- NULL,
-- NULL))
-- {
-- /* Fail test: allocation while no memory available */
-- disable_alloc = 1;
-- ret = MHD_websocket_encode_pong (wsx,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_MEMORY_ERROR != ret) ||
-- (0 != frame_len) ||
-- (NULL != frame) )
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
-- /* Regular test: allocation while memory is available again */
-- disable_alloc = 0;
-- ret = MHD_websocket_encode_pong (wsx,
-- "abc",
-- 3,
-- &frame,
-- &frame_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (5 != frame_len) ||
-- (NULL == frame) ||
-- (0 != memcmp (frame, "\x8A\x03" "abc", 5)))
-- {
-- fprintf (stderr,
-- "Encode pong test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- if (NULL != frame)
-- {
-- MHD_websocket_free (wsx, frame);
-- frame = NULL;
-- }
--
-- MHD_websocket_stream_free (wsx);
-- }
-- else
-- {
-- fprintf (stderr,
-- "Couldn't perform memory test for pong encoding in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- }
--
-- if (NULL != buf1)
-- free (buf1);
-- if (NULL != buf2)
-- free (buf2);
-- if (NULL != wsc)
-- MHD_websocket_stream_free (wsc);
-- if (NULL != wss)
-- MHD_websocket_stream_free (wss);
--
-- return failed != 0 ? 0x80 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_split_close_reason()`
-- */
--int
--test_split_close_reason ()
--{
-- int failed = 0;
-- const char *payload;
-- unsigned short reason_code;
-- const char *reason_utf8;
-- size_t reason_utf8_len;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- Normal splits
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Reason code + Reason text */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = "\x03\xE8" "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 5,
-- &reason_code,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_REGULAR != reason_code) ||
-- (3 != reason_utf8_len) ||
-- (payload + 2 != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: Reason code */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = "\x03\xE8";
-- ret = MHD_websocket_split_close_reason (payload,
-- 2,
-- &reason_code,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_REGULAR != reason_code) ||
-- (0 != reason_utf8_len) ||
-- (NULL != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: No payload */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = NULL;
-- ret = MHD_websocket_split_close_reason (payload,
-- 0,
-- &reason_code,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_NO_REASON != reason_code) ||
-- (0 != reason_utf8_len) ||
-- (NULL != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: `payload` is not NULL given, but `payload_len` == 0 */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 0,
-- &reason_code,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_NO_REASON != reason_code) ||
-- (0 != reason_utf8_len) ||
-- (NULL != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Wrong parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: `payload` not passed, but `payload_len` != 0 */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = NULL;
-- ret = MHD_websocket_split_close_reason (payload,
-- 3,
-- &reason_code,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_PARAMETER_ERROR != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_NO_REASON != reason_code) ||
-- (0 != reason_utf8_len) ||
-- (NULL != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: `reason_code` not passed */
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- reason_utf8_len = 12345;
-- payload = "\x03\xE8" "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 5,
-- NULL,
-- &reason_utf8,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (3 != reason_utf8_len) ||
-- (payload + 2 != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: `reason_utf8` not passed */
-- reason_code = 9999;
-- reason_utf8_len = 12345;
-- payload = "\x03\xE8" "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 5,
-- &reason_code,
-- NULL,
-- &reason_utf8_len);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_REGULAR != reason_code) ||
-- (3 != reason_utf8_len) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: `reason_utf8_len` not passed */
-- reason_code = 9999;
-- reason_utf8 = (const char *) (intptr_t) 0xBAADF00D;
-- payload = "\x03\xE8" "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 5,
-- &reason_code,
-- &reason_utf8,
-- NULL);
-- if ((MHD_WEBSOCKET_STATUS_OK != ret) ||
-- (MHD_WEBSOCKET_CLOSEREASON_REGULAR != reason_code) ||
-- (payload + 2 != reason_utf8) )
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: `reason_code`, `reason_utf8` and `reason_utf8_len` not passed */
-- /* (this is not prohibited, although it doesn't really make sense) */
-- payload = "\x03\xE8" "abc";
-- ret = MHD_websocket_split_close_reason (payload,
-- 5,
-- NULL,
-- NULL,
-- NULL);
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "split close reason test failed in line %u\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x100 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_check_http_version()`
-- */
--int
--test_check_http_version ()
--{
-- int failed = 0;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- Version check with valid HTTP version syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: HTTP/1.1 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.1");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: HTTP/1.2 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.2");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: HTTP/1.10 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.10");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: HTTP/2.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/2.0");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: HTTP/3.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/3.0");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: HTTP/1.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.0");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: HTTP/0.9 */
-- ret = MHD_websocket_check_http_version ("HTTP/0.9");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Version check edge cases
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): HTTP/123.45 */
-- ret = MHD_websocket_check_http_version ("HTTP/123.45");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/1.45 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.45");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/01.1 */
-- ret = MHD_websocket_check_http_version ("HTTP/01.1");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/0001.1 */
-- ret = MHD_websocket_check_http_version ("HTTP/0001.1");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/1.01 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.01");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/1.0001 */
-- ret = MHD_websocket_check_http_version ("HTTP/1.0001");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/0001.0001 */
-- ret = MHD_websocket_check_http_version ("HTTP/0001.0001");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/2.000 */
-- ret = MHD_websocket_check_http_version ("HTTP/2.000");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): HTTP/0.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/0.0");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): HTTP/00.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/00.0");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): HTTP/00.0 */
-- ret = MHD_websocket_check_http_version ("HTTP/0.00");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Invalid version syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: (empty string) */
-- ret = MHD_websocket_check_http_version ("");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: http/1.1 */
-- ret = MHD_websocket_check_http_version ("http/1.1");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: "HTTP / 1.1" */
-- ret = MHD_websocket_check_http_version ("HTTP / 1.1");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: NULL as version */
-- ret = MHD_websocket_check_http_version (NULL);
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_http_version test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x200 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_check_connection_header()`
-- */
--int
--test_check_connection_header ()
--{
-- int failed = 0;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- Check with valid Connection header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: Upgrade */
-- ret = MHD_websocket_check_connection_header ("Upgrade");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Regular test: keep-alive, Upgrade */
-- ret = MHD_websocket_check_connection_header ("keep-alive, Upgrade");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: keep-alive */
-- ret = MHD_websocket_check_connection_header ("keep-alive");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: close */
-- ret = MHD_websocket_check_connection_header ("close");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Connection check edge cases
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): keep-alive,Upgrade */
-- ret = MHD_websocket_check_connection_header ("keep-alive,Upgrade");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Upgrade, keep-alive */
-- ret = MHD_websocket_check_connection_header ("Upgrade, keep-alive");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Upgrade,keep-alive */
-- ret = MHD_websocket_check_connection_header ("Upgrade,keep-alive");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Transfer-Encoding,Upgrade,keep-alive */
-- ret = MHD_websocket_check_connection_header (
-- "Transfer-Encoding,Upgrade,keep-alive");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Transfer-Encoding , Upgrade , keep-alive */
-- ret = MHD_websocket_check_connection_header (
-- "Transfer-Encoding , Upgrade , keep-alive");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): upgrade */
-- ret = MHD_websocket_check_connection_header ("upgrade");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): UPGRADE */
-- ret = MHD_websocket_check_connection_header ("UPGRADE");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): All allowed token characters, then upgrade token */
-- ret = MHD_websocket_check_connection_header (
-- "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,Upgrade");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Different, allowed whitespaces */
-- ret = MHD_websocket_check_connection_header (" \tUpgrade \t");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_connection_header ("\rUpgrade");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_connection_header ("\nUpgrade");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_connection_header ("\vUpgrade");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_connection_header ("\fUpgrade");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Invalid header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: (empty string) */
-- ret = MHD_websocket_check_connection_header ("");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: (Disallowed) multiple word token with the term "Upgrade" in it */
-- ret = MHD_websocket_check_connection_header ("Upgrade or Downgrade");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: Invalid characters */
-- ret = MHD_websocket_check_connection_header ("\"Upgrade\"");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: NULL as connection */
-- ret = MHD_websocket_check_connection_header (NULL);
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_connection_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x400 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_check_upgrade_header()`
-- */
--int
--test_check_upgrade_header ()
--{
-- int failed = 0;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- Check with valid Upgrade header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: websocket */
-- ret = MHD_websocket_check_upgrade_header ("websocket");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: HTTP/2.0 */
-- ret = MHD_websocket_check_upgrade_header ("HTTP/2.0");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Upgrade check edge cases
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (success): websocket,HTTP/2.0 */
-- ret = MHD_websocket_check_upgrade_header ("websocket,HTTP/2.0");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): websocket ,HTTP/2.0 */
-- ret = MHD_websocket_check_upgrade_header (" websocket ,HTTP/2.0");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): HTTP/2.0, websocket */
-- ret = MHD_websocket_check_upgrade_header ("HTTP/2.0, websocket ");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): websocket/13 */
-- ret = MHD_websocket_check_upgrade_header ("websocket/13");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): WeBsOcKeT */
-- ret = MHD_websocket_check_upgrade_header ("WeBsOcKeT");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): WEBSOCKET */
-- ret = MHD_websocket_check_upgrade_header ("WEBSOCKET");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): All allowed token characters plus /, then websocket keyword */
-- ret = MHD_websocket_check_upgrade_header (
-- "!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/,websocket");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (success): Different, allowed whitespaces */
-- ret = MHD_websocket_check_upgrade_header (" \twebsocket \t");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_upgrade_header ("\rwebsocket");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_upgrade_header ("\nwebsocket");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_upgrade_header ("\vwebsocket");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): Different, disallowed whitespaces */
-- ret = MHD_websocket_check_upgrade_header ("\fwebsocket");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Invalid header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: (empty string) */
-- ret = MHD_websocket_check_upgrade_header ("");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: (Disallowed) multiple word token with the term "websocket" in it */
-- ret = MHD_websocket_check_upgrade_header ("websocket or something");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: Invalid characters */
-- ret = MHD_websocket_check_upgrade_header ("\"websocket\"");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: NULL as upgrade */
-- ret = MHD_websocket_check_upgrade_header (NULL);
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_upgrade_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x800 : 0x00;
--}
--
--
--/**
-- * Test procedure for `MHD_websocket_check_version_header()`
-- */
--int
--test_check_version_header ()
--{
-- int failed = 0;
-- int ret;
--
-- /*
-- ------------------------------------------------------------------------------
-- Check with valid Upgrade header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Regular test: 13 */
-- ret = MHD_websocket_check_version_header ("13");
-- if (MHD_WEBSOCKET_STATUS_OK != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Version check edge cases
-- ------------------------------------------------------------------------------
-- */
-- /* Edge test (fail): 14 */
-- ret = MHD_websocket_check_version_header ("14");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): 12 */
-- ret = MHD_websocket_check_version_header ("12");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): 0 */
-- ret = MHD_websocket_check_version_header ("1");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): 1 */
-- ret = MHD_websocket_check_version_header ("1");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): 130 */
-- ret = MHD_websocket_check_version_header ("130");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Edge test (fail): " 13" */
-- ret = MHD_websocket_check_version_header (" 13");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Invalid header syntax
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: (empty string) */
-- ret = MHD_websocket_check_version_header ("");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
-- /* Fail test: Invalid characters */
-- ret = MHD_websocket_check_version_header ("abc");
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- /*
-- ------------------------------------------------------------------------------
-- Missing parameters
-- ------------------------------------------------------------------------------
-- */
-- /* Fail test: NULL as version */
-- ret = MHD_websocket_check_version_header (NULL);
-- if (MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER != ret)
-- {
-- fprintf (stderr,
-- "check_version_header test failed in line %u.\n",
-- (unsigned int) __LINE__);
-- ++failed;
-- }
--
-- return failed != 0 ? 0x1000 : 0x00;
--}
--
--
--int
--main (int argc, char *const *argv)
--{
-- unsigned int errorCount = 0;
-- (void) argc; (void) argv; /* Unused. Silent compiler warning. */
--
-- /* seed random number generator */
-- srand ((unsigned long) time (NULL));
--
-- /* perform tests */
-- errorCount += test_inits ();
-- errorCount += test_accept ();
-- errorCount += test_decodes ();
-- errorCount += test_encodes_text ();
-- errorCount += test_encodes_binary ();
-- errorCount += test_encodes_close ();
-- errorCount += test_encodes_ping ();
-- errorCount += test_encodes_pong ();
-- errorCount += test_split_close_reason ();
-- errorCount += test_check_http_version ();
-- errorCount += test_check_connection_header ();
-- errorCount += test_check_upgrade_header ();
-- errorCount += test_check_version_header ();
--
-- /* output result */
-- if (errorCount != 0)
-- fprintf (stderr, "Error (code: %u)\n", errorCount);
--
-- return errorCount != 0; /* 0 == pass */
--}
---
-2.34.1
-
diff --git a/meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.2.bb b/meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.5.bb
similarity index 78%
rename from meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.2.bb
rename to meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.5.bb
index fdca510d0b..cca3496a19 100644
--- a/meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.2.bb
+++ b/meta/recipes-support/libmicrohttpd/libmicrohttpd_1.0.5.bb
@@ -6,9 +6,8 @@ SECTION = "net"
DEPENDS = "file"
-SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz \
- file://0001-Remove-broken-experimental-code.patch"
-SRC_URI[sha256sum] = "df324fcd0834175dab07483133902d9774a605bfa298025f69883288fd20a8c7"
+SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz"
+SRC_URI[sha256sum] = "b46d00f58efa6f497b97d2e782c4ee66301d412ddd855dd3068518b3a2cd3ea2"
inherit autotools lib_package pkgconfig gettext
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 18/49] lzip: upgrade 1.25 -> 1.26
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (15 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 17/49] libmicrohttpd: upgrade 1.0.2 -> 1.0.5 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 19/49] mesa: upgrade 26.0.3 -> 26.0.5 Wang Mingyu
` (30 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
===========
- '-dvv' and '-tvv' now print (de)compressed sizes instead of compression
ratio. (Sizes are more informative than compression ratio).
- Large numbers in option arguments are now accepted with underscore
separators (-s 123_456_789).
- Large numbers are now printed with underscore separators (123_456_789).
- '-h' now prints a short help screen containing only the command-line
options. For full help, use '--help'.
- '--list' now can safely skip any trailing data added to a lzip file by the
option '--append' of lziprecover.
- '--list' now prints '+t' after the number of members to indicate the
presence of trailing data, and prints the size of the trailing data below
the size of the last member.
- '-lvv' now prints a blank line between the list of members of each
multimember file and the next file.
- Several improvements suggested by John Gilmore have been made to the manual.
- 'EXIT STATUS' now has its own section in the man page.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-extended/lzip/{lzip_1.25.bb => lzip_1.26.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-extended/lzip/{lzip_1.25.bb => lzip_1.26.bb} (93%)
diff --git a/meta/recipes-extended/lzip/lzip_1.25.bb b/meta/recipes-extended/lzip/lzip_1.26.bb
similarity index 93%
rename from meta/recipes-extended/lzip/lzip_1.25.bb
rename to meta/recipes-extended/lzip/lzip_1.26.bb
index 590e35cb75..c087d2ee2e 100644
--- a/meta/recipes-extended/lzip/lzip_1.25.bb
+++ b/meta/recipes-extended/lzip/lzip_1.26.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=cca7f74ec83b7a9ce7ccd195aad471bd \
"
SRC_URI = "${SAVANNAH_GNU_MIRROR}/lzip/lzip-${PV}.tar.gz"
-SRC_URI[sha256sum] = "09418a6d8fb83f5113f5bd856e09703df5d37bae0308c668d0f346e3d3f0a56f"
+SRC_URI[sha256sum] = "641cf30961525cbe3b340cc883436c8854e9f5032f459f444de4782b621e6572"
B = "${WORKDIR}/build"
do_configure[cleandirs] = "${B}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 19/49] mesa: upgrade 26.0.3 -> 26.0.5
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (16 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 18/49] lzip: upgrade 1.25 -> 1.26 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 20/49] meson: upgrade 1.10.2 -> 1.11.0 Wang Mingyu
` (29 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-graphics/mesa/mesa.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index b3ad9d8a54..01f7e3bcea 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -20,8 +20,8 @@ SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
file://0001-gallivm-Fix-armhf-build-against-LLVM-22.patch \
"
-SRC_URI[sha256sum] = "ddb7443d328e89aa45b4b6b80f077bf937f099daeca8ba48cabe32aab769e134"
-PV = "26.0.3"
+SRC_URI[sha256sum] = "d229c9937d9a25ca0a8958c59f425174563d300ec42acbea2dbe84a055023368"
+PV = "26.0.5"
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 20/49] meson: upgrade 1.10.2 -> 1.11.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (17 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 19/49] mesa: upgrade 26.0.3 -> 26.0.5 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 21/49] pango: upgrade 1.57.0 -> 1.57.1 Wang Mingyu
` (28 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../recipes-devtools/meson/{meson_1.10.2.bb => meson_1.11.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/meson/{meson_1.10.2.bb => meson_1.11.0.bb} (98%)
diff --git a/meta/recipes-devtools/meson/meson_1.10.2.bb b/meta/recipes-devtools/meson/meson_1.11.0.bb
similarity index 98%
rename from meta/recipes-devtools/meson/meson_1.10.2.bb
rename to meta/recipes-devtools/meson/meson_1.11.0.bb
index 9832437531..d06ede78a0 100644
--- a/meta/recipes-devtools/meson/meson_1.10.2.bb
+++ b/meta/recipes-devtools/meson/meson_1.11.0.bb
@@ -14,7 +14,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/meson-${PV}.tar.gz \
file://0001-Make-CPU-family-warnings-fatal.patch \
file://0002-Support-building-allarch-recipes-again.patch \
"
-SRC_URI[sha256sum] = "7890287d911dd4ee1ebd0efb61ed0321bfcd87c725df923a837cf90c6508f96b"
+SRC_URI[sha256sum] = "dffdd0915ceb028541fe3bed77d63ba35e78514591c043736b450d62634eeb31"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)$"
inherit python_setuptools_build_meta github-releases
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 21/49] pango: upgrade 1.57.0 -> 1.57.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (18 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 20/49] meson: upgrade 1.10.2 -> 1.11.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 22/49] pciutils: upgrade 3.14.0 -> 3.15.0 Wang Mingyu
` (27 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Bugs fixed:
- #867 Bad font substitution causes application crashes
- #869 MacOS: subprojects/cairo/meson.build:1:0: ERROR: Value "gnu11,c11" (of
type "string") (sid)
- #870 MacOS: subprojects/pango/utils/viewer-cocoa.m:23:10: fatal error:
'cairo/cairo.h' file not found (sid)
- #871 gtk4-widget-factory crashes with pango error on macOS when an emoji is
entered into a text field
- #876 Inconsistency between documentation and code in
pango_context_set_font_description
- #882 The hex box characters generated in PDF can not be copied
- #885 warning: assignment discards 'const' qualifier from pointer target type
[-Wdiscarded-qualifiers]
- !884 Revert "meson: Rework introspection handling"
- !890 Update the code to support Unicode 17.0.0
- !892 Include fcfreetype.h where needed
- !893 meson: Update freetype2 wrap to fix ci warnings
- !894 Respect explicit language attribute when itemizing
- !895 Fix some subproject woes
- !896 meson: Add support for cross-compiling using Apple subsystems
- !897 (break.c) pass sentences to handle_sentences
- !898 add support for g_autoptr(PangoScriptIter)
- !900 fontmap: Mark get_family as nullable
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../recipes-graphics/pango/{pango_1.57.0.bb => pango_1.57.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-graphics/pango/{pango_1.57.0.bb => pango_1.57.1.bb} (94%)
diff --git a/meta/recipes-graphics/pango/pango_1.57.0.bb b/meta/recipes-graphics/pango/pango_1.57.1.bb
similarity index 94%
rename from meta/recipes-graphics/pango/pango_1.57.0.bb
rename to meta/recipes-graphics/pango/pango_1.57.1.bb
index 5dc8a67dfe..a9129dad4c 100644
--- a/meta/recipes-graphics/pango/pango_1.57.0.bb
+++ b/meta/recipes-graphics/pango/pango_1.57.1.bb
@@ -18,7 +18,7 @@ UPSTREAM_CHECK_REGEX = "pango-(?P<pver>\d+\.(?!9\d+)\d+\.\d+)"
GIR_MESON_ENABLE_FLAG = "enabled"
GIR_MESON_DISABLE_FLAG = "disabled"
-SRC_URI[archive.sha256sum] = "890640c841dae77d3ae3d8fe8953784b930fa241b17423e6120c7bfdf8b891e7"
+SRC_URI[archive.sha256sum] = "e65d6d117080dc3aeeb7d8b4b3b518f7383aa2e6cfce23117c623cd624764c2f"
DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
DEPENDS += "${@' python3-docutils-native' if d.getVar('GIDOCGEN_ENABLED') == 'True' else ''}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 22/49] pciutils: upgrade 3.14.0 -> 3.15.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (19 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 21/49] pango: upgrade 1.57.0 -> 1.57.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 23/49] python3-build: upgrade 1.4.0 -> 1.4.3 Wang Mingyu
` (26 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
==========
* New capabilities are decoded: MMIO Register Block Locator,
Flit Error Injection, Flit Logging.
* Decoding of PCIe capabilities updated to Gen7.
* Both lspci and setpci warn when the "-s" or "-d" option
is given multiple times.
* Improved display of interrupts in "lspci -vv". Routing of
interrupt pins is shown only if the pins are not disabled.
Routing of MSI(X) interrupts is shown when available
(which is currently supported by the sysfs back-end only).
* Minor improvements to Windows back-ends.
* The dump back-end can read the dump from stdin when given "-"
as a file name.
* FreeBSD supports 64-bit addresses.
* Added README.DJGPP.
* Updated pci.ids.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../pciutils/{pciutils_3.14.0.bb => pciutils_3.15.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-bsp/pciutils/{pciutils_3.14.0.bb => pciutils_3.15.0.bb} (95%)
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.14.0.bb b/meta/recipes-bsp/pciutils/pciutils_3.15.0.bb
similarity index 95%
rename from meta/recipes-bsp/pciutils/pciutils_3.14.0.bb
rename to meta/recipes-bsp/pciutils/pciutils_3.15.0.bb
index a267ea34b7..ee3dde9ae4 100644
--- a/meta/recipes-bsp/pciutils/pciutils_3.14.0.bb
+++ b/meta/recipes-bsp/pciutils/pciutils_3.15.0.bb
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
DEPENDS = "make-native"
SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz"
-SRC_URI[sha256sum] = "e7713409882813991d2269d125e40dad1f54a019a52b78b3962941c1d4a6f86f"
+SRC_URI[sha256sum] = "c02940f430841ecf158d5d9a50007afc4d5353c8678a2455003ca0b2c4e9f5ff"
inherit multilib_header pkgconfig update-alternatives
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 23/49] python3-build: upgrade 1.4.0 -> 1.4.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (20 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 22/49] pciutils: upgrade 3.14.0 -> 3.15.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3 Wang Mingyu
` (25 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-build_1.4.0.bb => python3-build_1.4.3.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-build_1.4.0.bb => python3-build_1.4.3.bb} (86%)
diff --git a/meta/recipes-devtools/python/python3-build_1.4.0.bb b/meta/recipes-devtools/python/python3-build_1.4.3.bb
similarity index 86%
rename from meta/recipes-devtools/python/python3-build_1.4.0.bb
rename to meta/recipes-devtools/python/python3-build_1.4.3.bb
index 910f08374b..1e7794fe3f 100644
--- a/meta/recipes-devtools/python/python3-build_1.4.0.bb
+++ b/meta/recipes-devtools/python/python3-build_1.4.3.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/pypa/build"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=310439af287b0fb4780b2ad6907c256c"
-SRC_URI[sha256sum] = "f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936"
+SRC_URI[sha256sum] = "5aa4231ae0e807efdf1fd0623e07366eca2ab215921345a2e38acdd5d0fa0a74"
inherit pypi python_flit_core
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (21 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 23/49] python3-build: upgrade 1.4.0 -> 1.4.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-22 10:20 ` Alexander Kanavin
[not found] ` <18A8A69CD5F34DFB.1892986@lists.openembedded.org>
2026-04-21 9:55 ` [OE-core] [PATCH 25/49] python3-dtschema: upgrade 2025.12 -> 2026.4 Wang Mingyu
` (24 subsequent siblings)
47 siblings, 2 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
License-Update: Change 7.x license to 0BSD
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...hon3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
rename meta/recipes-devtools/python/{python3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} (68%)
diff --git a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
similarity index 68%
rename from meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
rename to meta/recipes-devtools/python/python3-chardet_7.4.3.bb
index 14c3247b35..ad36834169 100644
--- a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
+++ b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
@@ -1,9 +1,9 @@
SUMMARY = "Universal encoding detector for Python 2 and 3"
HOMEPAGE = "https://pypi.org/project/chardet/"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4bf661c1e3793e55c8d1051bc5e0ae21"
+LICENSE = "0BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bd0753b9dc12e5e3da3047778fcf1dca"
-SRC_URI[sha256sum] = "6b78048c3c97c7b2ed1fbad7a18f76f5a6547f7d34dbab536cc13887c9a92fa4"
+SRC_URI[sha256sum] = "cc1d4eb92a4ec1c2df3b490836ffa46922e599d34ce0bb75cf41fd2bf6303d56"
inherit pypi python_hatchling
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 25/49] python3-dtschema: upgrade 2025.12 -> 2026.4
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (22 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 26/49] python3-editables: upgrade 0.5 -> 0.6 Wang Mingyu
` (23 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
===========
- New PCI bridge properties
- New linux,dmcryptkeys chosen property
- Relax simple-bus schema to have unit-addresses with chip-select number
and offset
- Avoid backtrace on missing $ref. Instead the missing ref will cause a
validation warning.
- Print the property name on decode failures
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{python3-dtschema_2025.12.bb => python3-dtschema_2026.4.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-dtschema_2025.12.bb => python3-dtschema_2026.4.bb} (85%)
diff --git a/meta/recipes-devtools/python/python3-dtschema_2025.12.bb b/meta/recipes-devtools/python/python3-dtschema_2026.4.bb
similarity index 85%
rename from meta/recipes-devtools/python/python3-dtschema_2025.12.bb
rename to meta/recipes-devtools/python/python3-dtschema_2026.4.bb
index 5ae67805b9..cbd459c151 100644
--- a/meta/recipes-devtools/python/python3-dtschema_2025.12.bb
+++ b/meta/recipes-devtools/python/python3-dtschema_2026.4.bb
@@ -7,7 +7,7 @@ inherit pypi python_setuptools_build_meta
PYPI_PACKAGE = "dtschema"
-SRC_URI[sha256sum] = "327fdf5d5ec60934cc3eddab09e68be2310173a33e15eee24dffa89787706db7"
+SRC_URI[sha256sum] = "10cd0ffe239f8d88913390ac5d8213fae382e87a20643b21c65714ded82a4460"
DEPENDS += "python3-setuptools-scm-native"
RDEPENDS:${PN} += "\
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 26/49] python3-editables: upgrade 0.5 -> 0.6
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (23 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 25/49] python3-dtschema: upgrade 2025.12 -> 2026.4 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 27/49] python3-lxml: upgrade 6.0.2 -> 6.0.4 Wang Mingyu
` (22 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
License-Update: Line endings in the license file were changed from CRLF to LF.
Changelog:
==========
- Add a new "self_replace" strategy for map (and name the old strategy
"import_hook"). Based on an idea
- Rename the generated .pth file to _editable_impl_<project>.pth and document
that it is possible to customise the file names used.
- Rework the documentataion, replacing the "use cases" section with an expanded
and less opinionated "scope" section.
- Test suite improvements.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{python3-editables_0.5.bb => python3-editables_0.6.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta/recipes-devtools/python/{python3-editables_0.5.bb => python3-editables_0.6.bb} (60%)
diff --git a/meta/recipes-devtools/python/python3-editables_0.5.bb b/meta/recipes-devtools/python/python3-editables_0.6.bb
similarity index 60%
rename from meta/recipes-devtools/python/python3-editables_0.5.bb
rename to meta/recipes-devtools/python/python3-editables_0.6.bb
index 11566f096b..783ac01bde 100644
--- a/meta/recipes-devtools/python/python3-editables_0.5.bb
+++ b/meta/recipes-devtools/python/python3-editables_0.6.bb
@@ -2,9 +2,9 @@ SUMMARY = "A Python library for creating editable wheels"
HOMEPAGE = "https://github.com/pfmoore/editables"
SECTION = "devel/python"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=41bc1be47b7bb8240db3ef928c7cb0bf"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d731fc2dd253a6e78010aabef22fa987"
-SRC_URI[sha256sum] = "309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2"
+SRC_URI[sha256sum] = "1163834902381c4613787951c5914800fdf155ae08848a373b8ea5006780977c"
inherit pypi python_flit_core
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 27/49] python3-lxml: upgrade 6.0.2 -> 6.0.4
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (24 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 26/49] python3-editables: upgrade 0.5 -> 0.6 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 28/49] python3-maturin: upgrade 1.12.4 -> 1.13.1 Wang Mingyu
` (21 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Bugs fixed
----------
- Several out of memory error cases now raise "MemoryError" that were not
handled before.
- Slicing with large step values (outside of "+/- sys.maxsize") could trigger
undefined C behaviour.
- LP#2125399: Some failing tests were fixed or disabled in PyPy.
- LP#2138421: Memory leak in error cases when setting the "public_id" or
"system_url" of a document.
- Memory leak in case of a memory allocation failure when copying document
subtrees.
- When mapping an XPath result to Python failed, the result memory could leak.
- When preparing an XSLT transform failed, the XSLT parameter memory could
leak.
- LP#2148019: Spurious MemoryError during namespace cleanup.
Other changes
-------------
- Built using Cython 3.2.4.
- Binary wheels use zlib 1.3.2.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-lxml_6.0.2.bb => python3-lxml_6.0.4.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-lxml_6.0.2.bb => python3-lxml_6.0.4.bb} (95%)
diff --git a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb b/meta/recipes-devtools/python/python3-lxml_6.0.4.bb
similarity index 95%
rename from meta/recipes-devtools/python/python3-lxml_6.0.2.bb
rename to meta/recipes-devtools/python/python3-lxml_6.0.4.bb
index 876fda93b6..1257534c0f 100644
--- a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
+++ b/meta/recipes-devtools/python/python3-lxml_6.0.4.bb
@@ -18,7 +18,7 @@ LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
DEPENDS += "libxml2 libxslt"
-SRC_URI[sha256sum] = "cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62"
+SRC_URI[sha256sum] = "4137516be2a90775f99d8ef80ec0283f8d78b5d8bd4630ff20163b72e7e9abf2"
SRC_URI += "${PYPI_SRC_URI}"
inherit pkgconfig pypi setuptools3
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 28/49] python3-maturin: upgrade 1.12.4 -> 1.13.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (25 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 27/49] python3-lxml: upgrade 6.0.2 -> 6.0.4 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 29/49] python3-pdm-backend: upgrade 2.4.7 -> 2.4.8 Wang Mingyu
` (20 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/python3-maturin-crates.inc | 108 +++++++++++-------
...in_1.12.4.bb => python3-maturin_1.13.1.bb} | 2 +-
2 files changed, 67 insertions(+), 43 deletions(-)
rename meta/recipes-devtools/python/{python3-maturin_1.12.4.bb => python3-maturin_1.13.1.bb} (92%)
diff --git a/meta/recipes-devtools/python/python3-maturin-crates.inc b/meta/recipes-devtools/python/python3-maturin-crates.inc
index 0b9ac4dba8..6b637bfd3e 100644
--- a/meta/recipes-devtools/python/python3-maturin-crates.inc
+++ b/meta/recipes-devtools/python/python3-maturin-crates.inc
@@ -13,14 +13,15 @@ SRC_URI += " \
crate://crates.io/anyhow/1.0.101 \
crate://crates.io/ar_archive_writer/0.5.1 \
crate://crates.io/arbitrary/1.4.2 \
+ crate://crates.io/arwen/0.0.5 \
+ crate://crates.io/arwen-codesign/0.0.1-alpha.1 \
crate://crates.io/autocfg/1.5.0 \
crate://crates.io/automod/1.0.16 \
- crate://crates.io/base64/0.21.7 \
crate://crates.io/base64/0.22.1 \
crate://crates.io/base64ct/1.8.3 \
- crate://crates.io/bitflags/1.3.2 \
crate://crates.io/bitflags/2.10.0 \
crate://crates.io/block-buffer/0.10.4 \
+ crate://crates.io/borrow-or-share/0.2.4 \
crate://crates.io/boxcar/0.2.14 \
crate://crates.io/bstr/1.12.1 \
crate://crates.io/bumpalo/3.19.1 \
@@ -31,7 +32,7 @@ SRC_URI += " \
crate://crates.io/cab/0.6.0 \
crate://crates.io/camino/1.2.2 \
crate://crates.io/cargo-config2/0.1.40 \
- crate://crates.io/cargo-cyclonedx/0.5.7 \
+ crate://crates.io/cargo-cyclonedx/0.5.9 \
crate://crates.io/cargo-lock/10.1.0 \
crate://crates.io/cargo-options/0.7.6 \
crate://crates.io/cargo-platform/0.1.9 \
@@ -76,7 +77,7 @@ SRC_URI += " \
crate://crates.io/crossbeam-epoch/0.9.18 \
crate://crates.io/crossbeam-utils/0.8.21 \
crate://crates.io/crypto-common/0.1.7 \
- crate://crates.io/cyclonedx-bom/0.8.0 \
+ crate://crates.io/cyclonedx-bom/0.8.1 \
crate://crates.io/cyclonedx-bom-macros/0.1.0 \
crate://crates.io/data-encoding/2.10.0 \
crate://crates.io/der/0.7.10 \
@@ -105,9 +106,10 @@ SRC_URI += " \
crate://crates.io/filetime/0.2.27 \
crate://crates.io/find-msvc-tools/0.1.9 \
crate://crates.io/flate2/1.1.9 \
- crate://crates.io/fluent-uri/0.1.4 \
+ crate://crates.io/fluent-uri/0.4.1 \
crate://crates.io/fnv/1.0.7 \
crate://crates.io/foldhash/0.1.5 \
+ crate://crates.io/foldhash/0.2.0 \
crate://crates.io/foreign-types/0.3.2 \
crate://crates.io/foreign-types-shared/0.1.1 \
crate://crates.io/form_urlencoded/1.2.2 \
@@ -140,7 +142,6 @@ SRC_URI += " \
crate://crates.io/icu_properties/2.1.2 \
crate://crates.io/icu_properties_data/2.1.2 \
crate://crates.io/icu_provider/2.1.1 \
- crate://crates.io/idna/0.4.0 \
crate://crates.io/idna/1.1.0 \
crate://crates.io/idna_adapter/1.2.1 \
crate://crates.io/ignore/0.4.25 \
@@ -159,7 +160,7 @@ SRC_URI += " \
crate://crates.io/js-sys/0.3.85 \
crate://crates.io/keyring/2.3.3 \
crate://crates.io/lazy_static/1.5.0 \
- crate://crates.io/lddtree/0.4.0 \
+ crate://crates.io/lddtree/0.5.0 \
crate://crates.io/libbz2-rs-sys/0.2.2 \
crate://crates.io/libc/0.2.180 \
crate://crates.io/libmimalloc-sys/0.1.44 \
@@ -170,7 +171,7 @@ SRC_URI += " \
crate://crates.io/litrs/1.0.0 \
crate://crates.io/lock_api/0.4.14 \
crate://crates.io/log/0.4.29 \
- crate://crates.io/lzma-rust2/0.13.0 \
+ crate://crates.io/lzma-rust2/0.16.2 \
crate://crates.io/lzma-sys/0.1.20 \
crate://crates.io/lzxd/0.2.6 \
crate://crates.io/mailparse/0.16.1 \
@@ -193,6 +194,7 @@ SRC_URI += " \
crate://crates.io/num-traits/0.2.19 \
crate://crates.io/number_prefix/0.4.0 \
crate://crates.io/object/0.37.3 \
+ crate://crates.io/object/0.38.1 \
crate://crates.io/once_cell/1.21.3 \
crate://crates.io/once_cell_polyfill/1.70.2 \
crate://crates.io/openssl/0.10.75 \
@@ -201,7 +203,7 @@ SRC_URI += " \
crate://crates.io/openssl-probe/0.2.1 \
crate://crates.io/openssl-sys/0.9.111 \
crate://crates.io/option-ext/0.2.0 \
- crate://crates.io/ordered-float/4.6.0 \
+ crate://crates.io/ordered-float/5.1.0 \
crate://crates.io/os_pipe/1.2.3 \
crate://crates.io/parking_lot/0.12.5 \
crate://crates.io/parking_lot_core/0.9.12 \
@@ -230,8 +232,9 @@ SRC_URI += " \
crate://crates.io/proc-macro2/1.0.106 \
crate://crates.io/psm/0.1.30 \
crate://crates.io/purl/0.1.6 \
+ crate://crates.io/pyo3-introspection/0.28.2 \
crate://crates.io/pyproject-toml/0.13.7 \
- crate://crates.io/python-pkginfo/0.6.6 \
+ crate://crates.io/python-pkginfo/0.6.8 \
crate://crates.io/quote/1.0.44 \
crate://crates.io/quoted_printable/0.5.1 \
crate://crates.io/r-efi/5.3.0 \
@@ -247,6 +250,7 @@ SRC_URI += " \
crate://crates.io/redox_users/0.5.2 \
crate://crates.io/ref-cast/1.0.25 \
crate://crates.io/ref-cast-impl/1.0.25 \
+ crate://crates.io/reflink-copy/0.1.29 \
crate://crates.io/regex/1.12.3 \
crate://crates.io/regex-automata/0.3.9 \
crate://crates.io/regex-automata/0.4.14 \
@@ -266,8 +270,9 @@ SRC_URI += " \
crate://crates.io/rustls-pki-types/1.14.0 \
crate://crates.io/rustls-platform-verifier/0.6.2 \
crate://crates.io/rustls-platform-verifier-android/0.1.1 \
- crate://crates.io/rustls-webpki/0.103.9 \
+ crate://crates.io/rustls-webpki/0.103.10 \
crate://crates.io/rustversion/1.0.22 \
+ crate://crates.io/ruzstd/0.8.2 \
crate://crates.io/same-file/1.0.6 \
crate://crates.io/scc/2.4.0 \
crate://crates.io/schannel/0.1.28 \
@@ -303,16 +308,16 @@ SRC_URI += " \
crate://crates.io/snapbox/0.6.24 \
crate://crates.io/snapbox-macros/0.4.0 \
crate://crates.io/socks/0.3.4 \
- crate://crates.io/spdx/0.10.9 \
+ crate://crates.io/spdx/0.13.4 \
crate://crates.io/stable_deref_trait/1.2.1 \
crate://crates.io/stacker/0.1.23 \
crate://crates.io/strsim/0.11.1 \
- crate://crates.io/strum/0.26.3 \
- crate://crates.io/strum_macros/0.26.4 \
+ crate://crates.io/strum/0.28.0 \
+ crate://crates.io/strum_macros/0.28.0 \
crate://crates.io/subtle/2.6.1 \
crate://crates.io/syn/2.0.114 \
crate://crates.io/synstructure/0.13.2 \
- crate://crates.io/tar/0.4.44 \
+ crate://crates.io/tar/0.4.45 \
crate://crates.io/target-lexicon/0.13.4 \
crate://crates.io/tempfile/3.24.0 \
crate://crates.io/termcolor/1.4.1 \
@@ -327,8 +332,6 @@ SRC_URI += " \
crate://crates.io/time-core/0.1.8 \
crate://crates.io/time-macros/0.2.27 \
crate://crates.io/tinystr/0.8.2 \
- crate://crates.io/tinyvec/1.10.0 \
- crate://crates.io/tinyvec_macros/0.1.1 \
crate://crates.io/toml/0.8.23 \
crate://crates.io/toml/0.9.11+spec-1.1.0 \
crate://crates.io/toml_datetime/0.6.11 \
@@ -347,12 +350,11 @@ SRC_URI += " \
crate://crates.io/tracing-subscriber/0.3.22 \
crate://crates.io/trycmd/0.15.11 \
crate://crates.io/twox-hash/2.1.2 \
+ crate://crates.io/typed-path/0.12.3 \
crate://crates.io/typenum/1.19.0 \
crate://crates.io/unicase/2.9.0 \
- crate://crates.io/unicode-bidi/0.3.18 \
crate://crates.io/unicode-ident/1.0.22 \
crate://crates.io/unicode-linebreak/0.1.5 \
- crate://crates.io/unicode-normalization/0.1.25 \
crate://crates.io/unicode-segmentation/1.12.0 \
crate://crates.io/unicode-width/0.2.2 \
crate://crates.io/unicode-xid/0.2.6 \
@@ -366,7 +368,7 @@ SRC_URI += " \
crate://crates.io/utf8_iter/1.0.4 \
crate://crates.io/utf8parse/0.2.2 \
crate://crates.io/uuid/1.20.0 \
- crate://crates.io/validator/0.16.1 \
+ crate://crates.io/validator/0.19.0 \
crate://crates.io/valuable/0.1.1 \
crate://crates.io/vcpkg/0.2.15 \
crate://crates.io/version-ranges/0.1.2 \
@@ -389,7 +391,16 @@ SRC_URI += " \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-util/0.1.11 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows/0.62.2 \
+ crate://crates.io/windows-collections/0.3.2 \
+ crate://crates.io/windows-core/0.62.2 \
+ crate://crates.io/windows-future/0.3.2 \
+ crate://crates.io/windows-implement/0.60.2 \
+ crate://crates.io/windows-interface/0.59.3 \
crate://crates.io/windows-link/0.2.1 \
+ crate://crates.io/windows-numerics/0.3.1 \
+ crate://crates.io/windows-result/0.4.1 \
+ crate://crates.io/windows-strings/0.5.1 \
crate://crates.io/windows-sys/0.45.0 \
crate://crates.io/windows-sys/0.52.0 \
crate://crates.io/windows-sys/0.59.0 \
@@ -398,6 +409,7 @@ SRC_URI += " \
crate://crates.io/windows-targets/0.42.2 \
crate://crates.io/windows-targets/0.52.6 \
crate://crates.io/windows-targets/0.53.5 \
+ crate://crates.io/windows-threading/0.2.1 \
crate://crates.io/windows_aarch64_gnullvm/0.42.2 \
crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
crate://crates.io/windows_aarch64_gnullvm/0.53.1 \
@@ -441,7 +453,7 @@ SRC_URI += " \
crate://crates.io/zerovec/0.11.5 \
crate://crates.io/zerovec-derive/0.11.2 \
crate://crates.io/zip/4.6.1 \
- crate://crates.io/zip/6.0.0 \
+ crate://crates.io/zip/8.1.0 \
crate://crates.io/zlib-rs/0.6.0 \
crate://crates.io/zmij/1.0.19 \
crate://crates.io/zopfli/0.8.3 \
@@ -461,14 +473,15 @@ SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366
SRC_URI[anyhow-1.0.101.sha256sum] = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
SRC_URI[ar_archive_writer-0.5.1.sha256sum] = "7eb93bbb63b9c227414f6eb3a0adfddca591a8ce1e9b60661bb08969b87e340b"
SRC_URI[arbitrary-1.4.2.sha256sum] = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
+SRC_URI[arwen-0.0.5.sha256sum] = "d44cbd9bd79165abe331ebabb9dd4d59a5dc93791be33ff15ebd71baaadc85ba"
+SRC_URI[arwen-codesign-0.0.1-alpha.1.sha256sum] = "35d7a19757bfe3658d5a95bf25a0492f29ebb21933549bdbfa4075c895510124"
SRC_URI[autocfg-1.5.0.sha256sum] = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
SRC_URI[automod-1.0.16.sha256sum] = "e8b5778837666541195063243828c5b6139221b47dc4ec3ba81738e532469ab1"
-SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
SRC_URI[base64ct-1.8.3.sha256sum] = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
-SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
SRC_URI[bitflags-2.10.0.sha256sum] = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+SRC_URI[borrow-or-share-0.2.4.sha256sum] = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c"
SRC_URI[boxcar-0.2.14.sha256sum] = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e"
SRC_URI[bstr-1.12.1.sha256sum] = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
SRC_URI[bumpalo-3.19.1.sha256sum] = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
@@ -479,7 +492,7 @@ SRC_URI[bzip2-0.6.1.sha256sum] = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44
SRC_URI[cab-0.6.0.sha256sum] = "171228650e6721d5acc0868a462cd864f49ac5f64e4a42cde270406e64e404d2"
SRC_URI[camino-1.2.2.sha256sum] = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
SRC_URI[cargo-config2-0.1.40.sha256sum] = "9821da7dd887f2a39d24a12415376dfc532200a7f9edbcf6bb97e96120a257e9"
-SRC_URI[cargo-cyclonedx-0.5.7.sha256sum] = "ed20afa5ee0c8e397f97e1ee0f71fd6c16d055abdaeddda483e4c3f73f35502b"
+SRC_URI[cargo-cyclonedx-0.5.9.sha256sum] = "5d162f67705f0f5038759d73bf546a083bf30e8677c2e944b416bca48d9d69a8"
SRC_URI[cargo-lock-10.1.0.sha256sum] = "c06acb4f71407ba205a07cb453211e0e6a67b21904e47f6ba1f9589e38f2e454"
SRC_URI[cargo-options-0.7.6.sha256sum] = "f89e1d6d6f65fe04d5e21be9de19d31a074e3b7e43aa39ee5b85f4cee16c3188"
SRC_URI[cargo-platform-0.1.9.sha256sum] = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
@@ -524,7 +537,7 @@ SRC_URI[crossbeam-deque-0.8.6.sha256sum] = "9dd111b7b7f7d55b72c0a6ae361660ee5853
SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
SRC_URI[crossbeam-utils-0.8.21.sha256sum] = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
SRC_URI[crypto-common-0.1.7.sha256sum] = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
-SRC_URI[cyclonedx-bom-0.8.0.sha256sum] = "ce2ec98a191e17f63b92b132f6852462de9eaee03ca8dbf2df401b9fd809bcac"
+SRC_URI[cyclonedx-bom-0.8.1.sha256sum] = "3132b69ba8c13808bd2fa5748ac5b9816eb4f4e1f0bff6b7f9254a5940dcdeef"
SRC_URI[cyclonedx-bom-macros-0.1.0.sha256sum] = "c50341f21df64b412b4f917e34b7aa786c092d64f3f905f478cb76950c7e980c"
SRC_URI[data-encoding-2.10.0.sha256sum] = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
SRC_URI[der-0.7.10.sha256sum] = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
@@ -553,9 +566,10 @@ SRC_URI[fat-macho-0.4.10.sha256sum] = "a64465b99fa411ca36a47048e9b1deec20f609b07
SRC_URI[filetime-0.2.27.sha256sum] = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db"
SRC_URI[find-msvc-tools-0.1.9.sha256sum] = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
SRC_URI[flate2-1.1.9.sha256sum] = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
-SRC_URI[fluent-uri-0.1.4.sha256sum] = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d"
+SRC_URI[fluent-uri-0.4.1.sha256sum] = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e"
SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
SRC_URI[foldhash-0.1.5.sha256sum] = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+SRC_URI[foldhash-0.2.0.sha256sum] = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
SRC_URI[form_urlencoded-1.2.2.sha256sum] = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
@@ -588,7 +602,6 @@ SRC_URI[icu_normalizer_data-2.1.1.sha256sum] = "7aedcccd01fc5fe81e6b489c15b247b8
SRC_URI[icu_properties-2.1.2.sha256sum] = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
SRC_URI[icu_properties_data-2.1.2.sha256sum] = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
SRC_URI[icu_provider-2.1.1.sha256sum] = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
-SRC_URI[idna-0.4.0.sha256sum] = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
SRC_URI[idna-1.1.0.sha256sum] = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
SRC_URI[idna_adapter-1.2.1.sha256sum] = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
SRC_URI[ignore-0.4.25.sha256sum] = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"
@@ -607,7 +620,7 @@ SRC_URI[jobserver-0.1.34.sha256sum] = "9afb3de4395d6b3e67a780b6de64b51c978ecf11c
SRC_URI[js-sys-0.3.85.sha256sum] = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
SRC_URI[keyring-2.3.3.sha256sum] = "363387f0019d714aa60cc30ab4fe501a747f4c08fc58f069dd14be971bd495a0"
SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
-SRC_URI[lddtree-0.4.0.sha256sum] = "9cd71f004036b2ea41763739528084d0d2a9dea4fda11816a31d67edb2bd239f"
+SRC_URI[lddtree-0.5.0.sha256sum] = "39f71c5bd42adf4ee8e6b24da58c1f00a2817d27f618b169399f5adbf9e74492"
SRC_URI[libbz2-rs-sys-0.2.2.sha256sum] = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7"
SRC_URI[libc-0.2.180.sha256sum] = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
SRC_URI[libmimalloc-sys-0.1.44.sha256sum] = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870"
@@ -618,7 +631,7 @@ SRC_URI[litemap-0.8.1.sha256sum] = "6373607a59f0be73a39b6fe456b8192fcc3585f602af
SRC_URI[litrs-1.0.0.sha256sum] = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
SRC_URI[log-0.4.29.sha256sum] = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
-SRC_URI[lzma-rust2-0.13.0.sha256sum] = "c60a23ffb90d527e23192f1246b14746e2f7f071cb84476dd879071696c18a4a"
+SRC_URI[lzma-rust2-0.16.2.sha256sum] = "47bb1e988e6fb779cf720ad431242d3f03167c1b3f2b1aae7f1a94b2495b36ae"
SRC_URI[lzma-sys-0.1.20.sha256sum] = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
SRC_URI[lzxd-0.2.6.sha256sum] = "7b29dffab797218e12e4df08ef5d15ab9efca2504038b1b32b9b32fc844b39c9"
SRC_URI[mailparse-0.16.1.sha256sum] = "60819a97ddcb831a5614eb3b0174f3620e793e97e09195a395bfa948fd68ed2f"
@@ -641,6 +654,7 @@ SRC_URI[num-conv-0.2.0.sha256sum] = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70
SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
SRC_URI[object-0.37.3.sha256sum] = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
+SRC_URI[object-0.38.1.sha256sum] = "271638cd5fa9cca89c4c304675ca658efc4e64a66c716b7cfe1afb4b9611dbbc"
SRC_URI[once_cell-1.21.3.sha256sum] = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
SRC_URI[openssl-0.10.75.sha256sum] = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
@@ -649,7 +663,7 @@ SRC_URI[openssl-probe-0.1.6.sha256sum] = "d05e27ee213611ffe7d6348b942e8f942b3711
SRC_URI[openssl-probe-0.2.1.sha256sum] = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
SRC_URI[openssl-sys-0.9.111.sha256sum] = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-SRC_URI[ordered-float-4.6.0.sha256sum] = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
+SRC_URI[ordered-float-5.1.0.sha256sum] = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d"
SRC_URI[os_pipe-1.2.3.sha256sum] = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
@@ -678,8 +692,9 @@ SRC_URI[proc-macro-crate-3.4.0.sha256sum] = "219cb19e96be00ab2e37d6e299658a0cfa8
SRC_URI[proc-macro2-1.0.106.sha256sum] = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
SRC_URI[psm-0.1.30.sha256sum] = "3852766467df634d74f0b2d7819bf8dc483a0eb2e3b0f50f756f9cfe8b0d18d8"
SRC_URI[purl-0.1.6.sha256sum] = "60ebe4262ae91ddd28c8721111a0a6e9e58860e211fc92116c4bb85c98fd96ad"
+SRC_URI[pyo3-introspection-0.28.2.sha256sum] = "cc11f40a1f5ec62a36963d4b4b0c051fac90c879c640baa975f45cd01afd3c38"
SRC_URI[pyproject-toml-0.13.7.sha256sum] = "f6d755483ad14b49e76713b52285235461a5b4f73f17612353e11a5de36a5fd2"
-SRC_URI[python-pkginfo-0.6.6.sha256sum] = "464e5e2e0fb6c8c2c7aedc0cd6615258a3def4e34b417f6bf8835e76e7d441d4"
+SRC_URI[python-pkginfo-0.6.8.sha256sum] = "229fe47647d6602b9b0934b21fab8aece1c5a5aeb0a934196a14355fec656623"
SRC_URI[quote-1.0.44.sha256sum] = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
SRC_URI[quoted_printable-0.5.1.sha256sum] = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73"
SRC_URI[r-efi-5.3.0.sha256sum] = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
@@ -695,6 +710,7 @@ SRC_URI[redox_syscall-0.7.0.sha256sum] = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00
SRC_URI[redox_users-0.5.2.sha256sum] = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
SRC_URI[ref-cast-1.0.25.sha256sum] = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
SRC_URI[ref-cast-impl-1.0.25.sha256sum] = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
+SRC_URI[reflink-copy-0.1.29.sha256sum] = "13362233b147e57674c37b802d216b7c5e3dcccbed8967c84f0d8d223868ae27"
SRC_URI[regex-1.12.3.sha256sum] = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
SRC_URI[regex-automata-0.3.9.sha256sum] = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
SRC_URI[regex-automata-0.4.14.sha256sum] = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
@@ -714,8 +730,9 @@ SRC_URI[rustls-native-certs-0.8.3.sha256sum] = "612460d5f7bea540c490b2b6395d8e34
SRC_URI[rustls-pki-types-1.14.0.sha256sum] = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
SRC_URI[rustls-platform-verifier-0.6.2.sha256sum] = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
SRC_URI[rustls-platform-verifier-android-0.1.1.sha256sum] = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
-SRC_URI[rustls-webpki-0.103.9.sha256sum] = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+SRC_URI[rustls-webpki-0.103.10.sha256sum] = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
SRC_URI[rustversion-1.0.22.sha256sum] = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+SRC_URI[ruzstd-0.8.2.sha256sum] = "e5ff0cc5e135c8870a775d3320910cd9b564ec036b4dc0b8741629020be63f01"
SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
SRC_URI[scc-2.4.0.sha256sum] = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc"
SRC_URI[schannel-0.1.28.sha256sum] = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
@@ -751,16 +768,16 @@ SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acb
SRC_URI[snapbox-0.6.24.sha256sum] = "6c1abc378119f77310836665f8523018532cf7e3faeb3b10b01da5a7321bf8e1"
SRC_URI[snapbox-macros-0.4.0.sha256sum] = "3b750c344002d7cc69afb9da00ebd9b5c0f8ac2eb7d115d9d45d5b5f47718d74"
SRC_URI[socks-0.3.4.sha256sum] = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
-SRC_URI[spdx-0.10.9.sha256sum] = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3"
+SRC_URI[spdx-0.13.4.sha256sum] = "a8da593e30beb790fc9424502eb898320b44e5eb30367dbda1c1edde8e2f32d7"
SRC_URI[stable_deref_trait-1.2.1.sha256sum] = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
SRC_URI[stacker-0.1.23.sha256sum] = "08d74a23609d509411d10e2176dc2a4346e3b4aea2e7b1869f19fdedbc71c013"
SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-SRC_URI[strum-0.26.3.sha256sum] = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
-SRC_URI[strum_macros-0.26.4.sha256sum] = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
+SRC_URI[strum-0.28.0.sha256sum] = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd"
+SRC_URI[strum_macros-0.28.0.sha256sum] = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
SRC_URI[syn-2.0.114.sha256sum] = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
SRC_URI[synstructure-0.13.2.sha256sum] = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
-SRC_URI[tar-0.4.44.sha256sum] = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a"
+SRC_URI[tar-0.4.45.sha256sum] = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973"
SRC_URI[target-lexicon-0.13.4.sha256sum] = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba"
SRC_URI[tempfile-3.24.0.sha256sum] = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
@@ -775,8 +792,6 @@ SRC_URI[time-0.3.47.sha256sum] = "743bd48c283afc0388f9b8827b976905fb217ad9e647fa
SRC_URI[time-core-0.1.8.sha256sum] = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
SRC_URI[time-macros-0.2.27.sha256sum] = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
SRC_URI[tinystr-0.8.2.sha256sum] = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
-SRC_URI[tinyvec-1.10.0.sha256sum] = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
-SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
SRC_URI[toml-0.8.23.sha256sum] = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
SRC_URI[toml-0.9.11+spec-1.1.0.sha256sum] = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46"
SRC_URI[toml_datetime-0.6.11.sha256sum] = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
@@ -795,12 +810,11 @@ SRC_URI[tracing-serde-0.2.0.sha256sum] = "704b1aeb7be0d0a84fc9828cae51dab5970fee
SRC_URI[tracing-subscriber-0.3.22.sha256sum] = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
SRC_URI[trycmd-0.15.11.sha256sum] = "a81ea3136ddc88e19c2cc2eb3176b72abee4e831367cd8949f2a88ac5497e64e"
SRC_URI[twox-hash-2.1.2.sha256sum] = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c"
+SRC_URI[typed-path-0.12.3.sha256sum] = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
SRC_URI[typenum-1.19.0.sha256sum] = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
SRC_URI[unicase-2.9.0.sha256sum] = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
-SRC_URI[unicode-bidi-0.3.18.sha256sum] = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
SRC_URI[unicode-ident-1.0.22.sha256sum] = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-SRC_URI[unicode-normalization-0.1.25.sha256sum] = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
SRC_URI[unicode-segmentation-1.12.0.sha256sum] = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
SRC_URI[unicode-width-0.2.2.sha256sum] = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
@@ -814,7 +828,7 @@ SRC_URI[utf-8-0.7.6.sha256sum] = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429
SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
SRC_URI[uuid-1.20.0.sha256sum] = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f"
-SRC_URI[validator-0.16.1.sha256sum] = "b92f40481c04ff1f4f61f304d61793c7b56ff76ac1469f1beb199b1445b253bd"
+SRC_URI[validator-0.19.0.sha256sum] = "d0b4a29d8709210980a09379f27ee31549b73292c87ab9899beee1c0d3be6303"
SRC_URI[valuable-0.1.1.sha256sum] = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
SRC_URI[version-ranges-0.1.2.sha256sum] = "3595ffe225639f1e0fd8d7269dcc05d2fbfea93cfac2fea367daf1adb60aae91"
@@ -837,7 +851,16 @@ SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761
SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
SRC_URI[winapi-util-0.1.11.sha256sum] = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-0.62.2.sha256sum] = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
+SRC_URI[windows-collections-0.3.2.sha256sum] = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
+SRC_URI[windows-core-0.62.2.sha256sum] = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+SRC_URI[windows-future-0.3.2.sha256sum] = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
+SRC_URI[windows-implement-0.60.2.sha256sum] = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+SRC_URI[windows-interface-0.59.3.sha256sum] = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+SRC_URI[windows-numerics-0.3.1.sha256sum] = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
+SRC_URI[windows-result-0.4.1.sha256sum] = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+SRC_URI[windows-strings-0.5.1.sha256sum] = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
@@ -846,6 +869,7 @@ SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077d
SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
SRC_URI[windows-targets-0.53.5.sha256sum] = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+SRC_URI[windows-threading-0.2.1.sha256sum] = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
SRC_URI[windows_aarch64_gnullvm-0.53.1.sha256sum] = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
@@ -889,7 +913,7 @@ SRC_URI[zerotrie-0.2.3.sha256sum] = "2a59c17a5562d507e4b54960e8569ebee33bee890c7
SRC_URI[zerovec-0.11.5.sha256sum] = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
SRC_URI[zerovec-derive-0.11.2.sha256sum] = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
SRC_URI[zip-4.6.1.sha256sum] = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1"
-SRC_URI[zip-6.0.0.sha256sum] = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
+SRC_URI[zip-8.1.0.sha256sum] = "6e499faf5c6b97a0d086f4a8733de6d47aee2252b8127962439d8d4311a73f72"
SRC_URI[zlib-rs-0.6.0.sha256sum] = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c"
SRC_URI[zmij-1.0.19.sha256sum] = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445"
SRC_URI[zopfli-0.8.3.sha256sum] = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
diff --git a/meta/recipes-devtools/python/python3-maturin_1.12.4.bb b/meta/recipes-devtools/python/python3-maturin_1.13.1.bb
similarity index 92%
rename from meta/recipes-devtools/python/python3-maturin_1.12.4.bb
rename to meta/recipes-devtools/python/python3-maturin_1.13.1.bb
index bc4ff1d5c5..e3672cf326 100644
--- a/meta/recipes-devtools/python/python3-maturin_1.12.4.bb
+++ b/meta/recipes-devtools/python/python3-maturin_1.13.1.bb
@@ -5,7 +5,7 @@ LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \
file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797"
-SRC_URI[sha256sum] = "06f6438be7e723aaf4b412fb34839854b540a1350f7614fadf5bd1db2b98d5f7"
+SRC_URI[sha256sum] = "9a87ff3b8e4d1c6eac33ebfe8e261e8236516d98d45c0323550621819b5a1a2f"
S = "${UNPACKDIR}/maturin-${PV}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 29/49] python3-pdm-backend: upgrade 2.4.7 -> 2.4.8
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (26 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 28/49] python3-maturin: upgrade 1.12.4 -> 1.13.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 30/49] python3-pdm: upgrade 2.26.6 -> 2.26.7 Wang Mingyu
` (19 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
Support omitting source in version table when path is declared
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...ython3-pdm-backend_2.4.7.bb => python3-pdm-backend_2.4.8.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pdm-backend_2.4.7.bb => python3-pdm-backend_2.4.8.bb} (79%)
diff --git a/meta/recipes-devtools/python/python3-pdm-backend_2.4.7.bb b/meta/recipes-devtools/python/python3-pdm-backend_2.4.8.bb
similarity index 79%
rename from meta/recipes-devtools/python/python3-pdm-backend_2.4.7.bb
rename to meta/recipes-devtools/python/python3-pdm-backend_2.4.8.bb
index 94d40ac528..5833bb717b 100644
--- a/meta/recipes-devtools/python/python3-pdm-backend_2.4.7.bb
+++ b/meta/recipes-devtools/python/python3-pdm-backend_2.4.8.bb
@@ -4,7 +4,7 @@ LICENSE = "MIT"
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4a564297b3c5b629a528b92fd8ff61ea"
-SRC_URI[sha256sum] = "a509d083850378ce919d41e7a2faddfc57a1764d376913c66731125d6b14110f"
+SRC_URI[sha256sum] = "d8ef85d2c4306ee67195412d701fae9983e84ec6574598e26798ae26b7b3c7e0"
inherit pypi python_pep517
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 30/49] python3-pdm: upgrade 2.26.6 -> 2.26.7
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (27 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 29/49] python3-pdm-backend: upgrade 2.4.7 -> 2.4.8 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 31/49] python3-poetry-core: upgrade 2.3.1 -> 2.3.2 Wang Mingyu
` (18 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-pdm_2.26.6.bb => python3-pdm_2.26.7.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pdm_2.26.6.bb => python3-pdm_2.26.7.bb} (80%)
diff --git a/meta/recipes-devtools/python/python3-pdm_2.26.6.bb b/meta/recipes-devtools/python/python3-pdm_2.26.7.bb
similarity index 80%
rename from meta/recipes-devtools/python/python3-pdm_2.26.6.bb
rename to meta/recipes-devtools/python/python3-pdm_2.26.7.bb
index 72f6415dbc..5e6cdcb4cf 100644
--- a/meta/recipes-devtools/python/python3-pdm_2.26.6.bb
+++ b/meta/recipes-devtools/python/python3-pdm_2.26.7.bb
@@ -4,7 +4,7 @@ LICENSE = "MIT"
SECTION = "devel/python"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
-SRC_URI[sha256sum] = "771f95b9a484f9eb34dcf8d851be6ff95333e4f3c46189f9004cfd5cc2e925f9"
+SRC_URI[sha256sum] = "0a96a6fb4d60dfeacc1f68bf77efda39503833f6c01866cc8700ea403f0183b7"
inherit pypi python_pdm
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 31/49] python3-poetry-core: upgrade 2.3.1 -> 2.3.2
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (28 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 30/49] python3-pdm: upgrade 2.26.6 -> 2.26.7 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 32/49] python3-pyasn1: upgrade 0.6.2 -> 0.6.3 Wang Mingyu
` (17 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changed
========
- Update list of supported licenses (#917).
Fixed
======
- Fix an issue where platform_release could not be parsed on Debian Trixie
- Fix an issue where using project.readme.text in the pyproject.toml file
resulted in broken metadata
- Fix an issue where dependency groups were considered equal when their
resolved dependencies were equal, even if the groups themselves were not
- Fix an issue where removing a dependency from a group that included another
group resulted in other dependencies being added to the included group
- Fix an issue where PEP 735 include-group entries were lost when
[tool.poetry.group] also defined include-groups for the same group
- Fix an issue where the union of <value> not in <marker> constraints was
wrongly treated as always satisfied
- Fix an issue where a post release with a local version identifier was wrongly
allowed by a > version constraint
- Fix an issue where a version with the local version identifier 0 was treated
as equal to the corresponding public version
- Fix an issue where a != <version> constraint wrongly disallowed pre releases
and post releases of the specified version
- Fix an issue where in and not in constraints were wrongly not allowed by
specific compound constraints
- Fix an issue where data entries in generated setup.py files were duplicated
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...ython3-poetry-core_2.3.1.bb => python3-poetry-core_2.3.2.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-poetry-core_2.3.1.bb => python3-poetry-core_2.3.2.bb} (93%)
diff --git a/meta/recipes-devtools/python/python3-poetry-core_2.3.1.bb b/meta/recipes-devtools/python/python3-poetry-core_2.3.2.bb
similarity index 93%
rename from meta/recipes-devtools/python/python3-poetry-core_2.3.1.bb
rename to meta/recipes-devtools/python/python3-poetry-core_2.3.2.bb
index 705e08d98b..0f55368d13 100644
--- a/meta/recipes-devtools/python/python3-poetry-core_2.3.1.bb
+++ b/meta/recipes-devtools/python/python3-poetry-core_2.3.2.bb
@@ -15,7 +15,7 @@ LIC_FILES_CHKSUM = "\
file://src/poetry/core/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \
"
-SRC_URI[sha256sum] = "96f791d5d7d4e040f3983d76779425cf9532690e2756a24fd5ca0f86af19ef82"
+SRC_URI[sha256sum] = "20cb71be27b774628da9f384effd9183dfceb53bcef84063248a8672aa47031f"
inherit python_poetry_core pypi
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 32/49] python3-pyasn1: upgrade 0.6.2 -> 0.6.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (29 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 31/49] python3-poetry-core: upgrade 2.3.1 -> 2.3.2 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 33/49] python3-pygments: upgrade 2.19.2 -> 2.20.0 Wang Mingyu
` (16 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
==========
- CVE-2026-30922 (GHSA-jr27-m4p2-rc6r): Added nesting depth limit to ASN.1
decoder to prevent stack overflow from deeply nested structures
- Fixed OverflowError from oversized BER length field
- Fixed DeprecationWarning stacklevel for deprecated attributes
- Fixed asDateTime incorrect fractional seconds parsing
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-pyasn1_0.6.2.bb => python3-pyasn1_0.6.3.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pyasn1_0.6.2.bb => python3-pyasn1_0.6.3.bb} (82%)
diff --git a/meta/recipes-devtools/python/python3-pyasn1_0.6.2.bb b/meta/recipes-devtools/python/python3-pyasn1_0.6.3.bb
similarity index 82%
rename from meta/recipes-devtools/python/python3-pyasn1_0.6.2.bb
rename to meta/recipes-devtools/python/python3-pyasn1_0.6.3.bb
index 01157e251e..fb572d9da4 100644
--- a/meta/recipes-devtools/python/python3-pyasn1_0.6.2.bb
+++ b/meta/recipes-devtools/python/python3-pyasn1_0.6.3.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://pyasn1.sourceforge.net/"
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=190f79253908c986e6cacf380c3a5f6d"
-SRC_URI[sha256sum] = "9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b"
+SRC_URI[sha256sum] = "697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf"
inherit pypi python_setuptools_build_meta ptest-python-pytest
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 33/49] python3-pygments: upgrade 2.19.2 -> 2.20.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (30 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 32/49] python3-pyasn1: upgrade 0.6.2 -> 0.6.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 34/49] python3-pygobject: upgrade 3.56.1 -> 3.56.2 Wang Mingyu
` (15 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
============
- New lexers:
* Rell
- Updated lexers:
* archetype: Fix catastrophic backtracking in GUID and ID patterns
* ASN.1: Recognize minus sign and fix range operator
* C++: Add C++26 keywords
* ComponentPascal: Fix "analyse_text"
* Coq renamed to Rocq
* Cython: Various improvements
* Debian control: Improve architecture parsing
* Devicetree: Add support for overlay/fragments, add bytestring support, fix catastrophic backtracking
* Fennel: Various improvements
* Haskell: Handle escape sequences in character literals
* Java: Add module keywords
* Lean4: Add operators "]'", "]?", "]!"
* LESS: Support single-line comments
* LilyPond: Update to 2.25.29
* LLVM: Support C-style comments
* Lua(u): Fix catastrophic backtracking
* Macaulay2: Update to 1.25.05, 1.25.11
* Mathematica: Various improvements
* meson: Add additional operators
* MySQL: Update keywords
* org-Mode: Support both schedule and deadline
* PHP: Add "__PROPERTY__" magic constant, add reserved keywords
* PostgreSQL: Add more keywords
* protobuf: Fix namespace tokenization
* Python: Add "t"-string support
* Tablegen: Fix infinite loop
* Tera Term macro: Add commands introduced in v5.3 through v5.6
* TOML: Support TOML 1.1.0
* Turtle: Allow empty comment lines
* XML: Added ".xbrl" as file ending
- Drop Python 3.8, and add Python 3.14 as a supported version
- Various improvements to "autopygmentize"
- Update "onedark" style to support more token types
- Update "rtt" style to support more token types
- Cache entry points to improve performance
- Fix "xterm-256" color table
- Fix "kwargs" dictionary getting mutated on each call
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{python3-pygments_2.19.2.bb => python3-pygments_2.20.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pygments_2.19.2.bb => python3-pygments_2.20.0.bb} (80%)
diff --git a/meta/recipes-devtools/python/python3-pygments_2.19.2.bb b/meta/recipes-devtools/python/python3-pygments_2.20.0.bb
similarity index 80%
rename from meta/recipes-devtools/python/python3-pygments_2.19.2.bb
rename to meta/recipes-devtools/python/python3-pygments_2.20.0.bb
index a1f73b441d..abe6205292 100644
--- a/meta/recipes-devtools/python/python3-pygments_2.19.2.bb
+++ b/meta/recipes-devtools/python/python3-pygments_2.20.0.bb
@@ -5,7 +5,7 @@ LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592"
inherit python_hatchling
-SRC_URI[sha256sum] = "636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"
+SRC_URI[sha256sum] = "6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"
inherit pypi
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 34/49] python3-pygobject: upgrade 3.56.1 -> 3.56.2
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (31 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 33/49] python3-pygments: upgrade 2.19.2 -> 2.20.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 35/49] python3-pytest: upgrade 9.0.2 -> 9.0.3 Wang Mingyu
` (14 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
============
* ci: drop obsolete mingw environments, add UCRT64 and clang64 (backport)
* Leave floating state intact for get/set property (backport)
* Only call do_dispose if it's implemented on the class (backport)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...{python3-pygobject_3.56.1.bb => python3-pygobject_3.56.2.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pygobject_3.56.1.bb => python3-pygobject_3.56.2.bb} (93%)
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.56.1.bb b/meta/recipes-devtools/python/python3-pygobject_3.56.2.bb
similarity index 93%
rename from meta/recipes-devtools/python/python3-pygobject_3.56.1.bb
rename to meta/recipes-devtools/python/python3-pygobject_3.56.2.bb
index c17df1a9d1..24a58adee6 100644
--- a/meta/recipes-devtools/python/python3-pygobject_3.56.1.bb
+++ b/meta/recipes-devtools/python/python3-pygobject_3.56.2.bb
@@ -19,7 +19,7 @@ DEPENDS += "python3 glib-2.0"
GNOME_COMPRESS_TYPE = "gz"
GNOMEBN = "pygobject"
-SRC_URI[archive.sha256sum] = "2ec1cc8c55c7ffeebb97e58a9bba7aa1e74611f1173628084685446804a8881a"
+SRC_URI[archive.sha256sum] = "b816098969544081de9eecedb94ad6ac59c77e4d571fe7051f18bebcec074313"
S = "${UNPACKDIR}/${GNOMEBN}-${PV}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 35/49] python3-pytest: upgrade 9.0.2 -> 9.0.3
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (32 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 34/49] python3-pygobject: upgrade 3.56.1 -> 3.56.2 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 36/49] python3-setuptools-rust: upgrade 1.12.0 -> 1.12.1 Wang Mingyu
` (13 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Bug fixes
============
- #12444: Fixed pytest.approx which now correctly takes into account
~collections.abc.Mapping keys order to compare them.
- #13634: Blocking a conftest.py file using the -p no: option is now explicitly
disallowed.
- Previously this resulted in an internal assertion failure during plugin
loading.
- Pytest now raises a clear UsageError explaining that conftest files are not
plugins and cannot be disabled via -p.
- #13734: Fixed crash when a test raises an exceptiongroup with
__tracebackhide__ = True.
- #14195: Fixed an issue where non-string messages passed to
unittest.TestCase.subTest() were not printed.
- #14343: Fixed use of insecure temporary directory (CVE-2025-71176).
Improved documentation ======================
- #13388: Clarified documentation for -p vs PYTEST_PLUGINS plugin loading and
fixed an incorrect -p example.
- #13731: Clarified that capture fixtures (e.g. capsys and capfd) take
precedence over the -s / --capture=no command-line options in Accessing
captured output from a test function <accessing-captured-output>.
- #14088: Clarified that the default pytest_collection hook sets session.items
before it calls pytest_collection_finish, not after.
- #14255: TOML integer log levels must be quoted: Updating reference
documentation.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-pytest_9.0.2.bb => python3-pytest_9.0.3.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-pytest_9.0.2.bb => python3-pytest_9.0.3.bb} (91%)
diff --git a/meta/recipes-devtools/python/python3-pytest_9.0.2.bb b/meta/recipes-devtools/python/python3-pytest_9.0.3.bb
similarity index 91%
rename from meta/recipes-devtools/python/python3-pytest_9.0.2.bb
rename to meta/recipes-devtools/python/python3-pytest_9.0.3.bb
index 007db2e732..bec521d3ef 100644
--- a/meta/recipes-devtools/python/python3-pytest_9.0.2.bb
+++ b/meta/recipes-devtools/python/python3-pytest_9.0.3.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scal
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bd27e41b6550fe0fc45356d1d81ee37c"
-SRC_URI[sha256sum] = "75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11"
+SRC_URI[sha256sum] = "b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"
DEPENDS += "python3-setuptools-scm-native"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 36/49] python3-setuptools-rust: upgrade 1.12.0 -> 1.12.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (33 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 35/49] python3-pytest: upgrade 9.0.2 -> 9.0.3 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1 Wang Mingyu
` (12 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog:
===========
- Migrate to trusted publishing.
- Strip target suffix for cargo-zigbuild compatibility.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...uptools-rust_1.12.0.bb => python3-setuptools-rust_1.12.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-setuptools-rust_1.12.0.bb => python3-setuptools-rust_1.12.1.bb} (90%)
diff --git a/meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb b/meta/recipes-devtools/python/python3-setuptools-rust_1.12.1.bb
similarity index 90%
rename from meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb
rename to meta/recipes-devtools/python/python3-setuptools-rust_1.12.1.bb
index 062e97083d..a1135794ba 100644
--- a/meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb
+++ b/meta/recipes-devtools/python/python3-setuptools-rust_1.12.1.bb
@@ -9,7 +9,7 @@ BUGTRACKER = "https://github.com/PyO3/setuptools-rust/issues"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=011cd92e702dd9e6b1a26157b6fd53f5"
-SRC_URI[sha256sum] = "d94a93f0c97751c17014565f07bdc324bee45d396cd1bba83d8e7af92b945f0c"
+SRC_URI[sha256sum] = "85ae70989d96c9cfeb5ef79cf3bac2d5200bc5564f720a06edceedbdf6664640"
PYPI_PACKAGE = "setuptools_rust"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (34 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 36/49] python3-setuptools-rust: upgrade 1.12.0 -> 1.12.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-22 6:05 ` Mathieu Dubois-Briand
2026-04-21 9:55 ` [OE-core] [PATCH 38/49] python3-testtools: upgrade 2.8.7 -> 2.9.0 Wang Mingyu
` (11 subsequent siblings)
47 siblings, 1 reply; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
...python3-shacl2code_0.0.24.bb => python3-shacl2code_1.0.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-shacl2code_0.0.24.bb => python3-shacl2code_1.0.1.bb} (81%)
diff --git a/meta/recipes-devtools/python/python3-shacl2code_0.0.24.bb b/meta/recipes-devtools/python/python3-shacl2code_1.0.1.bb
similarity index 81%
rename from meta/recipes-devtools/python/python3-shacl2code_0.0.24.bb
rename to meta/recipes-devtools/python/python3-shacl2code_1.0.1.bb
index 93ed9a2530..904940926f 100644
--- a/meta/recipes-devtools/python/python3-shacl2code_0.0.24.bb
+++ b/meta/recipes-devtools/python/python3-shacl2code_1.0.1.bb
@@ -5,7 +5,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=0582f358628f299f29c23bf5fb2f73c9"
PYPI_PACKAGE = "shacl2code"
-SRC_URI[sha256sum] = "d8b511054ca564b4514b9186ece7f5eb8048cfc5daa6625def1a3adba13c4f66"
+SRC_URI[sha256sum] = "c856822b40c330452b8b31e94a658ad4595a5ef03cdb75ea432ea9c73d0cf7d9"
inherit pypi python_hatchling
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 38/49] python3-testtools: upgrade 2.8.7 -> 2.9.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (35 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7 Wang Mingyu
` (10 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{python3-testtools_2.8.7.bb => python3-testtools_2.9.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/python/{python3-testtools_2.8.7.bb => python3-testtools_2.9.0.bb} (84%)
diff --git a/meta/recipes-devtools/python/python3-testtools_2.8.7.bb b/meta/recipes-devtools/python/python3-testtools_2.9.0.bb
similarity index 84%
rename from meta/recipes-devtools/python/python3-testtools_2.8.7.bb
rename to meta/recipes-devtools/python/python3-testtools_2.9.0.bb
index db3ec2373d..a7011acd78 100644
--- a/meta/recipes-devtools/python/python3-testtools_2.8.7.bb
+++ b/meta/recipes-devtools/python/python3-testtools_2.9.0.bb
@@ -8,7 +8,7 @@ DEPENDS += "python3-hatch-vcs-native"
inherit pypi python_hatchling
-SRC_URI[sha256sum] = "1aa19aaabf9736385fc111a95f94f6b0661c0b41e65ca5129223eb518c63e8b9"
+SRC_URI[sha256sum] = "eb562d1a2157c6d443c8c118861eb452b3655d1842f9b61b8567ad01b32826e3"
RDEPENDS:${PN} += "\
python3-compression \
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (36 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 38/49] python3-testtools: upgrade 2.8.7 -> 2.9.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-22 6:10 ` Mathieu Dubois-Briand
2026-04-21 9:55 ` [OE-core] [PATCH 40/49] python3-zipp: upgrade 3.23.0 -> 3.23.1 Wang Mingyu
` (9 subsequent siblings)
47 siblings, 1 reply; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/python3-uv-build-crates.inc | 1206 +++--------------
..._0.10.10.bb => python3-uv-build_0.11.7.bb} | 2 +-
2 files changed, 227 insertions(+), 981 deletions(-)
rename meta/recipes-devtools/python/{python3-uv-build_0.10.10.bb => python3-uv-build_0.11.7.bb} (92%)
diff --git a/meta/recipes-devtools/python/python3-uv-build-crates.inc b/meta/recipes-devtools/python/python3-uv-build-crates.inc
index 6b8cf5f1fb..d8c1d600ac 100644
--- a/meta/recipes-devtools/python/python3-uv-build-crates.inc
+++ b/meta/recipes-devtools/python/python3-uv-build-crates.inc
@@ -3,175 +3,63 @@
# from Cargo.lock
SRC_URI += " \
crate://crates.io/adler2/2.0.1 \
- crate://crates.io/aes/0.8.4 \
- crate://crates.io/aho-corasick/1.1.3 \
+ crate://crates.io/aho-corasick/1.1.4 \
crate://crates.io/allocator-api2/0.2.21 \
- crate://crates.io/ambient-id/0.0.10 \
- crate://crates.io/anes/0.1.6 \
- crate://crates.io/anstream/0.6.21 \
crate://crates.io/anstream/1.0.0 \
- crate://crates.io/anstyle/1.0.11 \
- crate://crates.io/anstyle-parse/0.2.7 \
+ crate://crates.io/anstyle/1.0.14 \
crate://crates.io/anstyle-parse/1.0.0 \
- crate://crates.io/anstyle-query/1.1.3 \
- crate://crates.io/anstyle-wincon/3.0.9 \
+ crate://crates.io/anstyle-query/1.1.5 \
+ crate://crates.io/anstyle-wincon/3.0.11 \
crate://crates.io/anyhow/1.0.102 \
- crate://crates.io/approx/0.5.1 \
crate://crates.io/arcstr/1.2.0 \
- crate://crates.io/arrayref/0.3.9 \
- crate://crates.io/arrayvec/0.7.6 \
- crate://crates.io/asn1-rs/0.7.1 \
- crate://crates.io/asn1-rs-derive/0.6.0 \
- crate://crates.io/asn1-rs-impl/0.2.0 \
- crate://crates.io/assert-json-diff/2.0.2 \
- crate://crates.io/assert_cmd/2.1.2 \
- crate://crates.io/assert_fs/1.1.3 \
- crate://crates.io/astral-pubgrub/0.3.3 \
- crate://crates.io/astral-reqwest-middleware/0.4.2 \
- crate://crates.io/astral-reqwest-retry/0.8.0 \
- crate://crates.io/astral-tl/0.7.11 \
- crate://crates.io/astral-tokio-tar/0.5.6 \
crate://crates.io/astral-version-ranges/0.1.4 \
- crate://crates.io/astral_async_http_range_reader/0.9.1 \
- crate://crates.io/astral_async_zip/0.0.17 \
- crate://crates.io/async-broadcast/0.7.2 \
- crate://crates.io/async-channel/2.5.0 \
- crate://crates.io/async-compression/0.4.19 \
- crate://crates.io/async-recursion/1.1.1 \
- crate://crates.io/async-trait/0.1.89 \
- crate://crates.io/atomic-waker/1.1.2 \
crate://crates.io/autocfg/1.5.0 \
- crate://crates.io/axoasset/1.3.0 \
- crate://crates.io/axoprocess/0.2.1 \
- crate://crates.io/axotag/0.3.0 \
- crate://crates.io/axoupdater/0.9.1 \
crate://crates.io/backon/1.6.0 \
- crate://crates.io/base64/0.21.7 \
crate://crates.io/base64/0.22.1 \
- crate://crates.io/base64ct/1.8.2 \
- crate://crates.io/bisection/0.1.0 \
- crate://crates.io/bitflags/1.3.2 \
crate://crates.io/bitflags/2.11.0 \
- crate://crates.io/blake2/0.10.6 \
crate://crates.io/block-buffer/0.10.4 \
- crate://crates.io/block-padding/0.3.3 \
- crate://crates.io/block2/0.6.2 \
crate://crates.io/boxcar/0.2.14 \
- crate://crates.io/bstr/1.12.0 \
- crate://crates.io/bumpalo/3.19.0 \
+ crate://crates.io/bstr/1.12.1 \
+ crate://crates.io/bumpalo/3.20.2 \
crate://crates.io/bytecheck/0.8.2 \
crate://crates.io/bytecheck_derive/0.8.2 \
- crate://crates.io/bytemuck/1.25.0 \
- crate://crates.io/byteorder/1.5.0 \
- crate://crates.io/byteorder-lite/0.1.0 \
crate://crates.io/bytes/1.11.1 \
- crate://crates.io/bzip2/0.5.2 \
crate://crates.io/bzip2/0.6.1 \
- crate://crates.io/bzip2-sys/0.1.13+1.0.8 \
- crate://crates.io/camino/1.1.10 \
- crate://crates.io/cargo-util/0.2.26 \
- crate://crates.io/cast/0.3.0 \
- crate://crates.io/cbc/0.1.2 \
- crate://crates.io/cc/1.2.30 \
- crate://crates.io/cfg-if/1.0.1 \
- crate://crates.io/cfg_aliases/0.2.1 \
+ crate://crates.io/cc/1.2.57 \
+ crate://crates.io/cfg-if/1.0.4 \
crate://crates.io/charset/0.1.5 \
- crate://crates.io/ciborium/0.2.2 \
- crate://crates.io/ciborium-io/0.2.2 \
- crate://crates.io/ciborium-ll/0.2.2 \
- crate://crates.io/cipher/0.4.4 \
- crate://crates.io/clap/4.5.60 \
- crate://crates.io/clap_builder/4.5.60 \
- crate://crates.io/clap_complete/4.5.55 \
- crate://crates.io/clap_complete_command/0.6.1 \
- crate://crates.io/clap_complete_nushell/4.5.8 \
- crate://crates.io/clap_derive/4.5.55 \
- crate://crates.io/clap_lex/1.0.0 \
- crate://crates.io/codspeed/4.3.0 \
- crate://crates.io/codspeed-criterion-compat/4.3.0 \
- crate://crates.io/codspeed-criterion-compat-walltime/4.3.0 \
- crate://crates.io/color_quant/1.1.0 \
- crate://crates.io/colorchoice/1.0.4 \
- crate://crates.io/colored/2.2.0 \
- crate://crates.io/concurrent-queue/2.5.0 \
- crate://crates.io/configparser/3.1.0 \
- crate://crates.io/console/0.15.11 \
- crate://crates.io/console/0.16.2 \
- crate://crates.io/const-oid/0.9.6 \
- crate://crates.io/const-random/0.1.18 \
- crate://crates.io/const-random-macro/0.1.16 \
- crate://crates.io/core-foundation/0.9.4 \
- crate://crates.io/core-foundation/0.10.1 \
- crate://crates.io/core-foundation-sys/0.8.7 \
- crate://crates.io/core_maths/0.1.1 \
+ crate://crates.io/clap/4.6.0 \
+ crate://crates.io/clap_builder/4.6.0 \
+ crate://crates.io/clap_derive/4.6.0 \
+ crate://crates.io/clap_lex/1.1.0 \
+ crate://crates.io/colorchoice/1.0.5 \
+ crate://crates.io/console/0.16.3 \
crate://crates.io/cpufeatures/0.2.17 \
- crate://crates.io/crc/3.3.0 \
- crate://crates.io/crc-catalog/2.4.0 \
crate://crates.io/crc32fast/1.5.0 \
- crate://crates.io/criterion-plot/0.5.0 \
- crate://crates.io/crossbeam-channel/0.5.15 \
- crate://crates.io/crossbeam-deque/0.8.6 \
- crate://crates.io/crossbeam-epoch/0.9.18 \
- crate://crates.io/crossbeam-utils/0.8.21 \
- crate://crates.io/crunchy/0.2.4 \
- crate://crates.io/crypto-common/0.1.6 \
+ crate://crates.io/crypto-common/0.1.7 \
crate://crates.io/csv/1.4.0 \
- crate://crates.io/csv-core/0.1.12 \
- crate://crates.io/ctrlc/3.5.2 \
- crate://crates.io/cyclonedx-bom/0.8.0 \
- crate://crates.io/cyclonedx-bom-macros/0.1.0 \
- crate://crates.io/dashmap/6.1.0 \
+ crate://crates.io/csv-core/0.1.13 \
crate://crates.io/data-encoding/2.10.0 \
- crate://crates.io/data-url/0.3.2 \
- crate://crates.io/deadpool/0.12.3 \
- crate://crates.io/deadpool-runtime/0.1.4 \
- crate://crates.io/der/0.7.10 \
- crate://crates.io/der-parser/10.0.0 \
- crate://crates.io/deranged/0.5.5 \
- crate://crates.io/diff/0.1.13 \
- crate://crates.io/difflib/0.4.0 \
crate://crates.io/digest/0.10.7 \
- crate://crates.io/dirs/6.0.0 \
- crate://crates.io/dirs-sys/0.5.0 \
- crate://crates.io/diskus/0.9.0 \
- crate://crates.io/dispatch2/0.3.0 \
crate://crates.io/displaydoc/0.2.5 \
- crate://crates.io/dlv-list/0.5.2 \
- crate://crates.io/doc-comment/0.3.4 \
- crate://crates.io/dotenvy/0.15.7 \
crate://crates.io/dunce/1.0.5 \
- crate://crates.io/dyn-clone/1.0.19 \
+ crate://crates.io/dyn-clone/1.0.20 \
crate://crates.io/either/1.15.0 \
- crate://crates.io/embed-manifest/1.5.0 \
crate://crates.io/encode_unicode/1.0.0 \
crate://crates.io/encoding_rs/0.8.35 \
crate://crates.io/encoding_rs_io/0.1.7 \
- crate://crates.io/endi/1.1.0 \
crate://crates.io/enumflags2/0.7.12 \
crate://crates.io/enumflags2_derive/0.7.12 \
- crate://crates.io/env_filter/1.0.0 \
- crate://crates.io/env_home/0.1.0 \
- crate://crates.io/env_logger/0.11.9 \
crate://crates.io/equivalent/1.0.2 \
- crate://crates.io/erased-serde/0.4.6 \
- crate://crates.io/errno/0.3.13 \
- crate://crates.io/etcetera/0.11.0 \
- crate://crates.io/euclid/0.22.11 \
- crate://crates.io/event-listener/5.4.0 \
- crate://crates.io/event-listener-strategy/0.5.4 \
+ crate://crates.io/erased-serde/0.4.10 \
+ crate://crates.io/errno/0.3.14 \
crate://crates.io/fastrand/2.3.0 \
- crate://crates.io/fdeflate/0.3.7 \
crate://crates.io/filetime/0.2.27 \
+ crate://crates.io/find-msvc-tools/0.1.9 \
crate://crates.io/fixedbitset/0.5.7 \
crate://crates.io/flate2/1.1.9 \
- crate://crates.io/float-cmp/0.9.0 \
- crate://crates.io/float-cmp/0.10.0 \
- crate://crates.io/fluent-uri/0.1.4 \
- crate://crates.io/fnv/1.0.7 \
crate://crates.io/foldhash/0.1.5 \
crate://crates.io/foldhash/0.2.0 \
- crate://crates.io/fontconfig-parser/0.5.8 \
- crate://crates.io/fontdb/0.23.0 \
crate://crates.io/form_urlencoded/1.2.2 \
crate://crates.io/fs-err/3.3.0 \
crate://crates.io/futures/0.3.32 \
@@ -179,675 +67,298 @@ SRC_URI += " \
crate://crates.io/futures-core/0.3.32 \
crate://crates.io/futures-executor/0.3.32 \
crate://crates.io/futures-io/0.3.32 \
- crate://crates.io/futures-lite/2.6.0 \
crate://crates.io/futures-macro/0.3.32 \
crate://crates.io/futures-sink/0.3.32 \
crate://crates.io/futures-task/0.3.32 \
crate://crates.io/futures-util/0.3.32 \
crate://crates.io/generic-array/0.14.7 \
- crate://crates.io/getrandom/0.2.16 \
crate://crates.io/getrandom/0.3.3 \
crate://crates.io/getrandom/0.4.1 \
- crate://crates.io/gif/0.14.1 \
- crate://crates.io/glob/0.3.3 \
crate://crates.io/globset/0.4.18 \
- crate://crates.io/globwalk/0.9.1 \
crate://crates.io/gloo-timers/0.3.0 \
- crate://crates.io/goblin/0.10.5 \
- crate://crates.io/h2/0.4.13 \
- crate://crates.io/half/2.6.0 \
- crate://crates.io/hashbrown/0.14.5 \
crate://crates.io/hashbrown/0.15.5 \
crate://crates.io/hashbrown/0.16.1 \
crate://crates.io/heck/0.5.0 \
- crate://crates.io/hermit-abi/0.5.2 \
crate://crates.io/hex/0.4.3 \
- crate://crates.io/hkdf/0.12.4 \
- crate://crates.io/hmac/0.12.1 \
- crate://crates.io/homedir/0.3.6 \
- crate://crates.io/html-escape/0.2.13 \
- crate://crates.io/http/1.4.0 \
- crate://crates.io/http-body/1.0.1 \
- crate://crates.io/http-body-util/0.1.3 \
- crate://crates.io/http-content-range/0.2.3 \
- crate://crates.io/httparse/1.10.1 \
- crate://crates.io/httpdate/1.0.3 \
- crate://crates.io/hyper/1.8.1 \
- crate://crates.io/hyper-rustls/0.27.7 \
- crate://crates.io/hyper-util/0.1.20 \
- crate://crates.io/icu_collections/2.0.0 \
- crate://crates.io/icu_locale_core/2.0.0 \
- crate://crates.io/icu_normalizer/2.0.0 \
- crate://crates.io/icu_normalizer_data/2.0.0 \
- crate://crates.io/icu_properties/2.0.1 \
- crate://crates.io/icu_properties_data/2.0.1 \
- crate://crates.io/icu_provider/2.0.0 \
+ crate://crates.io/icu_collections/2.1.1 \
+ crate://crates.io/icu_locale_core/2.1.1 \
+ crate://crates.io/icu_normalizer/2.1.1 \
+ crate://crates.io/icu_normalizer_data/2.1.1 \
+ crate://crates.io/icu_properties/2.1.2 \
+ crate://crates.io/icu_properties_data/2.1.2 \
+ crate://crates.io/icu_provider/2.1.1 \
crate://crates.io/id-arena/2.3.0 \
crate://crates.io/idna/1.1.0 \
crate://crates.io/idna_adapter/1.2.1 \
- crate://crates.io/ignore/0.4.25 \
- crate://crates.io/image/0.25.6 \
- crate://crates.io/image-webp/0.2.4 \
- crate://crates.io/imagesize/0.14.0 \
- crate://crates.io/indexmap/2.13.0 \
- crate://crates.io/indicatif/0.18.4 \
+ crate://crates.io/indexmap/2.13.1 \
crate://crates.io/indoc/2.0.7 \
- crate://crates.io/inout/0.1.4 \
- crate://crates.io/insta/1.46.3 \
- crate://crates.io/ipnet/2.11.0 \
- crate://crates.io/iri-string/0.7.8 \
- crate://crates.io/is-docker/0.2.0 \
- crate://crates.io/is-terminal/0.4.16 \
- crate://crates.io/is-wsl/0.4.0 \
- crate://crates.io/is_ci/1.2.0 \
- crate://crates.io/is_terminal_polyfill/1.70.1 \
- crate://crates.io/itertools/0.10.5 \
- crate://crates.io/itertools/0.13.0 \
+ crate://crates.io/insta/1.47.2 \
+ crate://crates.io/is_terminal_polyfill/1.70.2 \
crate://crates.io/itertools/0.14.0 \
- crate://crates.io/itoa/1.0.15 \
- crate://crates.io/jiff/0.2.22 \
- crate://crates.io/jiff-static/0.2.22 \
- crate://crates.io/jiff-tzdb/0.1.4 \
+ crate://crates.io/itoa/1.0.17 \
+ crate://crates.io/jiff/0.2.23 \
+ crate://crates.io/jiff-static/0.2.23 \
+ crate://crates.io/jiff-tzdb/0.1.6 \
crate://crates.io/jiff-tzdb-platform/0.1.3 \
crate://crates.io/jobserver/0.1.34 \
- crate://crates.io/js-sys/0.3.77 \
- crate://crates.io/jsonwebtoken/9.3.1 \
+ crate://crates.io/js-sys/0.3.91 \
crate://crates.io/junction/1.4.2 \
- crate://crates.io/kurbo/0.13.0 \
crate://crates.io/lazy_static/1.5.0 \
crate://crates.io/leb128fmt/0.1.0 \
crate://crates.io/libbz2-rs-sys/0.2.2 \
- crate://crates.io/libc/0.2.180 \
- crate://crates.io/libm/0.2.15 \
- crate://crates.io/libmimalloc-sys/0.1.44 \
- crate://crates.io/libredox/0.1.12 \
- crate://crates.io/linux-raw-sys/0.11.0 \
- crate://crates.io/litemap/0.8.0 \
- crate://crates.io/lock_api/0.4.13 \
+ crate://crates.io/libc/0.2.183 \
+ crate://crates.io/libredox/0.1.14 \
+ crate://crates.io/linux-raw-sys/0.12.1 \
+ crate://crates.io/litemap/0.8.1 \
+ crate://crates.io/lock_api/0.4.14 \
crate://crates.io/log/0.4.29 \
- crate://crates.io/lru-slab/0.1.2 \
- crate://crates.io/lzma-rust2/0.16.1 \
- crate://crates.io/lzma-sys/0.1.20 \
+ crate://crates.io/lzma-rust2/0.16.2 \
crate://crates.io/mailparse/0.16.1 \
- crate://crates.io/markdown/1.0.0 \
crate://crates.io/matchers/0.2.0 \
- crate://crates.io/md-5/0.10.6 \
crate://crates.io/memchr/2.8.0 \
- crate://crates.io/memmap2/0.9.7 \
- crate://crates.io/memoffset/0.9.1 \
- crate://crates.io/miette/7.6.0 \
- crate://crates.io/miette-derive/7.6.0 \
- crate://crates.io/mimalloc/0.1.48 \
- crate://crates.io/mime/0.3.17 \
- crate://crates.io/mime_guess/2.0.5 \
- crate://crates.io/minimal-lexical/0.2.1 \
crate://crates.io/miniz_oxide/0.8.9 \
- crate://crates.io/mio/1.1.0 \
- crate://crates.io/miow/0.6.1 \
- crate://crates.io/munge/0.4.5 \
- crate://crates.io/munge_macro/0.4.5 \
- crate://crates.io/nanoid/0.4.0 \
- crate://crates.io/nix/0.30.1 \
- crate://crates.io/nix/0.31.1 \
- crate://crates.io/nom/7.1.3 \
- crate://crates.io/normalize-line-endings/0.3.0 \
- crate://crates.io/nu-ansi-term/0.50.1 \
- crate://crates.io/num/0.4.3 \
- crate://crates.io/num-bigint/0.4.6 \
- crate://crates.io/num-bigint-dig/0.8.6 \
- crate://crates.io/num-complex/0.4.6 \
- crate://crates.io/num-conv/0.2.0 \
- crate://crates.io/num-integer/0.1.46 \
- crate://crates.io/num-iter/0.1.45 \
- crate://crates.io/num-rational/0.4.2 \
- crate://crates.io/num-traits/0.2.19 \
- crate://crates.io/num_cpus/1.17.0 \
- crate://crates.io/objc2/0.6.3 \
- crate://crates.io/objc2-encode/4.1.0 \
- crate://crates.io/oid-registry/0.8.1 \
- crate://crates.io/once_cell/1.21.3 \
- crate://crates.io/once_cell_polyfill/1.70.1 \
- crate://crates.io/oorandom/11.1.5 \
- crate://crates.io/open/5.3.3 \
- crate://crates.io/openssl-probe/0.1.6 \
- crate://crates.io/option-ext/0.2.0 \
- crate://crates.io/ordered-float/4.6.0 \
- crate://crates.io/ordered-multimap/0.7.3 \
- crate://crates.io/ordered-stream/0.2.0 \
- crate://crates.io/os_str_bytes/6.6.1 \
+ crate://crates.io/mio/1.2.0 \
+ crate://crates.io/munge/0.4.7 \
+ crate://crates.io/munge_macro/0.4.7 \
+ crate://crates.io/nu-ansi-term/0.50.3 \
+ crate://crates.io/once_cell/1.21.4 \
+ crate://crates.io/once_cell_polyfill/1.70.2 \
crate://crates.io/owo-colors/4.3.0 \
- crate://crates.io/parking/2.2.1 \
- crate://crates.io/parking_lot/0.12.4 \
- crate://crates.io/parking_lot_core/0.9.11 \
- crate://crates.io/paste/1.0.15 \
+ crate://crates.io/parking_lot/0.12.5 \
+ crate://crates.io/parking_lot_core/0.9.12 \
crate://crates.io/path-slash/0.2.1 \
- crate://crates.io/pathdiff/0.2.3 \
- crate://crates.io/pbkdf2/0.12.2 \
- crate://crates.io/pem/3.0.6 \
- crate://crates.io/pem-rfc7468/0.7.0 \
crate://crates.io/percent-encoding/2.3.2 \
- crate://crates.io/pest/2.8.1 \
- crate://crates.io/pest_derive/2.8.1 \
- crate://crates.io/pest_generator/2.8.1 \
- crate://crates.io/pest_meta/2.8.1 \
+ crate://crates.io/pest/2.8.6 \
+ crate://crates.io/pest_derive/2.8.6 \
+ crate://crates.io/pest_generator/2.8.6 \
+ crate://crates.io/pest_meta/2.8.6 \
crate://crates.io/petgraph/0.8.3 \
- crate://crates.io/pico-args/0.5.0 \
- crate://crates.io/pin-project/1.1.10 \
- crate://crates.io/pin-project-internal/1.1.10 \
- crate://crates.io/pin-project-lite/0.2.16 \
- crate://crates.io/pin-utils/0.1.0 \
- crate://crates.io/pkcs1/0.7.5 \
- crate://crates.io/pkcs5/0.7.1 \
- crate://crates.io/pkcs8/0.10.2 \
+ crate://crates.io/pin-project-lite/0.2.17 \
crate://crates.io/pkg-config/0.3.32 \
crate://crates.io/plain/0.2.3 \
- crate://crates.io/png/0.18.1 \
- crate://crates.io/poloto/19.1.2 \
crate://crates.io/portable-atomic/1.13.1 \
- crate://crates.io/portable-atomic-util/0.2.4 \
- crate://crates.io/potential_utf/0.1.2 \
- crate://crates.io/powerfmt/0.2.0 \
- crate://crates.io/ppv-lite86/0.2.21 \
- crate://crates.io/predicates/3.1.4 \
- crate://crates.io/predicates-core/1.0.9 \
- crate://crates.io/predicates-tree/1.0.12 \
- crate://crates.io/pretty_assertions/1.4.1 \
+ crate://crates.io/portable-atomic-util/0.2.6 \
+ crate://crates.io/potential_utf/0.1.4 \
crate://crates.io/prettyplease/0.2.37 \
- crate://crates.io/priority-queue/2.5.0 \
- crate://crates.io/proc-macro-crate/3.3.0 \
crate://crates.io/proc-macro2/1.0.106 \
- crate://crates.io/procfs/0.18.0 \
- crate://crates.io/procfs-core/0.18.0 \
- crate://crates.io/ptr_meta/0.3.0 \
- crate://crates.io/ptr_meta_derive/0.3.0 \
- crate://crates.io/purl/0.1.6 \
- crate://crates.io/quick-error/2.0.1 \
- crate://crates.io/quick-xml/0.38.3 \
- crate://crates.io/quinn/0.11.8 \
- crate://crates.io/quinn-proto/0.11.14 \
- crate://crates.io/quinn-udp/0.5.13 \
- crate://crates.io/quote/1.0.44 \
+ crate://crates.io/ptr_meta/0.3.1 \
+ crate://crates.io/ptr_meta_derive/0.3.1 \
+ crate://crates.io/quote/1.0.45 \
crate://crates.io/quoted_printable/0.5.1 \
crate://crates.io/r-efi/5.3.0 \
- crate://crates.io/rancor/0.1.0 \
- crate://crates.io/rand/0.8.5 \
- crate://crates.io/rand/0.9.2 \
- crate://crates.io/rand_chacha/0.3.1 \
- crate://crates.io/rand_chacha/0.9.0 \
- crate://crates.io/rand_core/0.6.4 \
- crate://crates.io/rand_core/0.9.3 \
- crate://crates.io/rayon/1.11.0 \
- crate://crates.io/rayon-core/1.13.0 \
- crate://crates.io/rcgen/0.14.7 \
+ crate://crates.io/rancor/0.1.1 \
crate://crates.io/redox_syscall/0.5.15 \
crate://crates.io/redox_syscall/0.7.0 \
- crate://crates.io/redox_users/0.5.0 \
crate://crates.io/ref-cast/1.0.25 \
crate://crates.io/ref-cast-impl/1.0.25 \
crate://crates.io/reflink-copy/0.1.29 \
crate://crates.io/regex/1.12.3 \
crate://crates.io/regex-automata/0.4.14 \
- crate://crates.io/regex-syntax/0.8.5 \
- crate://crates.io/rend/0.5.2 \
- crate://crates.io/reqsign/0.18.1 \
- crate://crates.io/reqsign-aws-v4/2.0.1 \
- crate://crates.io/reqsign-command-execute-tokio/2.0.1 \
- crate://crates.io/reqsign-core/2.0.1 \
- crate://crates.io/reqsign-file-read-tokio/2.0.1 \
- crate://crates.io/reqsign-google/2.0.1 \
- crate://crates.io/reqsign-http-send-reqwest/2.0.1 \
- crate://crates.io/reqwest/0.12.22 \
- crate://crates.io/resvg/0.47.0 \
- crate://crates.io/retry-policies/0.5.1 \
- crate://crates.io/rgb/0.8.52 \
- crate://crates.io/ring/0.17.14 \
+ crate://crates.io/regex-syntax/0.8.10 \
+ crate://crates.io/rend/0.5.3 \
crate://crates.io/rkyv/0.8.15 \
crate://crates.io/rkyv_derive/0.8.15 \
- crate://crates.io/rmp/0.8.14 \
- crate://crates.io/rmp-serde/1.3.1 \
- crate://crates.io/roxmltree/0.20.0 \
- crate://crates.io/roxmltree/0.21.1 \
- crate://crates.io/rsa/0.9.10 \
- crate://crates.io/rust-ini/0.21.3 \
- crate://crates.io/rust-netrc/0.1.2 \
- crate://crates.io/rustc-hash/2.1.1 \
- crate://crates.io/rusticata-macros/4.1.0 \
- crate://crates.io/rustix/1.1.3 \
- crate://crates.io/rustls/0.23.37 \
- crate://crates.io/rustls-native-certs/0.8.2 \
- crate://crates.io/rustls-pki-types/1.13.3 \
- crate://crates.io/rustls-webpki/0.103.8 \
- crate://crates.io/rustversion/1.0.21 \
- crate://crates.io/rustybuzz/0.20.1 \
- crate://crates.io/ryu/1.0.20 \
- crate://crates.io/salsa20/0.10.2 \
+ crate://crates.io/rustc-hash/2.1.2 \
+ crate://crates.io/rustix/1.1.4 \
+ crate://crates.io/rustversion/1.0.22 \
+ crate://crates.io/ryu/1.0.23 \
crate://crates.io/same-file/1.0.6 \
- crate://crates.io/schannel/0.1.27 \
crate://crates.io/schemars/1.2.1 \
crate://crates.io/schemars_derive/1.2.1 \
crate://crates.io/scopeguard/1.2.0 \
- crate://crates.io/scroll/0.13.0 \
- crate://crates.io/scroll_derive/0.13.0 \
- crate://crates.io/scrypt/0.11.0 \
crate://crates.io/seahash/4.1.0 \
- crate://crates.io/secrecy/0.10.3 \
- crate://crates.io/secret-service/5.1.0 \
- crate://crates.io/security-framework/3.7.0 \
- crate://crates.io/security-framework-sys/2.17.0 \
- crate://crates.io/self-replace/1.5.0 \
- crate://crates.io/semver/1.0.26 \
+ crate://crates.io/semver/1.0.27 \
crate://crates.io/serde/1.0.228 \
crate://crates.io/serde-untagged/0.1.9 \
crate://crates.io/serde_core/1.0.228 \
crate://crates.io/serde_derive/1.0.228 \
crate://crates.io/serde_derive_internals/0.29.1 \
crate://crates.io/serde_json/1.0.149 \
- crate://crates.io/serde_repr/0.1.20 \
crate://crates.io/serde_spanned/1.0.4 \
- crate://crates.io/serde_urlencoded/0.7.1 \
- crate://crates.io/serde_yaml/0.9.34+deprecated \
- crate://crates.io/sha1/0.10.6 \
crate://crates.io/sha2/0.10.9 \
crate://crates.io/sharded-slab/0.1.7 \
- crate://crates.io/shell-escape/0.1.5 \
- crate://crates.io/shellexpand/3.1.1 \
crate://crates.io/shlex/1.3.0 \
- crate://crates.io/signal-hook-registry/1.4.5 \
- crate://crates.io/signature/2.2.0 \
- crate://crates.io/simd-adler32/0.3.7 \
+ crate://crates.io/signal-hook-registry/1.4.8 \
+ crate://crates.io/simd-adler32/0.3.8 \
crate://crates.io/simdutf8/0.1.5 \
crate://crates.io/similar/2.7.0 \
- crate://crates.io/simple_asn1/0.6.3 \
- crate://crates.io/simplecss/0.2.2 \
- crate://crates.io/siphasher/1.0.1 \
- crate://crates.io/slab/0.4.11 \
- crate://crates.io/slotmap/1.1.1 \
+ crate://crates.io/slab/0.4.12 \
crate://crates.io/smallvec/1.15.1 \
crate://crates.io/smawk/0.3.2 \
- crate://crates.io/socket2/0.5.10 \
- crate://crates.io/socket2/0.6.0 \
- crate://crates.io/spdx/0.10.9 \
crate://crates.io/spdx/0.13.4 \
- crate://crates.io/spin/0.9.8 \
- crate://crates.io/spki/0.7.3 \
- crate://crates.io/stable_deref_trait/1.2.0 \
- crate://crates.io/static_assertions/1.1.0 \
- crate://crates.io/statrs/0.18.0 \
- crate://crates.io/strict-num/0.1.1 \
+ crate://crates.io/stable_deref_trait/1.2.1 \
crate://crates.io/strsim/0.11.1 \
- crate://crates.io/strum/0.26.3 \
- crate://crates.io/strum_macros/0.26.4 \
- crate://crates.io/subtle/2.6.1 \
- crate://crates.io/supports-color/3.0.2 \
- crate://crates.io/supports-hyperlinks/3.1.0 \
- crate://crates.io/supports-unicode/3.0.0 \
- crate://crates.io/svg/0.18.0 \
- crate://crates.io/svgtypes/0.16.1 \
crate://crates.io/syn/2.0.117 \
- crate://crates.io/sync_wrapper/1.0.2 \
crate://crates.io/synstructure/0.13.2 \
- crate://crates.io/system-configuration/0.7.0 \
- crate://crates.io/system-configuration-sys/0.6.0 \
- crate://crates.io/tagu/0.1.6 \
- crate://crates.io/tar/0.4.44 \
- crate://crates.io/target-lexicon/0.13.5 \
+ crate://crates.io/tar/0.4.45 \
crate://crates.io/temp-env/0.3.6 \
- crate://crates.io/tempfile/3.25.0 \
- crate://crates.io/terminal_size/0.4.2 \
- crate://crates.io/termtree/0.5.1 \
- crate://crates.io/test-case/3.3.1 \
- crate://crates.io/test-case-core/3.3.1 \
- crate://crates.io/test-case-macros/3.3.1 \
- crate://crates.io/test-log/0.2.19 \
- crate://crates.io/test-log-macros/0.2.19 \
+ crate://crates.io/tempfile/3.27.0 \
+ crate://crates.io/terminal_size/0.4.3 \
crate://crates.io/textwrap/0.16.2 \
- crate://crates.io/thiserror/1.0.69 \
crate://crates.io/thiserror/2.0.18 \
- crate://crates.io/thiserror-impl/1.0.69 \
crate://crates.io/thiserror-impl/2.0.18 \
crate://crates.io/thread_local/1.1.9 \
- crate://crates.io/tikv-jemalloc-sys/0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7 \
- crate://crates.io/tikv-jemallocator/0.6.1 \
- crate://crates.io/time/0.3.47 \
- crate://crates.io/time-core/0.1.8 \
- crate://crates.io/time-macros/0.2.27 \
- crate://crates.io/tiny-keccak/2.0.2 \
- crate://crates.io/tiny-skia/0.12.0 \
- crate://crates.io/tiny-skia-path/0.12.0 \
- crate://crates.io/tinystr/0.8.1 \
- crate://crates.io/tinytemplate/1.2.1 \
- crate://crates.io/tinyvec/1.9.0 \
+ crate://crates.io/tinystr/0.8.2 \
+ crate://crates.io/tinyvec/1.11.0 \
crate://crates.io/tinyvec_macros/0.1.1 \
- crate://crates.io/tokio/1.49.0 \
- crate://crates.io/tokio-macros/2.6.0 \
- crate://crates.io/tokio-rustls/0.26.4 \
- crate://crates.io/tokio-stream/0.1.18 \
- crate://crates.io/tokio-util/0.7.18 \
+ crate://crates.io/tokio/1.51.0 \
+ crate://crates.io/tokio-macros/2.7.0 \
crate://crates.io/toml/0.9.10+spec-1.1.0 \
- crate://crates.io/toml_datetime/0.6.11 \
crate://crates.io/toml_datetime/0.7.5+spec-1.1.0 \
- crate://crates.io/toml_edit/0.22.27 \
crate://crates.io/toml_edit/0.24.0+spec-1.1.0 \
- crate://crates.io/toml_parser/1.0.6+spec-1.1.0 \
+ crate://crates.io/toml_parser/1.0.9+spec-1.1.0 \
crate://crates.io/toml_writer/1.0.6+spec-1.1.0 \
- crate://crates.io/tower/0.5.2 \
- crate://crates.io/tower-http/0.6.6 \
- crate://crates.io/tower-layer/0.3.3 \
- crate://crates.io/tower-service/0.3.3 \
crate://crates.io/tracing/0.1.44 \
crate://crates.io/tracing-attributes/0.1.31 \
crate://crates.io/tracing-core/0.1.36 \
- crate://crates.io/tracing-durations-export/0.3.1 \
crate://crates.io/tracing-log/0.2.0 \
- crate://crates.io/tracing-serde/0.2.0 \
- crate://crates.io/tracing-subscriber/0.3.22 \
+ crate://crates.io/tracing-subscriber/0.3.23 \
crate://crates.io/tracing-test/0.2.6 \
crate://crates.io/tracing-test-macro/0.2.6 \
- crate://crates.io/tracing-tree/0.4.1 \
- crate://crates.io/try-lock/0.2.5 \
- crate://crates.io/ttf-parser/0.25.1 \
crate://crates.io/typed-path/0.12.3 \
crate://crates.io/typeid/1.0.3 \
- crate://crates.io/typenum/1.18.0 \
+ crate://crates.io/typenum/1.19.0 \
crate://crates.io/ucd-trie/0.1.7 \
- crate://crates.io/uds_windows/1.1.0 \
- crate://crates.io/unicase/2.8.1 \
- crate://crates.io/unicode-bidi/0.3.18 \
- crate://crates.io/unicode-bidi-mirroring/0.4.0 \
- crate://crates.io/unicode-ccc/0.4.0 \
- crate://crates.io/unicode-id/0.3.5 \
- crate://crates.io/unicode-ident/1.0.18 \
+ crate://crates.io/unicode-ident/1.0.24 \
crate://crates.io/unicode-linebreak/0.1.5 \
- crate://crates.io/unicode-properties/0.1.4 \
- crate://crates.io/unicode-script/0.5.7 \
- crate://crates.io/unicode-vo/0.1.0 \
- crate://crates.io/unicode-width/0.1.14 \
crate://crates.io/unicode-width/0.2.2 \
crate://crates.io/unicode-xid/0.2.6 \
- crate://crates.io/unit-prefix/0.5.1 \
- crate://crates.io/unsafe-libyaml/0.2.11 \
crate://crates.io/unscanny/0.1.0 \
- crate://crates.io/untrusted/0.9.0 \
crate://crates.io/url/2.5.8 \
- crate://crates.io/usvg/0.47.0 \
- crate://crates.io/utf8-width/0.1.7 \
crate://crates.io/utf8_iter/1.0.4 \
crate://crates.io/utf8parse/0.2.2 \
- crate://crates.io/uuid/1.21.0 \
+ crate://crates.io/uuid/1.23.0 \
crate://crates.io/valuable/0.1.1 \
crate://crates.io/version_check/0.9.5 \
- crate://crates.io/wait-timeout/0.2.1 \
crate://crates.io/walkdir/2.5.0 \
- crate://crates.io/want/0.3.1 \
crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \
- crate://crates.io/wasi/0.14.2+wasi-0.2.4 \
+ crate://crates.io/wasi/0.14.7+wasi-0.2.4 \
crate://crates.io/wasip2/1.0.2+wasi-0.2.9 \
crate://crates.io/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06 \
- crate://crates.io/wasite/1.0.2 \
- crate://crates.io/wasm-bindgen/0.2.100 \
- crate://crates.io/wasm-bindgen-backend/0.2.100 \
- crate://crates.io/wasm-bindgen-futures/0.4.50 \
- crate://crates.io/wasm-bindgen-macro/0.2.100 \
- crate://crates.io/wasm-bindgen-macro-support/0.2.100 \
- crate://crates.io/wasm-bindgen-shared/0.2.100 \
+ crate://crates.io/wasm-bindgen/0.2.114 \
+ crate://crates.io/wasm-bindgen-macro/0.2.114 \
+ crate://crates.io/wasm-bindgen-macro-support/0.2.114 \
+ crate://crates.io/wasm-bindgen-shared/0.2.114 \
crate://crates.io/wasm-encoder/0.244.0 \
crate://crates.io/wasm-metadata/0.244.0 \
- crate://crates.io/wasm-streams/0.4.2 \
crate://crates.io/wasmparser/0.244.0 \
- crate://crates.io/wasmtimer/0.4.2 \
- crate://crates.io/web-sys/0.3.77 \
- crate://crates.io/web-time/1.1.0 \
- crate://crates.io/webpki-roots/1.0.2 \
- crate://crates.io/weezl/0.1.10 \
- crate://crates.io/which/8.0.0 \
- crate://crates.io/whoami/2.1.0 \
- crate://crates.io/widestring/1.2.0 \
- crate://crates.io/winapi/0.3.9 \
- crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
- crate://crates.io/winapi-util/0.1.9 \
- crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.11 \
crate://crates.io/windows/0.61.3 \
crate://crates.io/windows-collections/0.2.0 \
crate://crates.io/windows-core/0.61.2 \
crate://crates.io/windows-future/0.2.1 \
- crate://crates.io/windows-implement/0.60.0 \
- crate://crates.io/windows-interface/0.59.1 \
+ crate://crates.io/windows-implement/0.60.2 \
+ crate://crates.io/windows-interface/0.59.3 \
crate://crates.io/windows-link/0.1.3 \
crate://crates.io/windows-link/0.2.1 \
crate://crates.io/windows-numerics/0.2.0 \
- crate://crates.io/windows-registry/0.5.3 \
crate://crates.io/windows-result/0.3.4 \
crate://crates.io/windows-strings/0.4.2 \
crate://crates.io/windows-sys/0.52.0 \
- crate://crates.io/windows-sys/0.59.0 \
- crate://crates.io/windows-sys/0.61.0 \
+ crate://crates.io/windows-sys/0.60.2 \
+ crate://crates.io/windows-sys/0.61.2 \
crate://crates.io/windows-targets/0.52.6 \
+ crate://crates.io/windows-targets/0.53.5 \
crate://crates.io/windows-threading/0.1.0 \
- crate://crates.io/windows-version/0.1.7 \
crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
+ crate://crates.io/windows_aarch64_gnullvm/0.53.1 \
crate://crates.io/windows_aarch64_msvc/0.52.6 \
+ crate://crates.io/windows_aarch64_msvc/0.53.1 \
crate://crates.io/windows_i686_gnu/0.52.6 \
+ crate://crates.io/windows_i686_gnu/0.53.1 \
crate://crates.io/windows_i686_gnullvm/0.52.6 \
+ crate://crates.io/windows_i686_gnullvm/0.53.1 \
crate://crates.io/windows_i686_msvc/0.52.6 \
+ crate://crates.io/windows_i686_msvc/0.53.1 \
crate://crates.io/windows_x86_64_gnu/0.52.6 \
+ crate://crates.io/windows_x86_64_gnu/0.53.1 \
crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
+ crate://crates.io/windows_x86_64_gnullvm/0.53.1 \
crate://crates.io/windows_x86_64_msvc/0.52.6 \
- crate://crates.io/winnow/0.7.13 \
- crate://crates.io/winsafe/0.0.19 \
- crate://crates.io/wiremock/0.6.5 \
+ crate://crates.io/windows_x86_64_msvc/0.53.1 \
+ crate://crates.io/winnow/0.7.15 \
crate://crates.io/wit-bindgen/0.51.0 \
crate://crates.io/wit-bindgen-core/0.51.0 \
- crate://crates.io/wit-bindgen-rt/0.39.0 \
crate://crates.io/wit-bindgen-rust/0.51.0 \
crate://crates.io/wit-bindgen-rust-macro/0.51.0 \
crate://crates.io/wit-component/0.244.0 \
crate://crates.io/wit-parser/0.244.0 \
- crate://crates.io/wmi/0.16.0 \
- crate://crates.io/writeable/0.6.1 \
- crate://crates.io/x509-parser/0.18.0 \
- crate://crates.io/xattr/1.5.1 \
- crate://crates.io/xml-rs/0.8.27 \
- crate://crates.io/xmlwriter/0.1.0 \
- crate://crates.io/xz2/0.1.7 \
- crate://crates.io/yansi/1.0.1 \
- crate://crates.io/yasna/0.5.2 \
- crate://crates.io/yoke/0.8.0 \
- crate://crates.io/yoke-derive/0.8.0 \
- crate://crates.io/zbus/5.8.0 \
- crate://crates.io/zbus_macros/5.8.0 \
- crate://crates.io/zbus_names/4.2.0 \
- crate://crates.io/zerocopy/0.8.26 \
- crate://crates.io/zerocopy-derive/0.8.26 \
+ crate://crates.io/writeable/0.6.2 \
+ crate://crates.io/xattr/1.6.1 \
+ crate://crates.io/yoke/0.8.1 \
+ crate://crates.io/yoke-derive/0.8.1 \
crate://crates.io/zerofrom/0.1.6 \
crate://crates.io/zerofrom-derive/0.1.6 \
- crate://crates.io/zeroize/1.8.2 \
- crate://crates.io/zerotrie/0.2.2 \
- crate://crates.io/zerovec/0.11.2 \
- crate://crates.io/zerovec-derive/0.11.1 \
+ crate://crates.io/zerotrie/0.2.3 \
+ crate://crates.io/zerovec/0.11.5 \
+ crate://crates.io/zerovec-derive/0.11.2 \
crate://crates.io/zip/8.1.0 \
- crate://crates.io/zlib-rs/0.6.2 \
- crate://crates.io/zmij/1.0.15 \
+ crate://crates.io/zlib-rs/0.6.3 \
+ crate://crates.io/zmij/1.0.21 \
crate://crates.io/zopfli/0.8.3 \
crate://crates.io/zstd/0.13.3 \
crate://crates.io/zstd-safe/7.2.4 \
- crate://crates.io/zstd-sys/2.0.15+zstd.1.5.7 \
- crate://crates.io/zune-core/0.5.1 \
- crate://crates.io/zune-jpeg/0.5.10 \
- crate://crates.io/zvariant/5.6.0 \
- crate://crates.io/zvariant_derive/5.6.0 \
- crate://crates.io/zvariant_utils/3.2.0 \
+ crate://crates.io/zstd-sys/2.0.16+zstd.1.5.7 \
"
SRC_URI[adler2-2.0.1.sha256sum] = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
-SRC_URI[aes-0.8.4.sha256sum] = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
-SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+SRC_URI[aho-corasick-1.1.4.sha256sum] = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
SRC_URI[allocator-api2-0.2.21.sha256sum] = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
-SRC_URI[ambient-id-0.0.10.sha256sum] = "e61320f0a8ca54a235b0e49307b16dcade6eecd441b1f8a8c7ca9204056cb17c"
-SRC_URI[anes-0.1.6.sha256sum] = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
-SRC_URI[anstream-0.6.21.sha256sum] = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
SRC_URI[anstream-1.0.0.sha256sum] = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
-SRC_URI[anstyle-1.0.11.sha256sum] = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
-SRC_URI[anstyle-parse-0.2.7.sha256sum] = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
+SRC_URI[anstyle-1.0.14.sha256sum] = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
SRC_URI[anstyle-parse-1.0.0.sha256sum] = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
-SRC_URI[anstyle-query-1.1.3.sha256sum] = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
-SRC_URI[anstyle-wincon-3.0.9.sha256sum] = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
+SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
+SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
SRC_URI[anyhow-1.0.102.sha256sum] = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
-SRC_URI[approx-0.5.1.sha256sum] = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
SRC_URI[arcstr-1.2.0.sha256sum] = "03918c3dbd7701a85c6b9887732e2921175f26c350b4563841d0958c21d57e6d"
-SRC_URI[arrayref-0.3.9.sha256sum] = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
-SRC_URI[arrayvec-0.7.6.sha256sum] = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
-SRC_URI[asn1-rs-0.7.1.sha256sum] = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60"
-SRC_URI[asn1-rs-derive-0.6.0.sha256sum] = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
-SRC_URI[asn1-rs-impl-0.2.0.sha256sum] = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
-SRC_URI[assert-json-diff-2.0.2.sha256sum] = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
-SRC_URI[assert_cmd-2.1.2.sha256sum] = "9c5bcfa8749ac45dd12cb11055aeeb6b27a3895560d60d71e3c23bf979e60514"
-SRC_URI[assert_fs-1.1.3.sha256sum] = "a652f6cb1f516886fcfee5e7a5c078b9ade62cfcb889524efe5a64d682dd27a9"
-SRC_URI[astral-pubgrub-0.3.3.sha256sum] = "d6cb15b4f5096a3a1b41fdc2736a1c33d87c78f34d3c1ec2b669e766edadd559"
-SRC_URI[astral-reqwest-middleware-0.4.2.sha256sum] = "638d02e24aeb92f9537897cd1ff82e2bc98fd9ac9575a503e27bb07cdf64d4d7"
-SRC_URI[astral-reqwest-retry-0.8.0.sha256sum] = "78ab210f6cdf8fd3254d47e5ee27ce60ed34a428ff71b4ae9477b1c84b49498c"
-SRC_URI[astral-tl-0.7.11.sha256sum] = "d90933ffb0f97e2fc2e0de21da9d3f20597b804012d199843a6fe7c2810d28f3"
-SRC_URI[astral-tokio-tar-0.5.6.sha256sum] = "ec179a06c1769b1e42e1e2cbe74c7dcdb3d6383c838454d063eaac5bbb7ebbe5"
SRC_URI[astral-version-ranges-0.1.4.sha256sum] = "31979bc305610246d78ac01d63467a12d8454c6e3b8b22b5811d343a1198dfbb"
-SRC_URI[astral_async_http_range_reader-0.9.1.sha256sum] = "7ddaca0fbbf0d91103cca7c7611790c65f6eff1d456f7fe6bf565d436dc9b8f3"
-SRC_URI[astral_async_zip-0.0.17.sha256sum] = "ab72a761e6085828cc8f0e05ed332b2554701368c5dc54de551bfaec466518ba"
-SRC_URI[async-broadcast-0.7.2.sha256sum] = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
-SRC_URI[async-channel-2.5.0.sha256sum] = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
-SRC_URI[async-compression-0.4.19.sha256sum] = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c"
-SRC_URI[async-recursion-1.1.1.sha256sum] = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
-SRC_URI[async-trait-0.1.89.sha256sum] = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
-SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
SRC_URI[autocfg-1.5.0.sha256sum] = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
-SRC_URI[axoasset-1.3.0.sha256sum] = "56b3b6c5d71b918c0f42f43f69b303d7529b4233a598d9d61759d75f0f2a44a2"
-SRC_URI[axoprocess-0.2.1.sha256sum] = "8a4b4798a6c02e91378537c63cd6e91726900b595450daa5d487bc3c11e95e1b"
-SRC_URI[axotag-0.3.0.sha256sum] = "dc923121fbc4cc72e9008436b5650b98e56f94b5799df59a1b4f572b5c6a7e6b"
-SRC_URI[axoupdater-0.9.1.sha256sum] = "dc482a1926df098f4e3806b834f3fe73a1ab54b24ab0ac481f72de479af5e982"
SRC_URI[backon-1.6.0.sha256sum] = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"
-SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-SRC_URI[base64ct-1.8.2.sha256sum] = "7d809780667f4410e7c41b07f52439b94d2bdf8528eeedc287fa38d3b7f95d82"
-SRC_URI[bisection-0.1.0.sha256sum] = "021e079a1bab0ecce6cf4b4b74c0c37afa4a697136eb3b127875c84a8f04a8c3"
-SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
SRC_URI[bitflags-2.11.0.sha256sum] = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
-SRC_URI[blake2-0.10.6.sha256sum] = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-SRC_URI[block-padding-0.3.3.sha256sum] = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
-SRC_URI[block2-0.6.2.sha256sum] = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
SRC_URI[boxcar-0.2.14.sha256sum] = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e"
-SRC_URI[bstr-1.12.0.sha256sum] = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4"
-SRC_URI[bumpalo-3.19.0.sha256sum] = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+SRC_URI[bstr-1.12.1.sha256sum] = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
+SRC_URI[bumpalo-3.20.2.sha256sum] = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
SRC_URI[bytecheck-0.8.2.sha256sum] = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b"
SRC_URI[bytecheck_derive-0.8.2.sha256sum] = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9"
-SRC_URI[bytemuck-1.25.0.sha256sum] = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
-SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-SRC_URI[byteorder-lite-0.1.0.sha256sum] = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
SRC_URI[bytes-1.11.1.sha256sum] = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
-SRC_URI[bzip2-0.5.2.sha256sum] = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47"
SRC_URI[bzip2-0.6.1.sha256sum] = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c"
-SRC_URI[bzip2-sys-0.1.13+1.0.8.sha256sum] = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
-SRC_URI[camino-1.1.10.sha256sum] = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
-SRC_URI[cargo-util-0.2.26.sha256sum] = "f70b0c7772872ac3234e46a6591091d4da57f0c3aa24c381776ed1550624a14b"
-SRC_URI[cast-0.3.0.sha256sum] = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
-SRC_URI[cbc-0.1.2.sha256sum] = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
-SRC_URI[cc-1.2.30.sha256sum] = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
-SRC_URI[cfg-if-1.0.1.sha256sum] = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
-SRC_URI[cfg_aliases-0.2.1.sha256sum] = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+SRC_URI[cc-1.2.57.sha256sum] = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
+SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
SRC_URI[charset-0.1.5.sha256sum] = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e"
-SRC_URI[ciborium-0.2.2.sha256sum] = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
-SRC_URI[ciborium-io-0.2.2.sha256sum] = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
-SRC_URI[ciborium-ll-0.2.2.sha256sum] = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
-SRC_URI[cipher-0.4.4.sha256sum] = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
-SRC_URI[clap-4.5.60.sha256sum] = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
-SRC_URI[clap_builder-4.5.60.sha256sum] = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
-SRC_URI[clap_complete-4.5.55.sha256sum] = "a5abde44486daf70c5be8b8f8f1b66c49f86236edf6fa2abadb4d961c4c6229a"
-SRC_URI[clap_complete_command-0.6.1.sha256sum] = "da8e198c052315686d36371e8a3c5778b7852fc75cc313e4e11eeb7a644a1b62"
-SRC_URI[clap_complete_nushell-4.5.8.sha256sum] = "0a0c951694691e65bf9d421d597d68416c22de9632e884c28412cb8cd8b73dce"
-SRC_URI[clap_derive-4.5.55.sha256sum] = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
-SRC_URI[clap_lex-1.0.0.sha256sum] = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831"
-SRC_URI[codspeed-4.3.0.sha256sum] = "38c2eb3388ebe26b5a0ab6bf4969d9c4840143d7f6df07caa3cc851b0606cef6"
-SRC_URI[codspeed-criterion-compat-4.3.0.sha256sum] = "e1e270597a1d1e183f86d1cc9f94f0133654ee3daf201c17903ee29363555dd7"
-SRC_URI[codspeed-criterion-compat-walltime-4.3.0.sha256sum] = "e6c2613d2fac930fe34456be76f9124ee0800bb9db2e7fd2d6c65b9ebe98a292"
-SRC_URI[color_quant-1.1.0.sha256sum] = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
-SRC_URI[colorchoice-1.0.4.sha256sum] = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
-SRC_URI[colored-2.2.0.sha256sum] = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
-SRC_URI[concurrent-queue-2.5.0.sha256sum] = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
-SRC_URI[configparser-3.1.0.sha256sum] = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b"
-SRC_URI[console-0.15.11.sha256sum] = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
-SRC_URI[console-0.16.2.sha256sum] = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
-SRC_URI[const-oid-0.9.6.sha256sum] = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
-SRC_URI[const-random-0.1.18.sha256sum] = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
-SRC_URI[const-random-macro-0.1.16.sha256sum] = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
-SRC_URI[core-foundation-0.9.4.sha256sum] = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-SRC_URI[core-foundation-0.10.1.sha256sum] = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
-SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-SRC_URI[core_maths-0.1.1.sha256sum] = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
+SRC_URI[clap-4.6.0.sha256sum] = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
+SRC_URI[clap_builder-4.6.0.sha256sum] = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
+SRC_URI[clap_derive-4.6.0.sha256sum] = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
+SRC_URI[clap_lex-1.1.0.sha256sum] = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
+SRC_URI[colorchoice-1.0.5.sha256sum] = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
+SRC_URI[console-0.16.3.sha256sum] = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
SRC_URI[cpufeatures-0.2.17.sha256sum] = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
-SRC_URI[crc-3.3.0.sha256sum] = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
-SRC_URI[crc-catalog-2.4.0.sha256sum] = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
SRC_URI[crc32fast-1.5.0.sha256sum] = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
-SRC_URI[criterion-plot-0.5.0.sha256sum] = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
-SRC_URI[crossbeam-channel-0.5.15.sha256sum] = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
-SRC_URI[crossbeam-deque-0.8.6.sha256sum] = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
-SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-SRC_URI[crossbeam-utils-0.8.21.sha256sum] = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
-SRC_URI[crunchy-0.2.4.sha256sum] = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
-SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[crypto-common-0.1.7.sha256sum] = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
SRC_URI[csv-1.4.0.sha256sum] = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938"
-SRC_URI[csv-core-0.1.12.sha256sum] = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d"
-SRC_URI[ctrlc-3.5.2.sha256sum] = "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162"
-SRC_URI[cyclonedx-bom-0.8.0.sha256sum] = "ce2ec98a191e17f63b92b132f6852462de9eaee03ca8dbf2df401b9fd809bcac"
-SRC_URI[cyclonedx-bom-macros-0.1.0.sha256sum] = "c50341f21df64b412b4f917e34b7aa786c092d64f3f905f478cb76950c7e980c"
-SRC_URI[dashmap-6.1.0.sha256sum] = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
+SRC_URI[csv-core-0.1.13.sha256sum] = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782"
SRC_URI[data-encoding-2.10.0.sha256sum] = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
-SRC_URI[data-url-0.3.2.sha256sum] = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
-SRC_URI[deadpool-0.12.3.sha256sum] = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b"
-SRC_URI[deadpool-runtime-0.1.4.sha256sum] = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"
-SRC_URI[der-0.7.10.sha256sum] = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
-SRC_URI[der-parser-10.0.0.sha256sum] = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6"
-SRC_URI[deranged-0.5.5.sha256sum] = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
-SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
-SRC_URI[difflib-0.4.0.sha256sum] = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-SRC_URI[dirs-6.0.0.sha256sum] = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
-SRC_URI[dirs-sys-0.5.0.sha256sum] = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
-SRC_URI[diskus-0.9.0.sha256sum] = "ec07379c016f78e7ddcd953663b9ed17928ff384928d34d824ed7e463bd3d908"
-SRC_URI[dispatch2-0.3.0.sha256sum] = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
-SRC_URI[dlv-list-0.5.2.sha256sum] = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
-SRC_URI[doc-comment-0.3.4.sha256sum] = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9"
-SRC_URI[dotenvy-0.15.7.sha256sum] = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
-SRC_URI[dyn-clone-1.0.19.sha256sum] = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+SRC_URI[dyn-clone-1.0.20.sha256sum] = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
SRC_URI[either-1.15.0.sha256sum] = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
-SRC_URI[embed-manifest-1.5.0.sha256sum] = "94cdc65b1cf9e871453ce2f86f5aaec24ff2eaa36a1fa3e02e441dddc3613b99"
SRC_URI[encode_unicode-1.0.0.sha256sum] = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
SRC_URI[encoding_rs-0.8.35.sha256sum] = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
SRC_URI[encoding_rs_io-0.1.7.sha256sum] = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83"
-SRC_URI[endi-1.1.0.sha256sum] = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
SRC_URI[enumflags2-0.7.12.sha256sum] = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
SRC_URI[enumflags2_derive-0.7.12.sha256sum] = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
-SRC_URI[env_filter-1.0.0.sha256sum] = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f"
-SRC_URI[env_home-0.1.0.sha256sum] = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
-SRC_URI[env_logger-0.11.9.sha256sum] = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d"
SRC_URI[equivalent-1.0.2.sha256sum] = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
-SRC_URI[erased-serde-0.4.6.sha256sum] = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
-SRC_URI[errno-0.3.13.sha256sum] = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
-SRC_URI[etcetera-0.11.0.sha256sum] = "de48cc4d1c1d97a20fd819def54b890cadde72ed3ad0c614822a0a433361be96"
-SRC_URI[euclid-0.22.11.sha256sum] = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48"
-SRC_URI[event-listener-5.4.0.sha256sum] = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
-SRC_URI[event-listener-strategy-0.5.4.sha256sum] = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
+SRC_URI[erased-serde-0.4.10.sha256sum] = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"
+SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
SRC_URI[fastrand-2.3.0.sha256sum] = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
-SRC_URI[fdeflate-0.3.7.sha256sum] = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
SRC_URI[filetime-0.2.27.sha256sum] = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db"
+SRC_URI[find-msvc-tools-0.1.9.sha256sum] = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
SRC_URI[fixedbitset-0.5.7.sha256sum] = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
SRC_URI[flate2-1.1.9.sha256sum] = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
-SRC_URI[float-cmp-0.9.0.sha256sum] = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
-SRC_URI[float-cmp-0.10.0.sha256sum] = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8"
-SRC_URI[fluent-uri-0.1.4.sha256sum] = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d"
-SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
SRC_URI[foldhash-0.1.5.sha256sum] = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
SRC_URI[foldhash-0.2.0.sha256sum] = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
-SRC_URI[fontconfig-parser-0.5.8.sha256sum] = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"
-SRC_URI[fontdb-0.23.0.sha256sum] = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905"
SRC_URI[form_urlencoded-1.2.2.sha256sum] = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
SRC_URI[fs-err-3.3.0.sha256sum] = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0"
SRC_URI[futures-0.3.32.sha256sum] = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
@@ -855,500 +366,235 @@ SRC_URI[futures-channel-0.3.32.sha256sum] = "07bbe89c50d7a535e539b8c17bc0b49bdb7
SRC_URI[futures-core-0.3.32.sha256sum] = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
SRC_URI[futures-executor-0.3.32.sha256sum] = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
SRC_URI[futures-io-0.3.32.sha256sum] = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
-SRC_URI[futures-lite-2.6.0.sha256sum] = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
SRC_URI[futures-macro-0.3.32.sha256sum] = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
SRC_URI[futures-sink-0.3.32.sha256sum] = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
SRC_URI[futures-task-0.3.32.sha256sum] = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
SRC_URI[futures-util-0.3.32.sha256sum] = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
-SRC_URI[getrandom-0.2.16.sha256sum] = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
SRC_URI[getrandom-0.3.3.sha256sum] = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
SRC_URI[getrandom-0.4.1.sha256sum] = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
-SRC_URI[gif-0.14.1.sha256sum] = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e"
-SRC_URI[glob-0.3.3.sha256sum] = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
SRC_URI[globset-0.4.18.sha256sum] = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
-SRC_URI[globwalk-0.9.1.sha256sum] = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
SRC_URI[gloo-timers-0.3.0.sha256sum] = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
-SRC_URI[goblin-0.10.5.sha256sum] = "983a6aafb3b12d4c41ea78d39e189af4298ce747353945ff5105b54a056e5cd9"
-SRC_URI[h2-0.4.13.sha256sum] = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
-SRC_URI[half-2.6.0.sha256sum] = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
-SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
SRC_URI[hashbrown-0.15.5.sha256sum] = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
SRC_URI[hashbrown-0.16.1.sha256sum] = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
-SRC_URI[hermit-abi-0.5.2.sha256sum] = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-SRC_URI[hkdf-0.12.4.sha256sum] = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
-SRC_URI[hmac-0.12.1.sha256sum] = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-SRC_URI[homedir-0.3.6.sha256sum] = "68df315d2857b2d8d2898be54a85e1d001bbbe0dbb5f8ef847b48dd3a23c4527"
-SRC_URI[html-escape-0.2.13.sha256sum] = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476"
-SRC_URI[http-1.4.0.sha256sum] = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
-SRC_URI[http-body-1.0.1.sha256sum] = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
-SRC_URI[http-body-util-0.1.3.sha256sum] = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
-SRC_URI[http-content-range-0.2.3.sha256sum] = "63f67baaf67a9ae8fae78ecee69294d552b764dbcd6f8735d0a9c9be20ab0c82"
-SRC_URI[httparse-1.10.1.sha256sum] = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
-SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
-SRC_URI[hyper-1.8.1.sha256sum] = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
-SRC_URI[hyper-rustls-0.27.7.sha256sum] = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
-SRC_URI[hyper-util-0.1.20.sha256sum] = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
-SRC_URI[icu_collections-2.0.0.sha256sum] = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
-SRC_URI[icu_locale_core-2.0.0.sha256sum] = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
-SRC_URI[icu_normalizer-2.0.0.sha256sum] = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
-SRC_URI[icu_normalizer_data-2.0.0.sha256sum] = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
-SRC_URI[icu_properties-2.0.1.sha256sum] = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
-SRC_URI[icu_properties_data-2.0.1.sha256sum] = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
-SRC_URI[icu_provider-2.0.0.sha256sum] = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
+SRC_URI[icu_collections-2.1.1.sha256sum] = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+SRC_URI[icu_locale_core-2.1.1.sha256sum] = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+SRC_URI[icu_normalizer-2.1.1.sha256sum] = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+SRC_URI[icu_normalizer_data-2.1.1.sha256sum] = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+SRC_URI[icu_properties-2.1.2.sha256sum] = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+SRC_URI[icu_properties_data-2.1.2.sha256sum] = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+SRC_URI[icu_provider-2.1.1.sha256sum] = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
SRC_URI[id-arena-2.3.0.sha256sum] = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
SRC_URI[idna-1.1.0.sha256sum] = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
SRC_URI[idna_adapter-1.2.1.sha256sum] = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
-SRC_URI[ignore-0.4.25.sha256sum] = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"
-SRC_URI[image-0.25.6.sha256sum] = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
-SRC_URI[image-webp-0.2.4.sha256sum] = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
-SRC_URI[imagesize-0.14.0.sha256sum] = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
-SRC_URI[indexmap-2.13.0.sha256sum] = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
-SRC_URI[indicatif-0.18.4.sha256sum] = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb"
+SRC_URI[indexmap-2.13.1.sha256sum] = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff"
SRC_URI[indoc-2.0.7.sha256sum] = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
-SRC_URI[inout-0.1.4.sha256sum] = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
-SRC_URI[insta-1.46.3.sha256sum] = "e82db8c87c7f1ccecb34ce0c24399b8a73081427f3c7c50a5d597925356115e4"
-SRC_URI[ipnet-2.11.0.sha256sum] = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
-SRC_URI[iri-string-0.7.8.sha256sum] = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
-SRC_URI[is-docker-0.2.0.sha256sum] = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
-SRC_URI[is-terminal-0.4.16.sha256sum] = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
-SRC_URI[is-wsl-0.4.0.sha256sum] = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
-SRC_URI[is_ci-1.2.0.sha256sum] = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"
-SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
-SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+SRC_URI[insta-1.47.2.sha256sum] = "7b4a6248eb93a4401ed2f37dfe8ea592d3cf05b7cf4f8efa867b6895af7e094e"
+SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
SRC_URI[itertools-0.14.0.sha256sum] = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
-SRC_URI[itoa-1.0.15.sha256sum] = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
-SRC_URI[jiff-0.2.22.sha256sum] = "819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2"
-SRC_URI[jiff-static-0.2.22.sha256sum] = "470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1"
-SRC_URI[jiff-tzdb-0.1.4.sha256sum] = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524"
+SRC_URI[itoa-1.0.17.sha256sum] = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
+SRC_URI[jiff-0.2.23.sha256sum] = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359"
+SRC_URI[jiff-static-0.2.23.sha256sum] = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4"
+SRC_URI[jiff-tzdb-0.1.6.sha256sum] = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076"
SRC_URI[jiff-tzdb-platform-0.1.3.sha256sum] = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
SRC_URI[jobserver-0.1.34.sha256sum] = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
-SRC_URI[js-sys-0.3.77.sha256sum] = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
-SRC_URI[jsonwebtoken-9.3.1.sha256sum] = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde"
+SRC_URI[js-sys-0.3.91.sha256sum] = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
SRC_URI[junction-1.4.2.sha256sum] = "8cfc352a66ba903c23239ef51e809508b6fc2b0f90e3476ac7a9ff47e863ae95"
-SRC_URI[kurbo-0.13.0.sha256sum] = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb"
SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
SRC_URI[leb128fmt-0.1.0.sha256sum] = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
SRC_URI[libbz2-rs-sys-0.2.2.sha256sum] = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7"
-SRC_URI[libc-0.2.180.sha256sum] = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
-SRC_URI[libm-0.2.15.sha256sum] = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
-SRC_URI[libmimalloc-sys-0.1.44.sha256sum] = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870"
-SRC_URI[libredox-0.1.12.sha256sum] = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
-SRC_URI[linux-raw-sys-0.11.0.sha256sum] = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
-SRC_URI[litemap-0.8.0.sha256sum] = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
-SRC_URI[lock_api-0.4.13.sha256sum] = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
+SRC_URI[libc-0.2.183.sha256sum] = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
+SRC_URI[libredox-0.1.14.sha256sum] = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
+SRC_URI[linux-raw-sys-0.12.1.sha256sum] = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
+SRC_URI[litemap-0.8.1.sha256sum] = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
SRC_URI[log-0.4.29.sha256sum] = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
-SRC_URI[lru-slab-0.1.2.sha256sum] = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
-SRC_URI[lzma-rust2-0.16.1.sha256sum] = "d673a11333485e7d8b93d62a9a5b07b22daf5e8a8655a44c1bb18aa4bf3d1524"
-SRC_URI[lzma-sys-0.1.20.sha256sum] = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
+SRC_URI[lzma-rust2-0.16.2.sha256sum] = "47bb1e988e6fb779cf720ad431242d3f03167c1b3f2b1aae7f1a94b2495b36ae"
SRC_URI[mailparse-0.16.1.sha256sum] = "60819a97ddcb831a5614eb3b0174f3620e793e97e09195a395bfa948fd68ed2f"
-SRC_URI[markdown-1.0.0.sha256sum] = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb"
SRC_URI[matchers-0.2.0.sha256sum] = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
-SRC_URI[md-5-0.10.6.sha256sum] = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
SRC_URI[memchr-2.8.0.sha256sum] = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
-SRC_URI[memmap2-0.9.7.sha256sum] = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28"
-SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
-SRC_URI[miette-7.6.0.sha256sum] = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7"
-SRC_URI[miette-derive-7.6.0.sha256sum] = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b"
-SRC_URI[mimalloc-0.1.48.sha256sum] = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8"
-SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-SRC_URI[mime_guess-2.0.5.sha256sum] = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
-SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
SRC_URI[miniz_oxide-0.8.9.sha256sum] = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
-SRC_URI[mio-1.1.0.sha256sum] = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
-SRC_URI[miow-0.6.1.sha256sum] = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08"
-SRC_URI[munge-0.4.5.sha256sum] = "9cce144fab80fbb74ec5b89d1ca9d41ddf6b644ab7e986f7d3ed0aab31625cb1"
-SRC_URI[munge_macro-0.4.5.sha256sum] = "574af9cd5b9971cbfdf535d6a8d533778481b241c447826d976101e0149392a1"
-SRC_URI[nanoid-0.4.0.sha256sum] = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8"
-SRC_URI[nix-0.30.1.sha256sum] = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
-SRC_URI[nix-0.31.1.sha256sum] = "225e7cfe711e0ba79a68baeddb2982723e4235247aefce1482f2f16c27865b66"
-SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
-SRC_URI[nu-ansi-term-0.50.1.sha256sum] = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
-SRC_URI[num-0.4.3.sha256sum] = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
-SRC_URI[num-bigint-0.4.6.sha256sum] = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
-SRC_URI[num-bigint-dig-0.8.6.sha256sum] = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
-SRC_URI[num-complex-0.4.6.sha256sum] = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
-SRC_URI[num-conv-0.2.0.sha256sum] = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
-SRC_URI[num-integer-0.1.46.sha256sum] = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
-SRC_URI[num-iter-0.1.45.sha256sum] = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
-SRC_URI[num-rational-0.4.2.sha256sum] = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
-SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-SRC_URI[num_cpus-1.17.0.sha256sum] = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
-SRC_URI[objc2-0.6.3.sha256sum] = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
-SRC_URI[objc2-encode-4.1.0.sha256sum] = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
-SRC_URI[oid-registry-0.8.1.sha256sum] = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7"
-SRC_URI[once_cell-1.21.3.sha256sum] = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
-SRC_URI[once_cell_polyfill-1.70.1.sha256sum] = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
-SRC_URI[oorandom-11.1.5.sha256sum] = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
-SRC_URI[open-5.3.3.sha256sum] = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc"
-SRC_URI[openssl-probe-0.1.6.sha256sum] = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
-SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-SRC_URI[ordered-float-4.6.0.sha256sum] = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
-SRC_URI[ordered-multimap-0.7.3.sha256sum] = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
-SRC_URI[ordered-stream-0.2.0.sha256sum] = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
-SRC_URI[os_str_bytes-6.6.1.sha256sum] = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
+SRC_URI[mio-1.2.0.sha256sum] = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
+SRC_URI[munge-0.4.7.sha256sum] = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c"
+SRC_URI[munge_macro-0.4.7.sha256sum] = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931"
+SRC_URI[nu-ansi-term-0.50.3.sha256sum] = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
+SRC_URI[once_cell-1.21.4.sha256sum] = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
SRC_URI[owo-colors-4.3.0.sha256sum] = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
-SRC_URI[parking-2.2.1.sha256sum] = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
-SRC_URI[parking_lot-0.12.4.sha256sum] = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
-SRC_URI[parking_lot_core-0.9.11.sha256sum] = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
-SRC_URI[paste-1.0.15.sha256sum] = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
SRC_URI[path-slash-0.2.1.sha256sum] = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
-SRC_URI[pathdiff-0.2.3.sha256sum] = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
-SRC_URI[pbkdf2-0.12.2.sha256sum] = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
-SRC_URI[pem-3.0.6.sha256sum] = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
-SRC_URI[pem-rfc7468-0.7.0.sha256sum] = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
SRC_URI[percent-encoding-2.3.2.sha256sum] = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
-SRC_URI[pest-2.8.1.sha256sum] = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323"
-SRC_URI[pest_derive-2.8.1.sha256sum] = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc"
-SRC_URI[pest_generator-2.8.1.sha256sum] = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966"
-SRC_URI[pest_meta-2.8.1.sha256sum] = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5"
+SRC_URI[pest-2.8.6.sha256sum] = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662"
+SRC_URI[pest_derive-2.8.6.sha256sum] = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77"
+SRC_URI[pest_generator-2.8.6.sha256sum] = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f"
+SRC_URI[pest_meta-2.8.6.sha256sum] = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220"
SRC_URI[petgraph-0.8.3.sha256sum] = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455"
-SRC_URI[pico-args-0.5.0.sha256sum] = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
-SRC_URI[pin-project-1.1.10.sha256sum] = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
-SRC_URI[pin-project-internal-1.1.10.sha256sum] = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
-SRC_URI[pin-project-lite-0.2.16.sha256sum] = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
-SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-SRC_URI[pkcs1-0.7.5.sha256sum] = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
-SRC_URI[pkcs5-0.7.1.sha256sum] = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6"
-SRC_URI[pkcs8-0.10.2.sha256sum] = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+SRC_URI[pin-project-lite-0.2.17.sha256sum] = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
SRC_URI[pkg-config-0.3.32.sha256sum] = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
-SRC_URI[png-0.18.1.sha256sum] = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
-SRC_URI[poloto-19.1.2.sha256sum] = "164dbd541c9832e92fa34452e9c2e98b515a548a3f8549fb2402fe1cd5e46b96"
SRC_URI[portable-atomic-1.13.1.sha256sum] = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
-SRC_URI[portable-atomic-util-0.2.4.sha256sum] = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
-SRC_URI[potential_utf-0.1.2.sha256sum] = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
-SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
-SRC_URI[ppv-lite86-0.2.21.sha256sum] = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
-SRC_URI[predicates-3.1.4.sha256sum] = "ada8f2932f28a27ee7b70dd6c1c39ea0675c55a36879ab92f3a715eaa1e63cfe"
-SRC_URI[predicates-core-1.0.9.sha256sum] = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa"
-SRC_URI[predicates-tree-1.0.12.sha256sum] = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c"
-SRC_URI[pretty_assertions-1.4.1.sha256sum] = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
+SRC_URI[portable-atomic-util-0.2.6.sha256sum] = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3"
+SRC_URI[potential_utf-0.1.4.sha256sum] = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
SRC_URI[prettyplease-0.2.37.sha256sum] = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
-SRC_URI[priority-queue-2.5.0.sha256sum] = "5676d703dda103cbb035b653a9f11448c0a7216c7926bd35fcb5865475d0c970"
-SRC_URI[proc-macro-crate-3.3.0.sha256sum] = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
SRC_URI[proc-macro2-1.0.106.sha256sum] = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
-SRC_URI[procfs-0.18.0.sha256sum] = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7"
-SRC_URI[procfs-core-0.18.0.sha256sum] = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
-SRC_URI[ptr_meta-0.3.0.sha256sum] = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90"
-SRC_URI[ptr_meta_derive-0.3.0.sha256sum] = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1"
-SRC_URI[purl-0.1.6.sha256sum] = "60ebe4262ae91ddd28c8721111a0a6e9e58860e211fc92116c4bb85c98fd96ad"
-SRC_URI[quick-error-2.0.1.sha256sum] = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
-SRC_URI[quick-xml-0.38.3.sha256sum] = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
-SRC_URI[quinn-0.11.8.sha256sum] = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8"
-SRC_URI[quinn-proto-0.11.14.sha256sum] = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
-SRC_URI[quinn-udp-0.5.13.sha256sum] = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970"
-SRC_URI[quote-1.0.44.sha256sum] = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
+SRC_URI[ptr_meta-0.3.1.sha256sum] = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79"
+SRC_URI[ptr_meta_derive-0.3.1.sha256sum] = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1"
+SRC_URI[quote-1.0.45.sha256sum] = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
SRC_URI[quoted_printable-0.5.1.sha256sum] = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73"
SRC_URI[r-efi-5.3.0.sha256sum] = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
-SRC_URI[rancor-0.1.0.sha256sum] = "caf5f7161924b9d1cea0e4cabc97c372cea92b5f927fc13c6bca67157a0ad947"
-SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-SRC_URI[rand-0.9.2.sha256sum] = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
-SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-SRC_URI[rand_chacha-0.9.0.sha256sum] = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
-SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-SRC_URI[rand_core-0.9.3.sha256sum] = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
-SRC_URI[rayon-1.11.0.sha256sum] = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
-SRC_URI[rayon-core-1.13.0.sha256sum] = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
-SRC_URI[rcgen-0.14.7.sha256sum] = "10b99e0098aa4082912d4c649628623db6aba77335e4f4569ff5083a6448b32e"
+SRC_URI[rancor-0.1.1.sha256sum] = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee"
SRC_URI[redox_syscall-0.5.15.sha256sum] = "7e8af0dde094006011e6a740d4879319439489813bd0bcdc7d821beaeeff48ec"
SRC_URI[redox_syscall-0.7.0.sha256sum] = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27"
-SRC_URI[redox_users-0.5.0.sha256sum] = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
SRC_URI[ref-cast-1.0.25.sha256sum] = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
SRC_URI[ref-cast-impl-1.0.25.sha256sum] = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
SRC_URI[reflink-copy-0.1.29.sha256sum] = "13362233b147e57674c37b802d216b7c5e3dcccbed8967c84f0d8d223868ae27"
SRC_URI[regex-1.12.3.sha256sum] = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
SRC_URI[regex-automata-0.4.14.sha256sum] = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
-SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
-SRC_URI[rend-0.5.2.sha256sum] = "a35e8a6bf28cd121053a66aa2e6a2e3eaffad4a60012179f0e864aa5ffeff215"
-SRC_URI[reqsign-0.18.1.sha256sum] = "ea386ba750000b6e59f760a08bdcca9461809b95e6f8f209ce5724056802824f"
-SRC_URI[reqsign-aws-v4-2.0.1.sha256sum] = "4510c2a3e42b653cf788d560a3d54b0ae4cc315a62aaba773554f18319c0db0b"
-SRC_URI[reqsign-command-execute-tokio-2.0.1.sha256sum] = "38b53d033600f533135afec8e97be99c80fcf8177f6285da6c7300955d5377a1"
-SRC_URI[reqsign-core-2.0.1.sha256sum] = "39da118ccf3bdb067ac6cc40136fec99bc5ba418cbd388dc88e4ce0e5d0b1423"
-SRC_URI[reqsign-file-read-tokio-2.0.1.sha256sum] = "669ea66036266a9ac371d2e63cc7d345e69994da0168b4e6f3487fe21e126f76"
-SRC_URI[reqsign-google-2.0.1.sha256sum] = "16e1942acf06b8638f16775e92e4ca9cca239519ea6f4e650d5924d1f0dc37d1"
-SRC_URI[reqsign-http-send-reqwest-2.0.1.sha256sum] = "46186bce769674f9200ad01af6f2ca42de3e819ddc002fff1edae135bfb6cd9c"
-SRC_URI[reqwest-0.12.22.sha256sum] = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
-SRC_URI[resvg-0.47.0.sha256sum] = "9be183ad6a216aa96f33e4c8033b0988b8b3ea6fd2359d19af5bac4643fd8e81"
-SRC_URI[retry-policies-0.5.1.sha256sum] = "46a4bd6027df676bcb752d3724db0ea3c0c5fc1dd0376fec51ac7dcaf9cc69be"
-SRC_URI[rgb-0.8.52.sha256sum] = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
-SRC_URI[ring-0.17.14.sha256sum] = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+SRC_URI[regex-syntax-0.8.10.sha256sum] = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
+SRC_URI[rend-0.5.3.sha256sum] = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6"
SRC_URI[rkyv-0.8.15.sha256sum] = "1a30e631b7f4a03dee9056b8ef6982e8ba371dd5bedb74d3ec86df4499132c70"
SRC_URI[rkyv_derive-0.8.15.sha256sum] = "8100bb34c0a1d0f907143db3149e6b4eea3c33b9ee8b189720168e818303986f"
-SRC_URI[rmp-0.8.14.sha256sum] = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
-SRC_URI[rmp-serde-1.3.1.sha256sum] = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155"
-SRC_URI[roxmltree-0.20.0.sha256sum] = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
-SRC_URI[roxmltree-0.21.1.sha256sum] = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb"
-SRC_URI[rsa-0.9.10.sha256sum] = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d"
-SRC_URI[rust-ini-0.21.3.sha256sum] = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
-SRC_URI[rust-netrc-0.1.2.sha256sum] = "7e98097f62769f92dbf95fb51f71c0a68ec18a4ee2e70e0d3e4f47ac005d63e9"
-SRC_URI[rustc-hash-2.1.1.sha256sum] = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
-SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
-SRC_URI[rustix-1.1.3.sha256sum] = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
-SRC_URI[rustls-0.23.37.sha256sum] = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
-SRC_URI[rustls-native-certs-0.8.2.sha256sum] = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923"
-SRC_URI[rustls-pki-types-1.13.3.sha256sum] = "4910321ebe4151be888e35fe062169554e74aad01beafed60410131420ceffbc"
-SRC_URI[rustls-webpki-0.103.8.sha256sum] = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
-SRC_URI[rustversion-1.0.21.sha256sum] = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
-SRC_URI[rustybuzz-0.20.1.sha256sum] = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702"
-SRC_URI[ryu-1.0.20.sha256sum] = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
-SRC_URI[salsa20-0.10.2.sha256sum] = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
+SRC_URI[rustc-hash-2.1.2.sha256sum] = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
+SRC_URI[rustix-1.1.4.sha256sum] = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
+SRC_URI[rustversion-1.0.22.sha256sum] = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+SRC_URI[ryu-1.0.23.sha256sum] = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-SRC_URI[schannel-0.1.27.sha256sum] = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
SRC_URI[schemars-1.2.1.sha256sum] = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc"
SRC_URI[schemars_derive-1.2.1.sha256sum] = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f"
SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-SRC_URI[scroll-0.13.0.sha256sum] = "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add"
-SRC_URI[scroll_derive-0.13.0.sha256sum] = "22fc4f90c27b57691bbaf11d8ecc7cfbfe98a4da6dbe60226115d322aa80c06e"
-SRC_URI[scrypt-0.11.0.sha256sum] = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f"
SRC_URI[seahash-4.1.0.sha256sum] = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
-SRC_URI[secrecy-0.10.3.sha256sum] = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a"
-SRC_URI[secret-service-5.1.0.sha256sum] = "9a62d7f86047af0077255a29494136b9aaaf697c76ff70b8e49cded4e2623c14"
-SRC_URI[security-framework-3.7.0.sha256sum] = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
-SRC_URI[security-framework-sys-2.17.0.sha256sum] = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
-SRC_URI[self-replace-1.5.0.sha256sum] = "03ec815b5eab420ab893f63393878d89c90fdd94c0bcc44c07abb8ad95552fb7"
-SRC_URI[semver-1.0.26.sha256sum] = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+SRC_URI[semver-1.0.27.sha256sum] = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
SRC_URI[serde-1.0.228.sha256sum] = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
SRC_URI[serde-untagged-0.1.9.sha256sum] = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
SRC_URI[serde_core-1.0.228.sha256sum] = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
SRC_URI[serde_derive-1.0.228.sha256sum] = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
SRC_URI[serde_derive_internals-0.29.1.sha256sum] = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
SRC_URI[serde_json-1.0.149.sha256sum] = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
-SRC_URI[serde_repr-0.1.20.sha256sum] = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
SRC_URI[serde_spanned-1.0.4.sha256sum] = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776"
-SRC_URI[serde_urlencoded-0.7.1.sha256sum] = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-SRC_URI[serde_yaml-0.9.34+deprecated.sha256sum] = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
-SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
SRC_URI[sha2-0.10.9.sha256sum] = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-SRC_URI[shell-escape-0.1.5.sha256sum] = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
-SRC_URI[shellexpand-3.1.1.sha256sum] = "8b1fdf65dd6331831494dd616b30351c38e96e45921a27745cf98490458b90bb"
SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-SRC_URI[signal-hook-registry-1.4.5.sha256sum] = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
-SRC_URI[signature-2.2.0.sha256sum] = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
-SRC_URI[simd-adler32-0.3.7.sha256sum] = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+SRC_URI[signal-hook-registry-1.4.8.sha256sum] = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+SRC_URI[simd-adler32-0.3.8.sha256sum] = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
SRC_URI[simdutf8-0.1.5.sha256sum] = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
SRC_URI[similar-2.7.0.sha256sum] = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
-SRC_URI[simple_asn1-0.6.3.sha256sum] = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
-SRC_URI[simplecss-0.2.2.sha256sum] = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c"
-SRC_URI[siphasher-1.0.1.sha256sum] = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
-SRC_URI[slab-0.4.11.sha256sum] = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
-SRC_URI[slotmap-1.1.1.sha256sum] = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
+SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
SRC_URI[smallvec-1.15.1.sha256sum] = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
-SRC_URI[socket2-0.5.10.sha256sum] = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
-SRC_URI[socket2-0.6.0.sha256sum] = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
-SRC_URI[spdx-0.10.9.sha256sum] = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3"
SRC_URI[spdx-0.13.4.sha256sum] = "a8da593e30beb790fc9424502eb898320b44e5eb30367dbda1c1edde8e2f32d7"
-SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-SRC_URI[spki-0.7.3.sha256sum] = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
-SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
-SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-SRC_URI[statrs-0.18.0.sha256sum] = "2a3fe7c28c6512e766b0874335db33c94ad7b8f9054228ae1c2abd47ce7d335e"
-SRC_URI[strict-num-0.1.1.sha256sum] = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
+SRC_URI[stable_deref_trait-1.2.1.sha256sum] = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-SRC_URI[strum-0.26.3.sha256sum] = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
-SRC_URI[strum_macros-0.26.4.sha256sum] = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
-SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-SRC_URI[supports-color-3.0.2.sha256sum] = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6"
-SRC_URI[supports-hyperlinks-3.1.0.sha256sum] = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b"
-SRC_URI[supports-unicode-3.0.0.sha256sum] = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2"
-SRC_URI[svg-0.18.0.sha256sum] = "94afda9cd163c04f6bee8b4bf2501c91548deae308373c436f36aeff3cf3c4a3"
-SRC_URI[svgtypes-0.16.1.sha256sum] = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d"
SRC_URI[syn-2.0.117.sha256sum] = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
-SRC_URI[sync_wrapper-1.0.2.sha256sum] = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
SRC_URI[synstructure-0.13.2.sha256sum] = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
-SRC_URI[system-configuration-0.7.0.sha256sum] = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
-SRC_URI[system-configuration-sys-0.6.0.sha256sum] = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-SRC_URI[tagu-0.1.6.sha256sum] = "eddb6b06d20fba9ed21fca3d696ee1b6e870bca0bcf9fa2971f6ae2436de576a"
-SRC_URI[tar-0.4.44.sha256sum] = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a"
-SRC_URI[target-lexicon-0.13.5.sha256sum] = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
+SRC_URI[tar-0.4.45.sha256sum] = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973"
SRC_URI[temp-env-0.3.6.sha256sum] = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050"
-SRC_URI[tempfile-3.25.0.sha256sum] = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1"
-SRC_URI[terminal_size-0.4.2.sha256sum] = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed"
-SRC_URI[termtree-0.5.1.sha256sum] = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683"
-SRC_URI[test-case-3.3.1.sha256sum] = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8"
-SRC_URI[test-case-core-3.3.1.sha256sum] = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f"
-SRC_URI[test-case-macros-3.3.1.sha256sum] = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
-SRC_URI[test-log-0.2.19.sha256sum] = "37d53ac171c92a39e4769491c4b4dde7022c60042254b5fc044ae409d34a24d4"
-SRC_URI[test-log-macros-0.2.19.sha256sum] = "be35209fd0781c5401458ab66e4f98accf63553e8fae7425503e92fdd319783b"
+SRC_URI[tempfile-3.27.0.sha256sum] = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
+SRC_URI[terminal_size-0.4.3.sha256sum] = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0"
SRC_URI[textwrap-0.16.2.sha256sum] = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
-SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
SRC_URI[thiserror-2.0.18.sha256sum] = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
-SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
SRC_URI[thiserror-impl-2.0.18.sha256sum] = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
SRC_URI[thread_local-1.1.9.sha256sum] = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
-SRC_URI[tikv-jemalloc-sys-0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7.sha256sum] = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b"
-SRC_URI[tikv-jemallocator-0.6.1.sha256sum] = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a"
-SRC_URI[time-0.3.47.sha256sum] = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
-SRC_URI[time-core-0.1.8.sha256sum] = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
-SRC_URI[time-macros-0.2.27.sha256sum] = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
-SRC_URI[tiny-keccak-2.0.2.sha256sum] = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
-SRC_URI[tiny-skia-0.12.0.sha256sum] = "47ffee5eaaf5527f630fb0e356b90ebdec84d5d18d937c5e440350f88c5a91ea"
-SRC_URI[tiny-skia-path-0.12.0.sha256sum] = "edca365c3faccca67d06593c5980fa6c57687de727a03131735bb85f01fdeeb9"
-SRC_URI[tinystr-0.8.1.sha256sum] = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
-SRC_URI[tinytemplate-1.2.1.sha256sum] = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
-SRC_URI[tinyvec-1.9.0.sha256sum] = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+SRC_URI[tinystr-0.8.2.sha256sum] = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+SRC_URI[tinyvec-1.11.0.sha256sum] = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-SRC_URI[tokio-1.49.0.sha256sum] = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
-SRC_URI[tokio-macros-2.6.0.sha256sum] = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
-SRC_URI[tokio-rustls-0.26.4.sha256sum] = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
-SRC_URI[tokio-stream-0.1.18.sha256sum] = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
-SRC_URI[tokio-util-0.7.18.sha256sum] = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
+SRC_URI[tokio-1.51.0.sha256sum] = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd"
+SRC_URI[tokio-macros-2.7.0.sha256sum] = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
SRC_URI[toml-0.9.10+spec-1.1.0.sha256sum] = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48"
-SRC_URI[toml_datetime-0.6.11.sha256sum] = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
SRC_URI[toml_datetime-0.7.5+spec-1.1.0.sha256sum] = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
-SRC_URI[toml_edit-0.22.27.sha256sum] = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
SRC_URI[toml_edit-0.24.0+spec-1.1.0.sha256sum] = "8c740b185920170a6d9191122cafef7010bd6270a3824594bff6784c04d7f09e"
-SRC_URI[toml_parser-1.0.6+spec-1.1.0.sha256sum] = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44"
+SRC_URI[toml_parser-1.0.9+spec-1.1.0.sha256sum] = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
SRC_URI[toml_writer-1.0.6+spec-1.1.0.sha256sum] = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
-SRC_URI[tower-0.5.2.sha256sum] = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
-SRC_URI[tower-http-0.6.6.sha256sum] = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
-SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
-SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
SRC_URI[tracing-0.1.44.sha256sum] = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
SRC_URI[tracing-attributes-0.1.31.sha256sum] = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
SRC_URI[tracing-core-0.1.36.sha256sum] = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
-SRC_URI[tracing-durations-export-0.3.1.sha256sum] = "32e0c2cfee378f62291f2703bbb949b99213306c2729fe977799653c3c3404b5"
SRC_URI[tracing-log-0.2.0.sha256sum] = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
-SRC_URI[tracing-serde-0.2.0.sha256sum] = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1"
-SRC_URI[tracing-subscriber-0.3.22.sha256sum] = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
+SRC_URI[tracing-subscriber-0.3.23.sha256sum] = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
SRC_URI[tracing-test-0.2.6.sha256sum] = "19a4c448db514d4f24c5ddb9f73f2ee71bfb24c526cf0c570ba142d1119e0051"
SRC_URI[tracing-test-macro-0.2.6.sha256sum] = "ad06847b7afb65c7866a36664b75c40b895e318cea4f71299f013fb22965329d"
-SRC_URI[tracing-tree-0.4.1.sha256sum] = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec"
-SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
-SRC_URI[ttf-parser-0.25.1.sha256sum] = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
SRC_URI[typed-path-0.12.3.sha256sum] = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
SRC_URI[typeid-1.0.3.sha256sum] = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
-SRC_URI[typenum-1.18.0.sha256sum] = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+SRC_URI[typenum-1.19.0.sha256sum] = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
SRC_URI[ucd-trie-0.1.7.sha256sum] = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
-SRC_URI[uds_windows-1.1.0.sha256sum] = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
-SRC_URI[unicase-2.8.1.sha256sum] = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
-SRC_URI[unicode-bidi-0.3.18.sha256sum] = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
-SRC_URI[unicode-bidi-mirroring-0.4.0.sha256sum] = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe"
-SRC_URI[unicode-ccc-0.4.0.sha256sum] = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"
-SRC_URI[unicode-id-0.3.5.sha256sum] = "10103c57044730945224467c09f71a4db0071c123a0648cc3e818913bde6b561"
-SRC_URI[unicode-ident-1.0.18.sha256sum] = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+SRC_URI[unicode-ident-1.0.24.sha256sum] = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-SRC_URI[unicode-properties-0.1.4.sha256sum] = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
-SRC_URI[unicode-script-0.5.7.sha256sum] = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f"
-SRC_URI[unicode-vo-0.1.0.sha256sum] = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
-SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
SRC_URI[unicode-width-0.2.2.sha256sum] = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
-SRC_URI[unit-prefix-0.5.1.sha256sum] = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817"
-SRC_URI[unsafe-libyaml-0.2.11.sha256sum] = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
SRC_URI[unscanny-0.1.0.sha256sum] = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47"
-SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
SRC_URI[url-2.5.8.sha256sum] = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
-SRC_URI[usvg-0.47.0.sha256sum] = "d46cf96c5f498d36b7a9693bc6a7075c0bb9303189d61b2249b0dc3d309c07de"
-SRC_URI[utf8-width-0.1.7.sha256sum] = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3"
SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
-SRC_URI[uuid-1.21.0.sha256sum] = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
+SRC_URI[uuid-1.23.0.sha256sum] = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9"
SRC_URI[valuable-0.1.1.sha256sum] = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-SRC_URI[wait-timeout-0.2.1.sha256sum] = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11"
SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
-SRC_URI[wasi-0.14.2+wasi-0.2.4.sha256sum] = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+SRC_URI[wasi-0.14.7+wasi-0.2.4.sha256sum] = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c"
SRC_URI[wasip2-1.0.2+wasi-0.2.9.sha256sum] = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
SRC_URI[wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.sha256sum] = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
-SRC_URI[wasite-1.0.2.sha256sum] = "66fe902b4a6b8028a753d5424909b764ccf79b7a209eac9bf97e59cda9f71a42"
-SRC_URI[wasm-bindgen-0.2.100.sha256sum] = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
-SRC_URI[wasm-bindgen-backend-0.2.100.sha256sum] = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
-SRC_URI[wasm-bindgen-futures-0.4.50.sha256sum] = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
-SRC_URI[wasm-bindgen-macro-0.2.100.sha256sum] = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
-SRC_URI[wasm-bindgen-macro-support-0.2.100.sha256sum] = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
-SRC_URI[wasm-bindgen-shared-0.2.100.sha256sum] = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+SRC_URI[wasm-bindgen-0.2.114.sha256sum] = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
+SRC_URI[wasm-bindgen-macro-0.2.114.sha256sum] = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
+SRC_URI[wasm-bindgen-macro-support-0.2.114.sha256sum] = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
+SRC_URI[wasm-bindgen-shared-0.2.114.sha256sum] = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
SRC_URI[wasm-encoder-0.244.0.sha256sum] = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
SRC_URI[wasm-metadata-0.244.0.sha256sum] = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
-SRC_URI[wasm-streams-0.4.2.sha256sum] = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
SRC_URI[wasmparser-0.244.0.sha256sum] = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
-SRC_URI[wasmtimer-0.4.2.sha256sum] = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446"
-SRC_URI[web-sys-0.3.77.sha256sum] = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
-SRC_URI[web-time-1.1.0.sha256sum] = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
-SRC_URI[webpki-roots-1.0.2.sha256sum] = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2"
-SRC_URI[weezl-0.1.10.sha256sum] = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
-SRC_URI[which-8.0.0.sha256sum] = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d"
-SRC_URI[whoami-2.1.0.sha256sum] = "8fae98cf96deed1b7572272dfc777713c249ae40aa1cf8862e091e8b745f5361"
-SRC_URI[widestring-1.2.0.sha256sum] = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
-SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-SRC_URI[winapi-util-0.1.9.sha256sum] = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
-SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[winapi-util-0.1.11.sha256sum] = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
SRC_URI[windows-0.61.3.sha256sum] = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
SRC_URI[windows-collections-0.2.0.sha256sum] = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
SRC_URI[windows-core-0.61.2.sha256sum] = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
SRC_URI[windows-future-0.2.1.sha256sum] = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
-SRC_URI[windows-implement-0.60.0.sha256sum] = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
-SRC_URI[windows-interface-0.59.1.sha256sum] = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
+SRC_URI[windows-implement-0.60.2.sha256sum] = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+SRC_URI[windows-interface-0.59.3.sha256sum] = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
SRC_URI[windows-link-0.1.3.sha256sum] = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
SRC_URI[windows-numerics-0.2.0.sha256sum] = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
-SRC_URI[windows-registry-0.5.3.sha256sum] = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
SRC_URI[windows-result-0.3.4.sha256sum] = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
SRC_URI[windows-strings-0.4.2.sha256sum] = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-SRC_URI[windows-sys-0.61.0.sha256sum] = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa"
+SRC_URI[windows-sys-0.60.2.sha256sum] = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+SRC_URI[windows-targets-0.53.5.sha256sum] = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
SRC_URI[windows-threading-0.1.0.sha256sum] = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
-SRC_URI[windows-version-0.1.7.sha256sum] = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+SRC_URI[windows_aarch64_gnullvm-0.53.1.sha256sum] = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+SRC_URI[windows_aarch64_msvc-0.53.1.sha256sum] = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+SRC_URI[windows_i686_gnu-0.53.1.sha256sum] = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+SRC_URI[windows_i686_gnullvm-0.53.1.sha256sum] = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+SRC_URI[windows_i686_msvc-0.53.1.sha256sum] = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+SRC_URI[windows_x86_64_gnu-0.53.1.sha256sum] = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+SRC_URI[windows_x86_64_gnullvm-0.53.1.sha256sum] = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-SRC_URI[winnow-0.7.13.sha256sum] = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
-SRC_URI[winsafe-0.0.19.sha256sum] = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
-SRC_URI[wiremock-0.6.5.sha256sum] = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031"
+SRC_URI[windows_x86_64_msvc-0.53.1.sha256sum] = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+SRC_URI[winnow-0.7.15.sha256sum] = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
SRC_URI[wit-bindgen-0.51.0.sha256sum] = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
SRC_URI[wit-bindgen-core-0.51.0.sha256sum] = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
-SRC_URI[wit-bindgen-rt-0.39.0.sha256sum] = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
SRC_URI[wit-bindgen-rust-0.51.0.sha256sum] = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
SRC_URI[wit-bindgen-rust-macro-0.51.0.sha256sum] = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
SRC_URI[wit-component-0.244.0.sha256sum] = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
SRC_URI[wit-parser-0.244.0.sha256sum] = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
-SRC_URI[wmi-0.16.0.sha256sum] = "5d9189bc72f0e4d814d812216ec06636ce3ea5597ff5f1ff9f9f0e5ec781c027"
-SRC_URI[writeable-0.6.1.sha256sum] = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
-SRC_URI[x509-parser-0.18.0.sha256sum] = "eb3e137310115a65136898d2079f003ce33331a6c4b0d51f1531d1be082b6425"
-SRC_URI[xattr-1.5.1.sha256sum] = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909"
-SRC_URI[xml-rs-0.8.27.sha256sum] = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7"
-SRC_URI[xmlwriter-0.1.0.sha256sum] = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
-SRC_URI[xz2-0.1.7.sha256sum] = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
-SRC_URI[yansi-1.0.1.sha256sum] = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
-SRC_URI[yasna-0.5.2.sha256sum] = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
-SRC_URI[yoke-0.8.0.sha256sum] = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
-SRC_URI[yoke-derive-0.8.0.sha256sum] = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
-SRC_URI[zbus-5.8.0.sha256sum] = "597f45e98bc7e6f0988276012797855613cd8269e23b5be62cc4e5d28b7e515d"
-SRC_URI[zbus_macros-5.8.0.sha256sum] = "e5c8e4e14dcdd9d97a98b189cd1220f30e8394ad271e8c987da84f73693862c2"
-SRC_URI[zbus_names-4.2.0.sha256sum] = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
-SRC_URI[zerocopy-0.8.26.sha256sum] = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
-SRC_URI[zerocopy-derive-0.8.26.sha256sum] = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
+SRC_URI[writeable-0.6.2.sha256sum] = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+SRC_URI[xattr-1.6.1.sha256sum] = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
+SRC_URI[yoke-0.8.1.sha256sum] = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+SRC_URI[yoke-derive-0.8.1.sha256sum] = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
SRC_URI[zerofrom-0.1.6.sha256sum] = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
SRC_URI[zerofrom-derive-0.1.6.sha256sum] = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
-SRC_URI[zeroize-1.8.2.sha256sum] = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
-SRC_URI[zerotrie-0.2.2.sha256sum] = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
-SRC_URI[zerovec-0.11.2.sha256sum] = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
-SRC_URI[zerovec-derive-0.11.1.sha256sum] = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+SRC_URI[zerotrie-0.2.3.sha256sum] = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+SRC_URI[zerovec-0.11.5.sha256sum] = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+SRC_URI[zerovec-derive-0.11.2.sha256sum] = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
SRC_URI[zip-8.1.0.sha256sum] = "6e499faf5c6b97a0d086f4a8733de6d47aee2252b8127962439d8d4311a73f72"
-SRC_URI[zlib-rs-0.6.2.sha256sum] = "c745c48e1007337ed136dc99df34128b9faa6ed542d80a1c673cf55a6d7236c8"
-SRC_URI[zmij-1.0.15.sha256sum] = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2"
+SRC_URI[zlib-rs-0.6.3.sha256sum] = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513"
+SRC_URI[zmij-1.0.21.sha256sum] = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
SRC_URI[zopfli-0.8.3.sha256sum] = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
SRC_URI[zstd-0.13.3.sha256sum] = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
SRC_URI[zstd-safe-7.2.4.sha256sum] = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
-SRC_URI[zstd-sys-2.0.15+zstd.1.5.7.sha256sum] = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
-SRC_URI[zune-core-0.5.1.sha256sum] = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
-SRC_URI[zune-jpeg-0.5.10.sha256sum] = "ea2db9186c0a6ad1aa7012046f3fadc8db9001691b367c510f5867f17f975752"
-SRC_URI[zvariant-5.6.0.sha256sum] = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f"
-SRC_URI[zvariant_derive-5.6.0.sha256sum] = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208"
-SRC_URI[zvariant_utils-3.2.0.sha256sum] = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34"
+SRC_URI[zstd-sys-2.0.16+zstd.1.5.7.sha256sum] = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
diff --git a/meta/recipes-devtools/python/python3-uv-build_0.10.10.bb b/meta/recipes-devtools/python/python3-uv-build_0.11.7.bb
similarity index 92%
rename from meta/recipes-devtools/python/python3-uv-build_0.10.10.bb
rename to meta/recipes-devtools/python/python3-uv-build_0.11.7.bb
index 0b56a34bf3..e94ae0a75f 100644
--- a/meta/recipes-devtools/python/python3-uv-build_0.10.10.bb
+++ b/meta/recipes-devtools/python/python3-uv-build_0.11.7.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE-APACHE;md5=86d3f3a95c324c9479bd8986968f4327 \
file://crates/uv-pep508/License-Apache;md5=e23fadd6ceef8c618fc1c65191d846fa \
file://crates/uv-pep508/License-BSD;md5=ef7a6027dc4c2389b9afad7e690274c7"
-SRC_URI[sha256sum] = "53d5a58ff7b1a6b1200f77ec3e4a8d361d1fe6eca562d5a359bf4a96bd2cc9c5"
+SRC_URI[sha256sum] = "258e3a10929b5de79074078ba1ad8edbdd4db5d9c3cafba81f11b329eeaaca08"
require ${BPN}-crates.inc
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 40/49] python3-zipp: upgrade 3.23.0 -> 3.23.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (37 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 41/49] re2c: upgrade 4.4 -> 4.5.1 Wang Mingyu
` (8 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
License-Update: Copyright year updated to 2026
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../python/{python3-zipp_3.23.0.bb => python3-zipp_3.23.1.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta/recipes-devtools/python/{python3-zipp_3.23.0.bb => python3-zipp_3.23.1.bb} (69%)
diff --git a/meta/recipes-devtools/python/python3-zipp_3.23.0.bb b/meta/recipes-devtools/python/python3-zipp_3.23.1.bb
similarity index 69%
rename from meta/recipes-devtools/python/python3-zipp_3.23.0.bb
rename to meta/recipes-devtools/python/python3-zipp_3.23.1.bb
index 31420dcb83..45b83bf347 100644
--- a/meta/recipes-devtools/python/python3-zipp_3.23.0.bb
+++ b/meta/recipes-devtools/python/python3-zipp_3.23.1.bb
@@ -1,9 +1,9 @@
SUMMARY = "Backport of pathlib-compatible object wrapper for zip files"
HOMEPAGE = "https://github.com/jaraco/zipp"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1aeae65f25a15b1e46d4381f2f094e0a"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2e21c3f75eb8d9427c8a611a8e83e9d6"
-SRC_URI[sha256sum] = "a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"
+SRC_URI[sha256sum] = "32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110"
DEPENDS += "python3-setuptools-scm-native python3-coherent-licensed-native"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 41/49] re2c: upgrade 4.4 -> 4.5.1
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (38 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 40/49] python3-zipp: upgrade 3.23.0 -> 3.23.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 42/49] repo: upgrade 2.61.1 -> 2.62 Wang Mingyu
` (7 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
CVE-2026-2903.patch
removed since it's included in 4.5.1
Changelog
=========
- Added missing include files to the distribution
- Updated the documentation to mention the new include files.
- Migrated include files to Unicode 17.0.0 standard.
- Added Unicode include files:
+ include/unicode_blocks.re
+ include/unicode_properties.re
- Implemented Unicode case mapping for case-insensitive string literals
- Fixed segmentation fault on erroneous input during determinization.
- Updated paper A closer look at TDFA
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../re2c/re2c/CVE-2026-2903.patch | 68 -------------------
.../re2c/{re2c_4.4.bb => re2c_4.5.1.bb} | 5 +-
2 files changed, 2 insertions(+), 71 deletions(-)
delete mode 100644 meta/recipes-support/re2c/re2c/CVE-2026-2903.patch
rename meta/recipes-support/re2c/{re2c_4.4.bb => re2c_4.5.1.bb} (86%)
diff --git a/meta/recipes-support/re2c/re2c/CVE-2026-2903.patch b/meta/recipes-support/re2c/re2c/CVE-2026-2903.patch
deleted file mode 100644
index 266891fa49..0000000000
--- a/meta/recipes-support/re2c/re2c/CVE-2026-2903.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From febeb977936f9519a25d9fbd10ff8256358cdb97 Mon Sep 17 00:00:00 2001
-From: Ulya Trofimovich <skvadrik@gmail.com>
-Date: Tue, 3 Feb 2026 21:33:11 +0000
-Subject: [PATCH] Fix null pointer dereference when actions are used without
- rules.
-
-Null pointer dereference happened because the root TNFA state was null:
-there were no rules for a block, but determinization still happened.
-
-In this case re2c should emit an error and never even attempt
-determinization. It was properly handled for blocks with start
-conditions, but not for normal blocks.
-
-This addresses #571 "[Bug] Segmentation Fault (NULL Dereference) in
-re2c::closure_leftmost_dfs during determinization".
-
-CVE: CVE-2026-2903
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- src/parse/ast.cc | 19 +++++++++++++++----
- test/conditions/cond_error_10.c | 2 +-
- 2 files changed, 16 insertions(+), 5 deletions(-)
-
-diff --git a/src/parse/ast.cc b/src/parse/ast.cc
-index 91865e801..986cfb7da 100644
---- a/src/parse/ast.cc
-+++ b/src/parse/ast.cc
-@@ -332,10 +332,6 @@ Ret check_and_merge_special_rules(AstGrams& grams, const opt_t* opts, Msg& msg,
- all_conds_have_it = false; \
- } else if (g.name == STAR_COND) { \
- star_action = g.action[0]; \
-- } else if (g.rules.empty()) { \
-- RET_FAIL(msg.error(g.action[0]->loc, \
-- "%s action for non-existing condition `%s` found", \
-- str, g.name.c_str())); \
- } \
- } \
- if (star_action && all_conds_have_it) { \
-@@ -422,6 +418,21 @@ Ret check_and_merge_special_rules(AstGrams& grams, const opt_t* opts, Msg& msg,
- }
- }
-
-+ for (const AstGram& g : grams) {
-+ if (g.rules.empty()) {
-+#define CHECK_ACTION(action, str) do { \
-+ if (!g.action.empty()) { \
-+ RET_FAIL(msg.error(g.action[0]->loc, \
-+ "%s action %sbut no rules found", str, incond(g.name).c_str())); \
-+ } \
-+} while(0)
-+ CHECK_ACTION(entry, "entry");
-+ CHECK_ACTION(pre_rule, "pre-rule");
-+ CHECK_ACTION(post_rule, "post-rule");
-+#undef CHECK_ACTION
-+ }
-+ }
-+
- // zero condition must be the first one.
- auto zero = std::find_if(
- grams.begin(), grams.end(), [](const AstGram& g) { return g.name == ZERO_COND; });
-diff --git a/test/conditions/cond_error_10.c b/test/conditions/cond_error_10.c
-index 571028a22..3bfde301b 100644
---- a/test/conditions/cond_error_10.c
-+++ b/test/conditions/cond_error_10.c
-@@ -1 +1 @@
--conditions/cond_error_10.re:7:5: error: pre-rule action for non-existing condition `c` found
-+conditions/cond_error_10.re:7:5: error: pre-rule action in condition 'c' but no rules found
diff --git a/meta/recipes-support/re2c/re2c_4.4.bb b/meta/recipes-support/re2c/re2c_4.5.1.bb
similarity index 86%
rename from meta/recipes-support/re2c/re2c_4.4.bb
rename to meta/recipes-support/re2c/re2c_4.5.1.bb
index ea9364c483..ee3774017f 100644
--- a/meta/recipes-support/re2c/re2c_4.4.bb
+++ b/meta/recipes-support/re2c/re2c_4.5.1.bb
@@ -6,10 +6,9 @@ SECTION = "devel"
LICENSE = "PD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=64eca4d8a3b67f9dc7656094731a2c8d"
-SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz \
- file://CVE-2026-2903.patch"
+SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "6b6b865924447ef992d5db4e52fb9307e5f65f26edd43efa91395da810f4280a"
+SRC_URI[sha256sum] = "ffea067c11aa668bcb42885be6e6cd000302000b7747d2bb213299ec66b7864e"
GITHUB_BASE_URI = "https://github.com/skvadrik/re2c/releases"
BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 42/49] repo: upgrade 2.61.1 -> 2.62
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (39 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 41/49] re2c: upgrade 4.4 -> 4.5.1 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 43/49] resolvconf: upgrade 1.94 -> 1.95 Wang Mingyu
` (6 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-devtools/repo/{repo_2.61.1.bb => repo_2.62.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/repo/{repo_2.61.1.bb => repo_2.62.bb} (94%)
diff --git a/meta/recipes-devtools/repo/repo_2.61.1.bb b/meta/recipes-devtools/repo/repo_2.62.bb
similarity index 94%
rename from meta/recipes-devtools/repo/repo_2.61.1.bb
rename to meta/recipes-devtools/repo/repo_2.62.bb
index 456f3ad556..769c7e16ef 100644
--- a/meta/recipes-devtools/repo/repo_2.61.1.bb
+++ b/meta/recipes-devtools/repo/repo_2.62.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "git://gerrit.googlesource.com/git-repo.git;protocol=https;branch=main;tag=v${PV} \
"
-SRCREV = "5d88972390295e229ee940992cb33ce8cfd39cd5"
+SRCREV = "ade45de7707e25d8a11b3beedf754caa44aba34d"
MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 43/49] resolvconf: upgrade 1.94 -> 1.95
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (40 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 42/49] repo: upgrade 2.61.1 -> 2.62 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 44/49] sqlite3: upgrade 3.51.3 -> 3.53.0 Wang Mingyu
` (5 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../resolvconf/{resolvconf_1.94.bb => resolvconf_1.95.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-connectivity/resolvconf/{resolvconf_1.94.bb => resolvconf_1.95.bb} (98%)
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.94.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.95.bb
similarity index 98%
rename from meta/recipes-connectivity/resolvconf/resolvconf_1.94.bb
rename to meta/recipes-connectivity/resolvconf/resolvconf_1.95.bb
index b2c85f9593..1ef29f9c2e 100644
--- a/meta/recipes-connectivity/resolvconf/resolvconf_1.94.bb
+++ b/meta/recipes-connectivity/resolvconf/resolvconf_1.95.bb
@@ -15,7 +15,7 @@ SRC_URI = "git://salsa.debian.org/debian/resolvconf.git;protocol=https;branch=un
file://0001-avoid-using-m-option-for-readlink.patch \
"
-SRCREV = "505c258d1efb287ffdbf132531a86437d2bf0513"
+SRCREV = "64fa1448880edd272540e0347aa25f87ecd14dac"
# the package is taken from snapshots.debian.org; that source is static and goes stale
# so we check the latest upstream from a directory that does get updated
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 44/49] sqlite3: upgrade 3.51.3 -> 3.53.0
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (41 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 43/49] resolvconf: upgrade 1.94 -> 1.95 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 45/49] stress-ng: upgrade 0.20.01 -> 0.21.00 Wang Mingyu
` (4 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../sqlite/{sqlite3_3.51.3.bb => sqlite3_3.53.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/sqlite/{sqlite3_3.51.3.bb => sqlite3_3.53.0.bb} (74%)
diff --git a/meta/recipes-support/sqlite/sqlite3_3.51.3.bb b/meta/recipes-support/sqlite/sqlite3_3.53.0.bb
similarity index 74%
rename from meta/recipes-support/sqlite/sqlite3_3.51.3.bb
rename to meta/recipes-support/sqlite/sqlite3_3.53.0.bb
index ea583e4a42..21295bf437 100644
--- a/meta/recipes-support/sqlite/sqlite3_3.51.3.bb
+++ b/meta/recipes-support/sqlite/sqlite3_3.53.0.bb
@@ -4,6 +4,6 @@ LICENSE = "PD"
LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
SRC_URI = "http://www.sqlite.org/2026/sqlite-autoconf-${SQLITE_PV}.tar.gz"
-SRC_URI[sha256sum] = "81f5be397049b0cae1b167f2225af7646fc0f82e4a9b3c48c9ea3a533e21d77a"
+SRC_URI[sha256sum] = "851e9b38192fe2ceaa65e0baa665e7fa06230c3d9bd1a6a9662d02380d73365a"
SRC_URI += "file://0001-Add-option-to-disable-zlib.patch"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 45/49] stress-ng: upgrade 0.20.01 -> 0.21.00
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (42 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 44/49] sqlite3: upgrade 3.51.3 -> 3.53.0 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04 Wang Mingyu
` (3 subsequent siblings)
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../stress-ng/{stress-ng_0.20.01.bb => stress-ng_0.21.00.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-extended/stress-ng/{stress-ng_0.20.01.bb => stress-ng_0.21.00.bb} (94%)
diff --git a/meta/recipes-extended/stress-ng/stress-ng_0.20.01.bb b/meta/recipes-extended/stress-ng/stress-ng_0.21.00.bb
similarity index 94%
rename from meta/recipes-extended/stress-ng/stress-ng_0.20.01.bb
rename to meta/recipes-extended/stress-ng/stress-ng_0.21.00.bb
index 2db9796cab..2bfb9f32c7 100644
--- a/meta/recipes-extended/stress-ng/stress-ng_0.20.01.bb
+++ b/meta/recipes-extended/stress-ng/stress-ng_0.21.00.bb
@@ -6,7 +6,7 @@ LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master;tag=V${PV}"
-SRCREV = "00559dcb1bae3ef12295a1420683094a7d1389e0"
+SRCREV = "19d2eea10269bac3d721701728b7bf79950b7f1a"
DEPENDS = "coreutils-native libbsd"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (43 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 45/49] stress-ng: upgrade 0.20.01 -> 0.21.00 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-22 6:02 ` Mathieu Dubois-Briand
2026-04-21 9:55 ` [OE-core] [PATCH 47/49] vala: upgrade 0.56.18 -> 0.56.19 Wang Mingyu
` (2 subsequent siblings)
47 siblings, 1 reply; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-bsp/u-boot/u-boot-common.inc | 2 +-
.../u-boot/{u-boot-tools_2026.01.bb => u-boot-tools_2026.04.bb} | 0
.../recipes-bsp/u-boot/{u-boot_2026.01.bb => u-boot_2026.04.bb} | 0
3 files changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-bsp/u-boot/{u-boot-tools_2026.01.bb => u-boot-tools_2026.04.bb} (100%)
rename meta/recipes-bsp/u-boot/{u-boot_2026.01.bb => u-boot_2026.04.bb} (100%)
diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc
index 5e2ec08c30..574768b9f8 100644
--- a/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -12,7 +12,7 @@ PE = "1"
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "127a42c7257a6ffbbd1575ed1cbaa8f5408a44b3"
+SRCREV = "88dc2788777babfd6322fa655df549a019aa1e69"
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master;tag=v${PV}"
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2026.01.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2026.04.bb
similarity index 100%
rename from meta/recipes-bsp/u-boot/u-boot-tools_2026.01.bb
rename to meta/recipes-bsp/u-boot/u-boot-tools_2026.04.bb
diff --git a/meta/recipes-bsp/u-boot/u-boot_2026.01.bb b/meta/recipes-bsp/u-boot/u-boot_2026.04.bb
similarity index 100%
rename from meta/recipes-bsp/u-boot/u-boot_2026.01.bb
rename to meta/recipes-bsp/u-boot/u-boot_2026.04.bb
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 47/49] vala: upgrade 0.56.18 -> 0.56.19
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (44 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 48/49] wayland-protocols: upgrade 1.47 -> 1.48 Wang Mingyu
2026-04-21 9:55 ` [PATCH 49/49] xserver-xorg: upgrade 21.1.21 -> 21.1.22 Wang Mingyu
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Changelog
============
* Various improvements and bug fixes:
- codegen: Minor refactoring of TypeRegisterFunction and its subclasses
- codegen: Use G_TYPE_FLAG_NONE when targetting glib >= 2.74
- codegen: Use g_once_init_{enter,leave}_pointer when targetting glib >= 2.80
- codegen: Propagate default_value_on_error from parent struct
- codegen: Return default_value_on_error on precondition failures
- gdbus: Avoid unused variables in method call and properties getter/setter
- gdbus: Allow GLib.VariantDict for a{sv}
- gdbus: Do not provide unintended read/write access to properties
- parser: Fix statement error recovery
- vala: Use reference-transfer as needed when transforming
conditional-expression
- girwriter: Don't use instance-parameter inside function elements
- girwriter: Add the doc:format argument in the .gir file
- libvaladoc: Do not error-out on doc:format
- libvaladoc: Add compat layer for gvRenderData to cope with API break
* Bindings:
- glib-2.0: allow FileUtils.open_tmp's first argument to be null
- posix: add UTIME_{NOW,OMIT} constants for utimensat
- gsl: Deprecate gsl_linalg_cholesky_decomp in favour of
gsl_linalg_cholesky_decomp1
- libxml-2.0: Add more fields to ParserCtxt
- gobject-2.0: Set default_value{,_on_error} for GType
- glib-2.0: Fix *.add_once () callbacks
- gobject-2.0: Fix return type
- gobject-2.0: Add Type.to_string ()
- gstreamer-1.0: Fix ownership of Caps.full*() parameters
- glib-2.0: fix a typo in a parameter name
- gtk4: Update to 4.21.6+83716767
- gtk4: Make all Gsk.RenderNode and Gsk.Renderer shadow their parent type
- gtk4: Fix CursorGetTextureCallback declaration
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-devtools/vala/{vala_0.56.18.bb => vala_0.56.19.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-devtools/vala/{vala_0.56.18.bb => vala_0.56.19.bb} (96%)
diff --git a/meta/recipes-devtools/vala/vala_0.56.18.bb b/meta/recipes-devtools/vala/vala_0.56.19.bb
similarity index 96%
rename from meta/recipes-devtools/vala/vala_0.56.18.bb
rename to meta/recipes-devtools/vala/vala_0.56.19.bb
index 16e5d2b7c8..ae31c2f991 100644
--- a/meta/recipes-devtools/vala/vala_0.56.18.bb
+++ b/meta/recipes-devtools/vala/vala_0.56.19.bb
@@ -20,7 +20,7 @@ GNOMEBASEBUILDCLASS = "autotools"
inherit gnomebase upstream-version-is-even
-SRC_URI[archive.sha256sum] = "f2affe7d40ab63db8e7b9ecc3f6bdc9c2fc7e3134c84ff2d795f482fe926a382"
+SRC_URI[archive.sha256sum] = "5ad7cbbfcc0de61b403d6797c9ef60455bfbebd8e162aec33b5b0b097adfb9d5"
SHRT_VER = "${@gnome_verdir("${PV}")}"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [OE-core] [PATCH 48/49] wayland-protocols: upgrade 1.47 -> 1.48
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (45 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 47/49] vala: upgrade 0.56.18 -> 0.56.19 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
2026-04-21 9:55 ` [PATCH 49/49] xserver-xorg: upgrade 21.1.21 -> 21.1.22 Wang Mingyu
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
.../{wayland-protocols_1.47.bb => wayland-protocols_1.48.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-graphics/wayland/{wayland-protocols_1.47.bb => wayland-protocols_1.48.bb} (91%)
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.47.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.48.bb
similarity index 91%
rename from meta/recipes-graphics/wayland/wayland-protocols_1.47.bb
rename to meta/recipes-graphics/wayland/wayland-protocols_1.48.bb
index e19045fed0..c6b5da44ba 100644
--- a/meta/recipes-graphics/wayland/wayland-protocols_1.47.bb
+++ b/meta/recipes-graphics/wayland/wayland-protocols_1.48.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PV}/downloads/wayland-protocols-${PV}.tar.xz"
-SRC_URI[sha256sum] = "5fd4349bcbc9bab9a46f8cf77d1f434296a7a052c87440a094f63fcf62a58e20"
+SRC_URI[sha256sum] = "398036ac0eb6484982ddbde7ff86848d753231f9cdeeae983f06b52946625aa1"
UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags"
UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)"
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH 49/49] xserver-xorg: upgrade 21.1.21 -> 21.1.22
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
` (46 preceding siblings ...)
2026-04-21 9:55 ` [OE-core] [PATCH 48/49] wayland-protocols: upgrade 1.47 -> 1.48 Wang Mingyu
@ 2026-04-21 9:55 ` Wang Mingyu
47 siblings, 0 replies; 56+ messages in thread
From: Wang Mingyu @ 2026-04-21 9:55 UTC (permalink / raw)
To: openembedded-core; +Cc: Wang Mingyu
From: Wang Mingyu <wangmy@fujitsu.com>
License-Update:
add author to HPND-sell-MIT-disclaimer-xserver
add missing paragraph to SGI-B-2.0
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
meta/recipes-graphics/xorg-xserver/xserver-xorg.inc | 2 +-
.../{xserver-xorg_21.1.21.bb => xserver-xorg_21.1.22.bb} | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
rename meta/recipes-graphics/xorg-xserver/{xserver-xorg_21.1.21.bb => xserver-xorg_21.1.22.bb} (92%)
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index 59c373280e..0d8d782712 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -2,7 +2,7 @@ SUMMARY = "The X.Org X server"
HOMEPAGE = "http://www.x.org"
SECTION = "x11/base"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=21e33dcccf2d5034f798a8ea62622939"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f8778cfcd90ece0e4b225f30182227ca"
# xf86-*-* packages depend on an X server built with the xfree86 DDX
# so we have a virtual to represent that:
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.21.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.22.bb
similarity index 92%
rename from meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.21.bb
rename to meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.22.bb
index 3781234c84..6a9826d959 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.21.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.22.bb
@@ -1,7 +1,7 @@
require xserver-xorg.inc
SRC_URI += " file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch"
-SRC_URI[sha256sum] = "c0cbe5545b3f645bae6024b830d1d1154a956350683a4e52b2fff5b0fa1ab519"
+SRC_URI[sha256sum] = "1a242c8917c49ba29ccc1f6021613d8a2b9805dd0d271a66ae9d09f4b0bb06b3"
# These extensions are now integrated into the server, so declare the migration
# path for in-place upgrades.
--
2.43.0
^ permalink raw reply related [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04
2026-04-21 9:55 ` [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04 Wang Mingyu
@ 2026-04-22 6:02 ` Mathieu Dubois-Briand
0 siblings, 0 replies; 56+ messages in thread
From: Mathieu Dubois-Briand @ 2026-04-22 6:02 UTC (permalink / raw)
To: wangmy, openembedded-core
On Tue Apr 21, 2026 at 11:55 AM CEST, wangmy via lists.openembedded.org wrote:
> From: Wang Mingyu <wangmy@fujitsu.com>
>
> Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> ---
Hi Wang,
Thanks for your patch.
You will need to drop or refresh the CVE-2026-33243.patch patch from the
u-boot recipe:
ERROR: u-boot-1_2026.04-r0 do_patch: Applying patch '/srv/pokybuild/yocto-worker/qemuriscv64/build/layers/openembedded-core/meta/recipes-bsp/u-boot/files/CVE-2026-33243.patch' on target directory '/srv/pokybuild/yocto-worker/qemuriscv64/build/build/tmp/work/qemuriscv64-poky-linux/u-boot/2026.04/sources/u-boot-2026.04'
https://autobuilder.yoctoproject.org/valkyrie/#/builders/45/builds/1439
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/3713
https://autobuilder.yoctoproject.org/valkyrie/#/builders/10/builds/3628
https://autobuilder.yoctoproject.org/valkyrie/#/builders/2/builds/3649
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1
2026-04-21 9:55 ` [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1 Wang Mingyu
@ 2026-04-22 6:05 ` Mathieu Dubois-Briand
2026-04-22 13:25 ` Richard Purdie
0 siblings, 1 reply; 56+ messages in thread
From: Mathieu Dubois-Briand @ 2026-04-22 6:05 UTC (permalink / raw)
To: wangmy, openembedded-core
On Tue Apr 21, 2026 at 11:55 AM CEST, wangmy via lists.openembedded.org wrote:
> From: Wang Mingyu <wangmy@fujitsu.com>
>
> Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> ---
Hi Wang,
Thanks for your patch.
You will also need to upgrade python3-spdx-python-model:
ERROR: python3-spdx-python-model-0.0.4-r0 do_compile: Execution of '/srv/pokybuild/yocto-worker/musl-qemux86-64/build/build/tmp/work/x86-64-v3-poky-linux-musl/python3-spdx-python-model/0.0.4/temp/run.do_compile.3385056' failed with exit code 1
...
Log data follows:
| DEBUG: Executing shell function do_compile
| * Getting build dependencies for wheel...
|
| ERROR Missing dependencies:
| shacl2code==0.0.24
| WARNING: exit code 1 from a shell command.
https://autobuilder.yoctoproject.org/valkyrie/#/builders/3/builds/3699
https://autobuilder.yoctoproject.org/valkyrie/#/builders/6/builds/3661
https://autobuilder.yoctoproject.org/valkyrie/#/builders/25/builds/3641
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7
2026-04-21 9:55 ` [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7 Wang Mingyu
@ 2026-04-22 6:10 ` Mathieu Dubois-Briand
0 siblings, 0 replies; 56+ messages in thread
From: Mathieu Dubois-Briand @ 2026-04-22 6:10 UTC (permalink / raw)
To: wangmy, openembedded-core
On Tue Apr 21, 2026 at 11:55 AM CEST, wangmy via lists.openembedded.org wrote:
> From: Wang Mingyu <wangmy@fujitsu.com>
>
> Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> ---
Hi Wang,
It looks like python-cryptography code needs to be modified to support
this version of uv:
https://github.com/pyca/cryptography/blob/main/vectors/pyproject.toml#L4
ERROR: python3-cryptography-vectors-46.0.5-r0 do_compile: Execution of '/srv/pokybuild/yocto-worker/qemux86-world-alt/build/build/tmp/work/x86-64-v3-poky-linux/python3-cryptography-vectors/46.0.5/temp/run.do_compile.2952603' failed with exit code 1
...
ERROR: Logfile of failure stored in: /srv/pokybuild/yocto-worker/qemux86-world-alt/build/build/tmp/work/x86-64-v3-poky-linux/python3-cryptography-vectors/46.0.5/temp/log.do_compile.2952603
Log data follows:
| DEBUG: Executing shell function do_compile
| * Getting build dependencies for wheel...
|
| ERROR Missing dependencies:
| uv_build<0.11.0,>=0.7.19
| WARNING: exit code 1 from a shell command.
NOTE: recipe python3-cryptography-vectors-46.0.5-r0: task do_compile: Failed
https://autobuilder.yoctoproject.org/valkyrie/#/builders/17/builds/3482
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3
2026-04-21 9:55 ` [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3 Wang Mingyu
@ 2026-04-22 10:20 ` Alexander Kanavin
[not found] ` <18A8A69CD5F34DFB.1892986@lists.openembedded.org>
1 sibling, 0 replies; 56+ messages in thread
From: Alexander Kanavin @ 2026-04-22 10:20 UTC (permalink / raw)
To: wangmy; +Cc: openembedded-core
Neither Fedora nor Debian have taken the 7.x rewrite yet. The AI
rewrite controversy is well publicized.
I think we should hold this for a bit longer.
Alex
On Tue, 21 Apr 2026 at 11:56, wangmy via lists.openembedded.org
<wangmy=fujitsu.com@lists.openembedded.org> wrote:
>
> From: Wang Mingyu <wangmy@fujitsu.com>
>
> License-Update: Change 7.x license to 0BSD
>
> Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> ---
> ...hon3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
> rename meta/recipes-devtools/python/{python3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} (68%)
>
> diff --git a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> similarity index 68%
> rename from meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
> rename to meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> index 14c3247b35..ad36834169 100644
> --- a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
> +++ b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> @@ -1,9 +1,9 @@
> SUMMARY = "Universal encoding detector for Python 2 and 3"
> HOMEPAGE = "https://pypi.org/project/chardet/"
> -LICENSE = "LGPL-2.1-only"
> -LIC_FILES_CHKSUM = "file://LICENSE;md5=4bf661c1e3793e55c8d1051bc5e0ae21"
> +LICENSE = "0BSD"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=bd0753b9dc12e5e3da3047778fcf1dca"
>
> -SRC_URI[sha256sum] = "6b78048c3c97c7b2ed1fbad7a18f76f5a6547f7d34dbab536cc13887c9a92fa4"
> +SRC_URI[sha256sum] = "cc1d4eb92a4ec1c2df3b490836ffa46922e599d34ce0bb75cf41fd2bf6303d56"
>
> inherit pypi python_hatchling
>
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#235632): https://lists.openembedded.org/g/openembedded-core/message/235632
> Mute This Topic: https://lists.openembedded.org/mt/118935094/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3
[not found] ` <18A8A69CD5F34DFB.1892986@lists.openembedded.org>
@ 2026-04-22 10:49 ` Alexander Kanavin
0 siblings, 0 replies; 56+ messages in thread
From: Alexander Kanavin @ 2026-04-22 10:49 UTC (permalink / raw)
To: wangmy; +Cc: openembedded-core
For reference, both Debian and Fedora are steering well clear of 7.x:
https://src.fedoraproject.org/rpms/python-chardet/pull-request/15
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1129923
This AI rewrite has indeed backfired. If the author won't convince
CPython upstream to take it into the standard library (which is the
ultimate goal), then it's game over.
We might place a version check regex into the recipe to exclude 7.x.
Alex
On Wed, 22 Apr 2026 at 12:20, Alexander Kanavin via
lists.openembedded.org <alex.kanavin=gmail.com@lists.openembedded.org>
wrote:
>
> Neither Fedora nor Debian have taken the 7.x rewrite yet. The AI
> rewrite controversy is well publicized.
>
> I think we should hold this for a bit longer.
>
> Alex
>
> On Tue, 21 Apr 2026 at 11:56, wangmy via lists.openembedded.org
> <wangmy=fujitsu.com@lists.openembedded.org> wrote:
> >
> > From: Wang Mingyu <wangmy@fujitsu.com>
> >
> > License-Update: Change 7.x license to 0BSD
> >
> > Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> > ---
> > ...hon3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> > rename meta/recipes-devtools/python/{python3-chardet_6.0.0.post1.bb => python3-chardet_7.4.3.bb} (68%)
> >
> > diff --git a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> > similarity index 68%
> > rename from meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
> > rename to meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> > index 14c3247b35..ad36834169 100644
> > --- a/meta/recipes-devtools/python/python3-chardet_6.0.0.post1.bb
> > +++ b/meta/recipes-devtools/python/python3-chardet_7.4.3.bb
> > @@ -1,9 +1,9 @@
> > SUMMARY = "Universal encoding detector for Python 2 and 3"
> > HOMEPAGE = "https://pypi.org/project/chardet/"
> > -LICENSE = "LGPL-2.1-only"
> > -LIC_FILES_CHKSUM = "file://LICENSE;md5=4bf661c1e3793e55c8d1051bc5e0ae21"
> > +LICENSE = "0BSD"
> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=bd0753b9dc12e5e3da3047778fcf1dca"
> >
> > -SRC_URI[sha256sum] = "6b78048c3c97c7b2ed1fbad7a18f76f5a6547f7d34dbab536cc13887c9a92fa4"
> > +SRC_URI[sha256sum] = "cc1d4eb92a4ec1c2df3b490836ffa46922e599d34ce0bb75cf41fd2bf6303d56"
> >
> > inherit pypi python_hatchling
> >
> > --
> > 2.43.0
> >
> >
> >
> >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#235708): https://lists.openembedded.org/g/openembedded-core/message/235708
> Mute This Topic: https://lists.openembedded.org/mt/118935094/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1
2026-04-22 6:05 ` Mathieu Dubois-Briand
@ 2026-04-22 13:25 ` Richard Purdie
0 siblings, 0 replies; 56+ messages in thread
From: Richard Purdie @ 2026-04-22 13:25 UTC (permalink / raw)
To: mathieu.dubois-briand, wangmy, openembedded-core
On Wed, 2026-04-22 at 08:05 +0200, Mathieu Dubois-Briand via lists.openembedded.org wrote:
> On Tue Apr 21, 2026 at 11:55 AM CEST, wangmy via lists.openembedded.org wrote:
> > From: Wang Mingyu <wangmy@fujitsu.com>
> >
> > Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> > ---
>
> Hi Wang,
>
> Thanks for your patch.
>
> You will also need to upgrade python3-spdx-python-model:
>
> ERROR: python3-spdx-python-model-0.0.4-r0 do_compile: Execution of '/srv/pokybuild/yocto-worker/musl-qemux86-64/build/build/tmp/work/x86-64-v3-poky-linux-musl/python3-spdx-python-model/0.0.4/temp/run.do_compile.3385056' failed with exit code 1
> ...
> Log data follows:
> > DEBUG: Executing shell function do_compile
> > * Getting build dependencies for wheel...
> >
> > ERROR Missing dependencies:
> > shacl2code==0.0.24
> > WARNING: exit code 1 from a shell command.
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/3/builds/3699
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/6/builds/3661
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/25/builds/3641
FWIW master-next has these pieces in already.
Cheers,
Richard
^ permalink raw reply [flat|nested] 56+ messages in thread
* Re: [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1
2026-04-21 9:55 ` [OE-core] [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1 Wang Mingyu
@ 2026-04-24 13:04 ` Jonas Gorski
0 siblings, 0 replies; 56+ messages in thread
From: Jonas Gorski @ 2026-04-24 13:04 UTC (permalink / raw)
To: openembedded-core
On Tue, Apr 21, 2026 at 11:56 AM, wangmy wrote:
>
> From: Wang Mingyu <wangmy@fujitsu.com>
>
> Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
> ---
> .../recipes-extended/groff/{groff_1.24.0.bb => groff_1.24.1.bb} | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> rename meta/recipes-extended/groff/{groff_1.24.0.bb => groff_1.24.1.bb} (96%)
>
> diff --git a/meta/recipes-extended/groff/groff_1.24.0.bb
> b/meta/recipes-extended/groff/groff_1.24.1.bb
> similarity index 96%
> rename from meta/recipes-extended/groff/groff_1.24.0.bb
> rename to meta/recipes-extended/groff/groff_1.24.1.bb
> index dbc8cdf6d0..c4df5f1b18 100644
> --- a/meta/recipes-extended/groff/groff_1.24.0.bb
> +++ b/meta/recipes-extended/groff/groff_1.24.1.bb
> @@ -14,7 +14,7 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
>
> file://0001-gropdf-use-SOURCE_DATE_EPOCH-for-reproducible-builds.patch \
> "
>
> -SRC_URI[sha256sum] =
> "e79bbcd8ff3ed0200e7ac55d3962a15e118c1229990213025f2fc8b264727570"
> +SRC_URI[sha256sum] =
> "74e2819795b6aff431aeac983d63a9c8968eeaba2a2eba7df8ba4c7b41e7cfd8"
>
> DEPENDS = "bison-native groff-native"
> RDEPENDS:${PN} += "perl sed"
> --
> 2.43.0
I was still seeing build failures even with the race fix applied, but updating to 1.24.1 fixed them (combined with the fix from commit d1a02bdd2426 ("74e2819795b6aff431aeac983d63a9c8968eeaba2a2eba7df8ba4c7b41e7cfd8").
So in way:
Tested-by: Jonas Gorski <jonas.gorski@bisdn.de>
Best regards,
Jonas
^ permalink raw reply [flat|nested] 56+ messages in thread
end of thread, other threads:[~2026-04-24 13:04 UTC | newest]
Thread overview: 56+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-21 9:55 [OE-core] [PATCH 01/49] acpica: upgrade 20251212 -> 20260408 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 02/49] adwaita-icon-theme: upgrade 49.0 -> 50.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 03/49] ccache: upgrade 4.13.2 -> 4.13.3 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 04/49] dhcpcd: upgrade 10.3.0 -> 10.3.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 05/49] diffoscope: upgrade 314 -> 317 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 06/49] dos2unix: upgrade 7.5.4 -> 7.5.5 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 07/49] epiphany: upgrade 49.7 -> 50.3 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 08/49] fastfloat: upgrade 8.2.4 -> 8.2.5 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 09/49] ghostscript: upgrade 10.06.0 -> 10.07.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 10/49] groff: upgrade 1.24.0 -> 1.24.1 Wang Mingyu
2026-04-24 13:04 ` Jonas Gorski
2026-04-21 9:55 ` [OE-core] [PATCH 11/49] gsettings-desktop-schemas: upgrade 50.0 -> 50.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 12/49] gtk+3: upgrade 3.24.51 -> 3.24.52 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 13/49] gtk4: upgrade 4.22.1 -> 4.22.2 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 14/49] hwdata: upgrade 0.405 -> 0.406 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 15/49] libadwaita: upgrade 1.8.4 -> 1.9.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 16/49] libcap: upgrade 2.77 -> 2.78 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 17/49] libmicrohttpd: upgrade 1.0.2 -> 1.0.5 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 18/49] lzip: upgrade 1.25 -> 1.26 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 19/49] mesa: upgrade 26.0.3 -> 26.0.5 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 20/49] meson: upgrade 1.10.2 -> 1.11.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 21/49] pango: upgrade 1.57.0 -> 1.57.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 22/49] pciutils: upgrade 3.14.0 -> 3.15.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 23/49] python3-build: upgrade 1.4.0 -> 1.4.3 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 24/49] python3-chardet: upgrade 6.0.0.post1 -> 7.4.3 Wang Mingyu
2026-04-22 10:20 ` Alexander Kanavin
[not found] ` <18A8A69CD5F34DFB.1892986@lists.openembedded.org>
2026-04-22 10:49 ` Alexander Kanavin
2026-04-21 9:55 ` [OE-core] [PATCH 25/49] python3-dtschema: upgrade 2025.12 -> 2026.4 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 26/49] python3-editables: upgrade 0.5 -> 0.6 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 27/49] python3-lxml: upgrade 6.0.2 -> 6.0.4 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 28/49] python3-maturin: upgrade 1.12.4 -> 1.13.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 29/49] python3-pdm-backend: upgrade 2.4.7 -> 2.4.8 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 30/49] python3-pdm: upgrade 2.26.6 -> 2.26.7 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 31/49] python3-poetry-core: upgrade 2.3.1 -> 2.3.2 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 32/49] python3-pyasn1: upgrade 0.6.2 -> 0.6.3 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 33/49] python3-pygments: upgrade 2.19.2 -> 2.20.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 34/49] python3-pygobject: upgrade 3.56.1 -> 3.56.2 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 35/49] python3-pytest: upgrade 9.0.2 -> 9.0.3 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 36/49] python3-setuptools-rust: upgrade 1.12.0 -> 1.12.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 37/49] python3-shacl2code: upgrade 0.0.24 -> 1.0.1 Wang Mingyu
2026-04-22 6:05 ` Mathieu Dubois-Briand
2026-04-22 13:25 ` Richard Purdie
2026-04-21 9:55 ` [OE-core] [PATCH 38/49] python3-testtools: upgrade 2.8.7 -> 2.9.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 39/49] python3-uv-build: upgrade 0.10.10 -> 0.11.7 Wang Mingyu
2026-04-22 6:10 ` Mathieu Dubois-Briand
2026-04-21 9:55 ` [OE-core] [PATCH 40/49] python3-zipp: upgrade 3.23.0 -> 3.23.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 41/49] re2c: upgrade 4.4 -> 4.5.1 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 42/49] repo: upgrade 2.61.1 -> 2.62 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 43/49] resolvconf: upgrade 1.94 -> 1.95 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 44/49] sqlite3: upgrade 3.51.3 -> 3.53.0 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 45/49] stress-ng: upgrade 0.20.01 -> 0.21.00 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 46/49] u-boot: upgrade 2026.01 -> 2026.04 Wang Mingyu
2026-04-22 6:02 ` Mathieu Dubois-Briand
2026-04-21 9:55 ` [OE-core] [PATCH 47/49] vala: upgrade 0.56.18 -> 0.56.19 Wang Mingyu
2026-04-21 9:55 ` [OE-core] [PATCH 48/49] wayland-protocols: upgrade 1.47 -> 1.48 Wang Mingyu
2026-04-21 9:55 ` [PATCH 49/49] xserver-xorg: upgrade 21.1.21 -> 21.1.22 Wang Mingyu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox