commit da571aaa0ed726bd45352d92816ad81b6cc082f0a0670eacc2954b36457904aa Author: Alexey Svistunov Date: Wed Jun 25 10:30:45 2025 +0000 - version update to 0.22.0 * Fix ranges that are not in the form 0-n do not work #2157 * Fix windows req/res very slow compared to Linux #1777 * Add CPPHTTPLIB_HEADER_MAX_COUNT * Windows ::isdigit compilation error #2135 * Specify version in meson.build #2139 * Detect if afunix.h exists #2145 * Feature request: let the Request& know which route matched #2101 * Feature/multipart headers #2152 OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/cpp-httplib?expand=0&rev=34 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_service b/_service new file mode 100644 index 0000000..5f01448 --- /dev/null +++ b/_service @@ -0,0 +1,3 @@ + + + diff --git a/cpp-httplib-0.15.1.tar.gz b/cpp-httplib-0.15.1.tar.gz new file mode 100644 index 0000000..5305baf --- /dev/null +++ b/cpp-httplib-0.15.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d6a4a40ee8fd3f553b7e895882e60e674bd910883fc1857587dbbabee3cdb91 +size 1151103 diff --git a/cpp-httplib-0.18.1.tar.gz b/cpp-httplib-0.18.1.tar.gz new file mode 100644 index 0000000..70cdcdf --- /dev/null +++ b/cpp-httplib-0.18.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:405abd8170f2a446fc8612ac635d0db5947c0d2e156e32603403a4496255ff00 +size 1323636 diff --git a/cpp-httplib-0.18.3.tar.gz b/cpp-httplib-0.18.3.tar.gz new file mode 100644 index 0000000..c4aebfb --- /dev/null +++ b/cpp-httplib-0.18.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0567bcd6c3fe5cef1b329b96245119047f876b49e06cc129a36a7a8dffe173e +size 1324253 diff --git a/cpp-httplib-0.18.6.tar.gz b/cpp-httplib-0.18.6.tar.gz new file mode 100644 index 0000000..803f832 --- /dev/null +++ b/cpp-httplib-0.18.6.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8900747bba3dda8007f1876175be699036e09e4a25ceeab51196d9365bf1993a +size 1326428 diff --git a/cpp-httplib-0.20.1.tar.gz b/cpp-httplib-0.20.1.tar.gz new file mode 100644 index 0000000..91a6e9a --- /dev/null +++ b/cpp-httplib-0.20.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b74b1c2c150be2841eba80192f64d93e9a6711985b3ae8aaa1a9cec4863d1dd9 +size 1408474 diff --git a/cpp-httplib-0.22.0.tar.gz b/cpp-httplib-0.22.0.tar.gz new file mode 100644 index 0000000..395bf24 --- /dev/null +++ b/cpp-httplib-0.22.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcfea48c8f2c386e7085ef8545c8a4875efa30fa6d5cf9dd31f03c6ad038da9d +size 1411639 diff --git a/cpp-httplib-test-issue2004-online.patch b/cpp-httplib-test-issue2004-online.patch new file mode 100644 index 0000000..d649a6e --- /dev/null +++ b/cpp-httplib-test-issue2004-online.patch @@ -0,0 +1,13 @@ +Index: cpp-httplib-0.18.6/test/test.cc +=================================================================== +--- cpp-httplib-0.18.6.orig/test/test.cc ++++ cpp-httplib-0.18.6/test/test.cc +@@ -6189,7 +6189,7 @@ TEST(SSLClientTest, WildcardHostNameMatc + ASSERT_EQ(StatusCode::OK_200, res->status); + } + +-TEST(SSLClientTest, Issue2004) { ++TEST(SSLClientTest, Issue2004_Online) { + Client client("https://google.com"); + client.set_follow_location(true); + diff --git a/cpp-httplib.changes b/cpp-httplib.changes new file mode 100644 index 0000000..ec07f68 --- /dev/null +++ b/cpp-httplib.changes @@ -0,0 +1,300 @@ +------------------------------------------------------------------- +Tue Jun 24 14:39:29 UTC 2025 - Marius Grossu + +- version update to 0.22.0 + * Fix ranges that are not in the form 0-n do not work #2157 + * Fix windows req/res very slow compared to Linux #1777 + * Add CPPHTTPLIB_HEADER_MAX_COUNT + * Windows ::isdigit compilation error #2135 + * Specify version in meson.build #2139 + * Detect if afunix.h exists #2145 + * Feature request: let the Request& know which route matched #2101 + * Feature/multipart headers #2152 + +------------------------------------------------------------------- +Mon May 19 20:04:41 UTC 2025 - Jan Engelhardt + +- Add dependency from cpp-httplib-devel to libzstd-devel + to workaround cmake wanting it in all cases unconditionally. + +------------------------------------------------------------------- +Mon May 12 11:00:44 UTC 2025 - pgajdos@suse.com + +- version update to 0.20.1 + 0.20.1 (CVE-2025-46728 [bsc#1242777]) + * Add AF_UNIX support on windows #2115 + * Support zstd also via pkg-config #2121 + * Fix #2113 + * Fix "Unbounded Memory Allocation in Chunked/No-Length Requests" + 0.20.0 + * server_certificate_verifier extended to reuse built-in verifier #2064 + * Assertion failed when destroying httplib::Client + * #2068 + * Spaces incorrectly allowed in header field names #2096 + * build(meson): copy MountTest.MultibytesPathName files #2098 + * Remove SSLInit #2102 + * Add zstd support #2088 + * Question the behavior of method read_content_without_length #2109 + * Crash when calling std::exit while server running or client requests in flight #2097 + 0.19.0 + * Global timeout feature (same as "--max-time" curl option) #2034 + * Fix check for URI length to prevent incorrect HTTP 414 errors + 0.18.7 + * Potential memory corruption in stream_line_reader #2028 +- deleted patches + - cpp-httplib-test-issue2004-online.patch (upstreamed) + +------------------------------------------------------------------- +Thu Feb 6 08:51:25 UTC 2025 - pgajdos@suse.com + +- version update to 0.18.6 + * Resolve #2033 + * Port/Address re-use #2011 + * Invalid Content-Length values should be rejected #2014 + * Feature request: ability to check if the connection is still alive #2017 + * Changed to use non-blocking socket in is_ssl_peer_could_be_closed (258992a) + * Treat out-of-range last_pos as the end of the content #2009 + * fix:set_file_content with range request return 416. #2010 + * Fix HTTP Response Splitting Vulnerability (9c36aae) +- added patches + fix https://github.com/yhirose/cpp-httplib/issues/2042 + + cpp-httplib-test-issue2004-online.patch + +------------------------------------------------------------------- +Mon Jan 20 09:51:09 UTC 2025 - Pedro Monreal + +- Update to 0.18.3: + * Bug fixes: + - Regression: Client keep-alive subsequent requests very slow #1997 + - 304 Not Modified response stalls until timeout #1998 + +- Update to 0.18.2: + * Bug fixes: + - Fix the problem that CreateFile2 in mmap::open fails to... #1973 + - Default Accept-Encoding header for the client #1975 + - SSLClientReconnection fails on Windows #1980 + - delay in keep_alive due to sleep #1969 + - missing query pararm in httplib::Client::send #1985 + +------------------------------------------------------------------- +Wed Oct 30 11:21:07 UTC 2024 - Pedro Monreal + +- Update to 0.18.1: + * SSLClientServerTest.* tests fail with OpenSSL 3.2.1 (#1798) + * Feat: add CPack support (#1950) + * Keep alive is slowing down shutdown (#1959) + * Allow empty header values (#1965) + +------------------------------------------------------------------- +Fri Sep 27 13:05:37 UTC 2024 - Alexey Svistunov + +- Small specfile refactoring + +------------------------------------------------------------------- +Sun Sep 22 16:50:33 UTC 2024 - Richard Rahl + +- update to 0.18.0: + * httplib.h: support LibreSSL + * Nice way to call "handle_file_request" from user code + * How to diagnose the infamous read error 4 + * Made default server and client read/write timeout settings separately + * Slow performance caused by get_remote_ip_and_port and get_local_ip_and_port + * Provides a way to ignore host verify + * add API support for verify certificate manually +- update to 0.17.3: + * Accessing Directory + * ‘constexpr’ error + * Only match path params that span full path segment + * Fix KeepAliveTest.SSLClientReconnectionPost problem +- update to 0.17.2: + * Fix incorrect handling of Expect: 100-continue + * Peformance improvement by removing tolower function call +- update to 0.17.1: + * Header parser incorrectly accepts NUL and CR within header values + * Fix problem with Abstract Namespace Unix Domain + * Fix SIGINT problem in Docker image +- update to 0.17.0: + * Changed CPPHTTPLIB_KEEPALIVE_MAX_COUNT to 100 + * Add Dockerfile for static file server + * Breaking Change!: get_header_ methods on Request and Response now take… + * Add sleep in handle_EINTR + * Added set_ipv6_v6only method + * impossible to shut down the server safely + * Performance: reserve body to avoid frequent reallocations and copies +- update to 0.16.3: + * Fixed set_connection_timeout() unexpected results + * Fix KeepAliveTest.SSLClientReconnectionPost +- update to 0.16.2: + * threadsafe CLOEXEC on platforms that support it + * BoringSSL compatibility fixes +- update to 0.16.1: + * detail::is_socket_alive() is not work for https connection + * avoid memory leaks if linked with static openssl libs + * Allow hex for ipv6 literal addr in redirect + * Fix build on Windows with no WINAPI_PARTITION_APP support + * test: fix GetRangeWithMaxLongLength on 32 bit machines + * Require a minimum of TLS 1.2 +- update to 0.16.0: + * Use final keyword for devirtualization + * FindBrotli cleanup & fixes + * client can't open the encrypted private key + * build(meson): generate new test PEMs + * Fix range parser when parsing too many ranges + * fix: increase default receive buffer to 16kb + * Removed excess usage of std::move + * Merge branch 'HerrCai0907-fix' + * Highlight notes using markdown features + * Added progress to POST, PUT, PATCH and DELETE requests + * Tweak CI & fix macOS prefix + * New function SSLServer::update_certs. Allows to update certificates while server is running + * Change library name to cpp-httplib +- update to 0.15.3: + * Breaking change in handling requests with Range in v0.15.1 and v0.15.2 +- update to 0.15.2: + * Severe directory traversal vulnerability (dotdotslash) +- switch to cmake build system + +------------------------------------------------------------------- +Fri Feb 2 17:01:44 UTC 2024 - Alexey Svistunov + +- Update to version 0.15.1: + * Malicious requests for many overlapping byte ranges of large files risk OOM #1766 + * Add missing #include for strcasecmp #1744 + * ThreadPool: optional limit for jobs queue (#1741) + * Fix #1628 (OpenSSL 1.1.1 End of Life on September 11, 2023) + * Fix Windows std::max macro problem #1750 + * Fix select() return code for fd >= 1024 (#1757) + * Add a getter for a bearer token from a request (#1755) + * Support move semantics for Response::set_content() (#1764) + * Treat paths with embedded NUL bytes as invalid (#1765) + * Fix usage of rand() is not seeded and depends on seeding by parent program #1747 + * Fix check request range and fix response Content-Range. #1694 + * Fix: Query parameter including query delimiter ('?') not being parsed properly (#1713) + * Fix #1736 + * Fix #1665 + * Change some of status messages based on RFC 9110 (#1740) + * Add StatusCode enum (#1739) + * Fix #1738 + * Fix #1685 + * Fix #1724 + * Add optional user defined header writer #1683 + * Fix CPPHTTPLIB_ALLOW_LF_AS_LINE_TERMINATOR (#1634) + * Avoid a -Warray-bounds false positive in GCC 13. (#1639) + * Fix #1638 + * Removed unnecessary CRLF at the end of multipart ranges data + * Fix #1559 + * Use memory mapped file for static file server (#1632) + * Fix #1519 + * Fix #1590 (#1630) + * Fix #1619 + * Fix #1624 + * Compiler freezes on Debian 10 (buster) with GCC 8.3.0 #1613 + * Don't overwrite the last redirected location (#1589) # This is a breaking change. + * Fix #1607 + * Add named path parameters parsing (Implements #1587) (#1608) + * Result: allow default constructor (#1609) + * Add support for zOS (#1581) + * Provide a CMake option to disable C++ exceptions (#1580) + * Load in-memory CA certificates (#1579) +- Requires OpenSSL version to 3.0 or later + +------------------------------------------------------------------- +Wed May 31 07:10:55 UTC 2023 - Alexey Svistunov + +- Update to version 0.12.5: + * Add HTTPLIB_INSTALL CMake option (#1575) + * Fix more CRLF injection problems + * Don't loading system certs from Keychain on iOS (#1546) + * Initialize sockaddr_un to fix valgrind uninitialised byte message. (#1547, #1547) + * Using set_content_provider with length of 0 makes it infinitely loop (#1545) + * How to check if server is running successfully in another thread? (#1548) + * Fix leaked handle in create_socket (#1554) + * Fix "Location" header url corrupted by percent-unescaping in redirect… (#1459) + * Trailing headers not handled (#1486) + * SSL access through a proxy causes SIGSEGV (#1533) + * System certs support on macOS (#1474) + * Add Request::get_file_values method (#1495) + * Fix: assert socket_requests_are_from_thread_ std::this_thread::get_id() (#1498) + * Fix: multipart Content-Type headers with both boundary and charset parameters (#1516) + +------------------------------------------------------------------- +Thu Feb 16 07:01:16 UTC 2023 - Alexey Svistunov + +- Move examples to devel subpackage +- Drop headers-only flavor and remove aliases for pkg-config files + (gh#yhirose/cpp-httplib#1491) + +------------------------------------------------------------------- +Thu Feb 09 12:34:29 UTC 2023 - Alexey Svistunov + +- Update to version 0.12.0: + * Removed is_writable() from DataSink (Resolve #1478, too) (#1483) + * Fix #1479 + * Removed incorrect comment + * Support CTest (#1468) + * Issue 52666: cpp-httplib:server_fuzzer: Timeout in server_fuzzer + * add to_human_string (#1467) + +------------------------------------------------------------------- +Wed Feb 8 14:55:18 UTC 2023 - Alexey Svistunov + +- Switch to meson tests +- Add examples to headers package + +------------------------------------------------------------------- +Mon Feb 6 14:55:29 UTC 2023 - Alexey Svistunov + +- For an explicit choice when buildtime dependencies resolving + added an unique pkgconfig files aliases for both shipped library + flavors: cpp-httplib-headers.pc and cpp-httplib-shared.pc +- Enable tests performing for compiled flavor + +------------------------------------------------------------------- +Tue Jan 24 20:14:49 UTC 2023 - Alexey Svistunov + +- Migrate from obscpio to classical tar.gz sources archive for properly + debugsource package building + +------------------------------------------------------------------- +Tue Jan 17 10:14:59 UTC 2023 - Alexey Svistunov + +- Update to version 0.11.4: + * add support for requests with both MultipartFormDataItems and Content Providers (#1454) + * Add EINTR and EAGAIN judge for accept (#1438) + * Updated unit test + * std::condition_variable::notify_one/all() should be called after unlocking mutex (#1448) + * Support LOCAL_ADDR and LOCAL_PORT header in client Request (#1450) + * Fix #1442 + * Removed code for upsupported OpenSSL +- Combined multibuild cpp-httplib and cpp-httplib-headers packages +- Remove unneeded BuildRequires for cpp-httplib-headers + +------------------------------------------------------------------- +Mon Jan 16 17:53:43 UTC 2023 - Alexey Svistunov + +- Move LICENSE file to the library package +- Drop cmake BuildRequires and linker additional "-s" flag + +------------------------------------------------------------------- +Mon Jan 2 11:26:02 UTC 2023 - Jan Engelhardt + +- Redo description so it does not rely on monospace formatting. + +------------------------------------------------------------------- +Mon Dec 26 10:41:44 UTC 2022 - Alexey Svistunov + +- Move README.md to devel subpackage + +------------------------------------------------------------------- +Mon Dec 26 09:13:54 UTC 2022 - svalx@svalx.net + +- Update to version 0.11.3: + * Fix #1426 + * Fix #1437 + * Windows CMake directory install fix (#1434) + +------------------------------------------------------------------- +Fri Dec 23 08:53:05 UTC 2022 - Alexey Svistunov + +- Initial release + diff --git a/cpp-httplib.pc b/cpp-httplib.pc new file mode 100644 index 0000000..e81fa95 --- /dev/null +++ b/cpp-httplib.pc @@ -0,0 +1,12 @@ +prefix=/usr +includedir=${prefix}/include +libdir=${prefix}/lib64 + +Name: cpp-httplib +Description: A C++ HTTP/HTTPS server and client library +URL: https://github.com/yhirose/cpp-httplib +Version: 0.18.1 +Requires.private: openssl >= 3.0.0, zlib, libbrotlicommon, libbrotlidec, libbrotlienc +Libs: -L${libdir} -lcpp-httplib +Libs.private: -pthread +Cflags: -I${includedir} -DCPPHTTPLIB_OPENSSL_SUPPORT -DCPPHTTPLIB_ZLIB_SUPPORT -DCPPHTTPLIB_BROTLI_SUPPORT diff --git a/cpp-httplib.spec b/cpp-httplib.spec new file mode 100644 index 0000000..bf96cc4 --- /dev/null +++ b/cpp-httplib.spec @@ -0,0 +1,105 @@ +# +# spec file for package cpp-httplib +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define sover 0.22 +%define libver 0_22 +Name: cpp-httplib +Version: 0.22.0 +Release: 0 +Summary: A C++11 HTTP/HTTPS server and client library +License: MIT +URL: https://github.com/yhirose/cpp-httplib +Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source1: %{name}.pc +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig(gtest) +BuildRequires: pkgconfig(libbrotlidec) +BuildRequires: pkgconfig(libbrotlienc) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(openssl) >= 3.0.0 + +%package -n lib%{name}%{libver} +Summary: A C++11 HTTP/HTTPS library + +%package devel +Summary: A C++11 HTTP/HTTPS library +Requires: lib%{name}%{libver} = %{version} +# cmake files require presence of libzstd even if httplib was built without it +Requires: pkgconfig(libzstd) + +%description +This is a multi-threaded HTTP library with blocking I/O. There is no +support for non-blocking mode. + +%description -n lib%{name}%{libver} +This is a multi-threaded HTTP library with blocking I/O. There is no +support for non-blocking mode. + +%description devel +This is a multi-threaded HTTP library with blocking I/O. There is no +support for non-blocking mode. + +It features built-in mappings, static file server, pre-routing and +post-routing handlers, and support for binding sockets to multiple +interfaces and any available port. + +%prep +%autosetup -p1 +chmod -x example/uploader.sh + +# fix dynamically the version in the pkgconfig file +sed -i 's|Version: 0.0.0|Version: %{version}|g' %{SOURCE1} + +%build +%cmake \ + -DBUILD_SHARED_LIBS=ON \ + -DHTTPLIB_REQUIRE_OPENSSL=ON \ + -DHTTPLIB_REQUIRE_ZLIB=ON \ + -DHTTPLIB_REQUIRE_BROTLI=ON \ + -DHTTPLIB_COMPILE=ON \ + -DHTTPLIB_TEST=ON +%cmake_build + +%install +%cmake_install +install -Dm0644 %{SOURCE1} %{buildroot}%{_libdir}/pkgconfig/%{name}.pc + +#remove files +rm -r %{buildroot}%{_datadir}/{licenses/httplib,doc/packages/cpp-httplib} + +%check +# OBS and chroot build environments does not provide internet +# connectivity, skip online tests to avoid failures +%ctest --parallel 1 --exclude-regex '(_Online$)' + +%ldconfig_scriptlets -n lib%{name}%{libver} + +%files -n lib%{name}%{libver} +%license LICENSE +%{_libdir}/lib%{name}.so.%{sover} +%{_libdir}/lib%{name}.so.%{version} + +%files devel +%doc README.md example +%{_libdir}/lib%{name}.so +%{_includedir}/httplib.h +%{_libdir}/cmake/httplib +%{_libdir}/pkgconfig/%{name}.pc + +%changelog