# # 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.18 %define libver 0_18 Name: cpp-httplib Version: 0.18.6 Release: 1.3 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 # https://github.com/yhirose/cpp-httplib/issues/2042 Patch0: cpp-httplib-test-issue2004-online.patch 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} %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 * Thu Feb 6 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 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 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 2024 Alexey Svistunov - Small specfile refactoring * Sun Sep 22 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 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 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 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 9 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 2023 Alexey Svistunov - Switch to meson tests - Add examples to headers package * Mon Feb 6 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 2023 Alexey Svistunov - Migrate from obscpio to classical tar.gz sources archive for properly debugsource package building * Tue Jan 17 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 2023 Alexey Svistunov - Move LICENSE file to the library package - Drop cmake BuildRequires and linker additional "-s" flag * Mon Jan 2 2023 Jan Engelhardt - Redo description so it does not rely on monospace formatting. * Mon Dec 26 2022 Alexey Svistunov - Move README.md to devel subpackage * Mon Dec 26 2022 svalx@svalx.net - Update to version 0.11.3: * Fix #1426 * Fix #1437 * Windows CMake directory install fix (#1434) * Fri Dec 23 2022 Alexey Svistunov - Initial release