8
0
forked from pool/cpp-httplib

- 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
This commit is contained in:
2025-06-25 10:30:45 +00:00
committed by Git OBS Bridge
commit da571aaa0e
13 changed files with 475 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -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

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

3
_service Normal file
View File

@@ -0,0 +1,3 @@
<services>
<service name="download_files" mode="manual"/>
</services>

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8d6a4a40ee8fd3f553b7e895882e60e674bd910883fc1857587dbbabee3cdb91
size 1151103

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:405abd8170f2a446fc8612ac635d0db5947c0d2e156e32603403a4496255ff00
size 1323636

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a0567bcd6c3fe5cef1b329b96245119047f876b49e06cc129a36a7a8dffe173e
size 1324253

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8900747bba3dda8007f1876175be699036e09e4a25ceeab51196d9365bf1993a
size 1326428

BIN
cpp-httplib-0.20.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
cpp-httplib-0.22.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -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);

300
cpp-httplib.changes Normal file
View File

@@ -0,0 +1,300 @@
-------------------------------------------------------------------
Tue Jun 24 14:39:29 UTC 2025 - Marius Grossu <marius.grossu@suse.com>
- 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 <jengelh@inai.de>
- 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 <pmonreal@suse.com>
- 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 <pmonreal@suse.com>
- 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 <svalx@svalx.net>
- Small specfile refactoring
-------------------------------------------------------------------
Sun Sep 22 16:50:33 UTC 2024 - Richard Rahl <rrahl0@opensuse.org>
- 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 <svalx@svalx.net>
- 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 <svalx@svalx.net>
- 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 <svalx@svalx.net>
- 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 <svalx@svalx.net>
- 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 <svalx@svalx.net>
- Switch to meson tests
- Add examples to headers package
-------------------------------------------------------------------
Mon Feb 6 14:55:29 UTC 2023 - Alexey Svistunov <svalx@svalx.net>
- 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 <svalx@svalx.net>
- Migrate from obscpio to classical tar.gz sources archive for properly
debugsource package building
-------------------------------------------------------------------
Tue Jan 17 10:14:59 UTC 2023 - Alexey Svistunov <svalx@svalx.net>
- 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 <svalx@svalx.net>
- 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 <jengelh@inai.de>
- Redo description so it does not rely on monospace formatting.
-------------------------------------------------------------------
Mon Dec 26 10:41:44 UTC 2022 - Alexey Svistunov <svalx@svalx.net>
- 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 <svalx@svalx.net>
- Initial release

12
cpp-httplib.pc Normal file
View File

@@ -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

105
cpp-httplib.spec Normal file
View File

@@ -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