Commit Graph

1474 Commits

Author SHA1 Message Date
Florian Albrechtskirchinger
e5422a469b
Forward declare various function prototypes
- random_bytes()
- random_string()
- select_read()
- set_nonblocking()
2025-02-06 22:30:29 +01:00
Florian Albrechtskirchinger
57a20366a3
Refactor detail::select_read() for up to two FDs
Add an overload for detail::select_read() that accepts two FDs and
reports readability via two boolean out parameters. This is required to
implement interruptible reads.

Both overloads build on top of a common implementation that optimizes to
the same assembly for the common, single FD case.
2025-02-06 22:30:29 +01:00
Florian Albrechtskirchinger
9aaa7a77a0
Refactor detail::random_string()
Refactor detail::random_string() to output random bytes in addition to
random alphanumeric strings, and change the interface to fill a buffer
given a char pointer and length, instead of returning a string.

Rename the new function to random_bytes().

Add an overload random_string() that implements the old behavior on top
of random_bytes().
2025-02-06 22:30:29 +01:00
Florian Albrechtskirchinger
a8e27bf3b1
Extend streams to get max non-blocking read size
Add a function to streams for obtaining the maximum size that may be
passed to read() without blocking. read() may return fewer bytes
including none.
2025-02-06 22:30:29 +01:00
Florian Albrechtskirchinger
2496aa960d
Add client stream handler
Introduce a new callback StreamHandler that replaces all other
content-serving mechanisms, if set. The handler is not called in
response to HEAD or CONNECT requests, or when following a redirect.

In conjunction with a response handler, it provides a minimal interface
to implement a WebSocket client.
2025-02-06 22:29:37 +01:00
yhirose
708f860e3a Fix #2042 2025-02-06 05:56:31 -05:00
yhirose
eb30f15363 Release v0.18.6 2025-02-05 19:14:20 -05:00
yhirose
4941d5b56b
Fix #2033 (#2039) 2025-02-05 12:46:33 -05:00
Florian Albrechtskirchinger
9bbb4741b4
Run clang-format (#2037) 2025-02-02 22:32:33 -05:00
yhirose
282f2feb77 Add a unit test 2025-02-01 22:11:15 -05:00
alex-cornford
60a1f00618
Support building httplib.h on OpenVMS x86 systems (#2031)
Modify for OpenVMS x86 C++. Make tests on OpenVMS currently not supported due to no cmake support.
Changes tested on OpenVMS clang C++ and Fedora & GCC
2025-01-28 18:44:22 -05:00
yhirose
9104054ca5 Fix README example 2025-01-27 13:37:16 -05:00
Baiyies
d69f144a99
Update httplib.h (#2030)
fix 'max'
2025-01-26 08:50:10 -05:00
yhirose
929dfbd348 Update copyright year 2025-01-20 00:32:10 -05:00
yhirose
3047183fd9 Update README 2025-01-20 00:02:02 -05:00
yhirose
ef5e4044f1 Update README 2025-01-19 23:46:12 -05:00
yhirose
3779800322 Release v0.18.5 2025-01-17 17:38:03 -05:00
yhirose
986a20fb7d
Resolve #2017 (#2022)
* Resolve #2017

* Fix warning

* Update README
2025-01-17 17:37:07 -05:00
yhirose
8311e1105f Fix Windows build problem 2025-01-16 23:26:04 -05:00
yhirose
ba6845925d Fix #2014 2025-01-16 23:10:58 -05:00
yhirose
343a0fc073 Fix #2011 2025-01-16 21:38:45 -05:00
yhirose
54f8a4d0f3 Release v0.18.4 2025-01-16 01:00:25 -05:00
yhirose
9c36aae4b7 Fix HTTP Response Splitting Vulnerability 2025-01-16 00:04:33 -05:00
yhirose
b766025a83 clangformat 2025-01-16 00:03:10 -05:00
yhirose
9b5f76f833 Fix #2012 2024-12-27 17:19:23 -05:00
sinnren
d647f484a4
fix:set_file_content with range request return 416. (#2010)
Co-authored-by: fenlog <bakurise@qq.com>
2024-12-24 09:38:59 -05:00
Sergey Bobrenok
8794792baa
Treat out-of-range last_pos as the end of the content (#2009)
RFC-9110 '14.1.2. Byte Ranges':
A client can limit the number of bytes requested without knowing the
size of the selected representation. If the last-pos value is absent,
or if the value is greater than or equal to the current length of the
representation data, the byte range is interpreted as the remainder of
the representation (i.e., the server replaces the value of last-pos
with a value that is one less than the current length of the selected
representation).

https://www.rfc-editor.org/rfc/rfc9110.html#section-14.1.2-6
2024-12-23 13:14:36 -05:00
yhirose
b85768c1f3 Fix #2005 2024-12-16 17:43:50 -05:00
yhirose
e6d71bd702 Add a unit test for Issue #2004 2024-12-12 18:15:22 -05:00
yhirose
258992a160 Changed to use non-blocking socket in is_ssl_peer_could_be_closed 2024-12-03 19:26:08 -05:00
yhirose
a7bc00e330 Release v0.18.3 2024-12-03 06:33:00 -05:00
yhirose
11a40584e9 Fix #1998 2024-12-03 00:38:20 -05:00
yhirose
3e86bdb4d8
Fix #1997 (#2001) 2024-12-03 00:11:29 -05:00
Pavel P
c817d65695
Fix casting uint64_t to size_t for 32-bit builds (#1999) 2024-12-02 11:09:52 -05:00
yhirose
51dee793fe Release v0.18.2 2024-11-29 20:49:50 -05:00
yhirose
457fc4306e Fix #1993 2024-11-29 20:46:48 -05:00
yhirose
4f5b003e76 Fix #1992 2024-11-28 20:40:38 -05:00
yhirose
5421e27106 Fix a compiler warning 2024-11-28 20:39:26 -05:00
yhirose
fe07660f40
Fix #1986 (#1988) 2024-11-27 12:18:35 -05:00
yhirose
da2f9e476e
Fix #1985 (#1989) 2024-11-27 12:18:23 -05:00
sebastianas
1a7a7ed1c3
test: Don't check for the exact size of compressed content. (#1984)
The testsuite checks for the exact size of the compressed content. The
exact size can change if the zlib library is using a different strategy.
In thise case using zlib-ng results in a slightly larger content leading
to a failure in the test.

Check that the compressed content is less than 10MiB which is a tenth of
the orignal content and proves that compression works.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
2024-11-25 15:46:41 -05:00
yhirose
413994912d Update vcxproj files 2024-11-16 11:14:13 -05:00
yhirose
01dcf1d0ad
Fix #1969 (without unnecessary sleep_for) (#1982) 2024-11-16 10:56:57 -05:00
yhirose
8e378779c2 Update README 2024-11-16 09:45:04 -05:00
yhirose
970b52897c
Fix #1980
Fix #1980
2024-11-16 02:09:52 -05:00
yhirose
412ba04d19 Fix problem caused by #1975 2024-11-14 20:33:08 -05:00
yhirose
bfef4b3e9b Fix #1975 2024-11-14 17:27:28 -05:00
yhirose
7bd316f3d0 Fix #1977 2024-11-14 16:46:27 -05:00
yhirose
26208363ee Fix warning 2024-11-14 16:46:09 -05:00
yhirose
b1b4bb8850 clangformat 2024-11-13 22:50:03 -05:00