Releases: yhirose/cpp-httplib
Bug fixes and improvements
Bug fixes and improvements
🐛 Bug Fixes
• SSL Error Reporting Improvements
- Fixed SSL error reporting in SSLClient (#2251)
- Enhanced error handling to properly capture OpenSSL errors when SSL context is null
- Added
ssl_last_error()method to SSLServer for better error diagnostics
• SSL Client Certificate Authentication (#2250)
- Fixed SSL client certificate authentication issues
- Added proper client CA list handling during TLS handshake
- Implemented
extract_ca_names_from_x509_store()helper function
• IPv6 Host Header Support (#2237)
- Fixed Host header formatting for IPv6 addresses
- Properly enclose IPv6 addresses in brackets when creating host strings
- Added
make_host_and_port_string()utility function
• Memory Safety Fix (#2232)
- Fixed undefined behavior caused by dangling references in
getaddrinfo_with_timeout() - Resolved potential crashes when resolve thread is detached
- Added test to verify the fix
• EventDispatcher Stability (#2257)
- Fixed EventDispatcher problem
- Improved stability and reliability
• Threading Issues (#2255, #2256)
- Fixed multiple threading-related issues
- Enhanced thread safety and synchronization
🔧 Improvements
• Build System Enhancements
- CMake: Fixed FindBrotli to not add
Brotli::targets if they already exist (#2249) - Meson: Use C++17 for gtest >= 1.17.0 (#2241)
- Fixed Windows cross-compilation issues (#2234)
• Windows Platform
- Fixed OpenSSL installation issues on Windows (#2254)
- Fixed benchmark test issue on Windows (#2258)
- Improved Windows environment compatibility
• Code Quality
- General code cleanup and improvements
- Fixed .gitignore for examples directory
- Added additional unit tests for SSL functionality
Bug fixes and new feature
Feature
- Initialize start time for server to improve timing accuracy. (#2220)
Bug Fixes
- Fix #2217: Addressed an unspecified issue reported in #2217.
- Fix: handle EAI_ALLDONE from gai_suspend in getaddrinfo_with_timeout. (#2228)
- Fix #2223: Resolved issue as discussed in #2224.
- Fix inconsistent use of macro TARGET_OS_OSX on macOS. (#2222)
- build(meson): Corrected new build option names for Meson build system. (#2208)
- Make code sample compilable. (#2207)
- Fix 32-bit MSVC compiler error due to unknown command #warning. (#2202)
Bug fixes and new feature
🆕 New Features
- ErrorLogger Support (#870, #2195)
- Added long-requested error logging functionality
- Enhanced error handling and reporting capabilities
- Major implementation with 379 additions, 65 deletions
🔧 Improvements
-
Windows Compatibility (#2193)
- Changed 32-bit Windows support from
#errorto#warning - Unified
_WIN64macros to_WIN32for better compatibility - Improved Windows environment support
- Changed 32-bit Windows support from
-
Build System Enhancements
🐛 Bug Fixes
-
OpenSSL Integration
- Fixed Chocolatey OpenSSL compatibility issues
- Improved SSL functionality stability on Windows
-
Windows Version Handling
- Resolved Windows version check problems
- Enhanced platform detection
Bug fixes
Bug Fixes
Issue #2184, #2185: URL Encoding/Decoding Improvements (#2190)
Files: httplib.h, test/test.cc
- Added new RFC 3986 compliant URL encoding/decoding functions alongside existing JavaScript-style URI functions
- Introduced encode_path_component(), decode_path_component(), encode_query_component(), decode_query_component()
- Improved path and query component processing with proper encoding separation
- Enhanced redirect handling with correct plus sign (+) processing in query parameters
- Added comprehensive test case Issue2185_Online for GitHub redirect scenarios
Issue #2187: Accept Header Quality Value Parsing Exception Handling
Files: httplib.h
- Improved exception handling for Accept header quality value parsing
- Added exception-free implementation when CPPHTTPLIB_NO_EXCEPTIONS macro is defined
- Replaced std::stod() with std::istringstream for more robust q-value parsing
- Enhanced Accept header processing reliability
Issue #2189: Missing Client::set_max_timeout Method Implementation
Files: httplib.h
- Added missing Client::set_max_timeout(time_t msec) method implementation
- Maintained existing template version of set_max_timeout method
- Improved API completeness for client timeout configuration
Summary
This release focuses on critical bug fixes that enhance the library's reliability and standard compliance. Key improvements include better URL processing, more robust HTTP header
parsing, and complete client API implementation.
Bug fixes and changes
Bug fixes, New features, Breaking changes
🐛 Bug Fixes
- #2167 - Fix #1601: Fix getaddrinfo stalling issue when network is down
- #2165 - Proxy problems: Fix proxy-related issues
- a636a09 - Fix #1656: Improve logging before compression
✨ New Features
- #2170 - Fix #2082: Add URL encoding helpers for user input in GET requests
- #2169 - Fix #1416: Add SSL error access functionality
- #2166 - Cleaner API: API improvements
- cfb56c0 - Fix #1818: Add POST with content receiver feature
- b2bf172 - Fix #1551: Add Params support for PUT/DELETE methods
🚨 Breaking Changes
Bug fixes
Bug fixes and new features
Bug fixes
Bug fixes and a new feature
- 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