Commit Graph

955 Commits

Author SHA1 Message Date
yhirose
048edec9ed Changed CPPHTTPLIB_KEEPALIVE_MAX_COUNT to 100 2024-08-26 21:10:38 -04:00
yhirose
af56b7ec0b Release v0.16.3 2024-08-17 09:53:26 -04:00
yhirose
390f2c41f6
Fix #1878 (#1893)
* Fix #1878
2024-08-08 22:07:46 -04:00
yhirose
c5c54b31e2 Release v0.16.2 2024-08-08 11:48:50 -04:00
Mark Mentovai
69c84c9597
BoringSSL compatibility fixes (#1892)
This patch is necessary to build cpp-httplib in Crashpad, itself in
Chromium, using BoringSSL. Details at [1].

The fixes include:
 - Library version check: tolerate BoringSSL as an alternative to
   OpenSSL 3.
 - Don’t call `OPENSSL_thread_stop`, which is not in BoringSSL.
 - Use `SSL_get_peer_certificate` (deprecated in OpenSSL 3), the old
   name for `SSL_get1_peer_certificate`, because the new name is not in
   BoringSSL.
 - Call `SSL_set_tlsext_host_name` directly instead of making an
   `SSL_ctrl` call that BoringSSL does not support. The feared
   -Wold-style-cast warning that occurs when buidling with OpenSSL is
   not triggered in BoringSSL.

[1] 1a62a01825
2024-08-08 11:47:56 -04:00
yhirose
ae63b89cbf Use SOCK_CLOEXEC instead of __linux__ 2024-08-06 17:31:55 -04:00
yhirose
ff038f98b7 Merge branch 'thread-safe-cloexec' of github.com:kdombroski/cpp-httplib into kdombroski-thread-safe-cloexec 2024-08-06 17:22:43 -04:00
yhirose
e00fd06355 Release v0.16.1 2024-08-06 17:04:22 -04:00
yhirose
521529d24d
Fix #1481 (with content provider) (#1527)
* Fix #1481 (with content provider)

* Improve shutdown performance

* Make shutdown action more stable

* Move some tests up

* Simplified

* Simplified
2024-08-06 13:43:00 -04:00
yhirose
ed0719f2bc Code format 2024-08-06 07:20:05 -04:00
hanslivingstone
6a848b1a16
Require a minimum of TLS 1.2 (#1889)
TLS 1. is deprecated: https://www.ietf.org/rfc/rfc8996.html
2024-07-30 17:18:33 -04:00
mol123
c8bcaf8a91
Fix build when targeting Windows 7 as platform. (#1869)
* Fix build when targeting Windows 7 as platform.

This change makes more of the code introduced in
https://github.com/yhirose/cpp-httplib/pull/1775
conditional on feature macros.

`CreateFile2`, `CreateFileMappingFromApp` and `MapViewOfFileFromApp` are
available only starting from Windows 8.

 * https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfile2
 * https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-createfilemappingfromapp
 * https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-mapviewoffilefromapp

* Update feature macros used and use `GetFileSizeEx` conditionally.
2024-07-02 10:58:40 -04:00
Hlado
8cd0ed0509
Added move assignment operator to Client class. (#1873) 2024-06-30 11:17:00 -04:00
Daniel Ludwig
388a8c007c
Fix build on Windows with no WINAPI_PARTITION_APP support (#1865) 2024-06-24 15:13:37 -04:00
Zhenlin Huang
9e4f93d87e
Allow hex for ipv6 literal addr in redirect (#1859)
Co-authored-by: jaredhuang <jaredhuang@tencent.com>
2024-06-17 11:44:51 -04:00
Rainer Schielke
c1a09daf15
avoid memory leaks if linked with static openssl libs (#1857)
* New function SSLServer::update_certs. Allows to update certificates while server is running

* New function SSLServer::update_certs. Added unit test

* avoid memory leaks if linked with static openssl libs

---------

Co-authored-by: CEU\schielke <Rainer.Schielke@heidelberg.com>
2024-06-14 15:40:03 -04:00
yhirose
8438df4a95 Release v0.16.0 2024-06-11 18:20:47 -04:00
Rainer Schielke
d44031615d
New function SSLServer::update_certs. Allows to update certificates while server is running (#1827)
* New function SSLServer::update_certs. Allows to update certificates while server is running

* New function SSLServer::update_certs. Added unit test

---------

Co-authored-by: CEU\schielke <Rainer.Schielke@heidelberg.com>
2024-06-03 09:37:40 -04:00
Sean Quinn
98cc1ec344
Allow hex for ip6 literal addr, fix #1800 (#1830)
* Allow hex for ip6 literal addr, fix #1800

* Add UT for ipv6 + Universal client implementation

* add /n at EOF
2024-05-26 08:57:07 -04:00
Pavel P
05f9f83240
Avoid unreferenced formal parameter warning in get_range_offset_and_length (#1838)
Release builds result in the following warning because `content_length` param was used only inside asserts:

1> cpp-httplib\httplib.h(4933,45): warning C4100: 'content_length': unreferenced formal parameter
2024-05-17 09:56:06 +09:00
Karen Dombroski
fb739dbaec threadsafe accept on windows, linux
* Windows has WSAAccept() which will create sockets inheriting flags from
  the server socket

* Linux has accept4() which has a flags argument supporting SOCK_CLOEXEC
2024-05-01 21:58:58 +12:00
Karen Dombroski
50fce538c6 threadsafe CLOEXEC on platforms that support it
SOCK_CLOEXEC is a flag available on some platforms to enable creation of
sockets with CLOEXEC already set
2024-05-01 21:46:50 +12:00
Jiwoo Park
3b6597bba9
Fix query parsing when value has = characters (#1822)
* Implement string divider to replace splitter

* Divide query string in half

* Add a test case for query values containing the '=' character

* Add test cases for string divider

* Fix warnings
2024-04-21 19:17:14 -04:00
rndm13
2bc550b2f0
Added progress to POST, PUT, PATCH and DELETE requests (#1821)
* Added progress to POST, PUT, PATCH, DELETE requests

* Added tests for post, put, patch, delete progress/cancellation

* fix accidental infinite recursion in delete

---------

Co-authored-by: rndm <rndm@localhost.localdomain>
2024-04-21 19:13:41 -04:00
Kent
560854a961
Apply range header base on response status code (#1806)
* Enable ignoring range header to generate customized response

* Apply range header base on response status code
2024-04-11 23:28:21 -04:00
yhirose
07288888ad Code cleanup 2024-04-11 22:26:30 -04:00
yhirose
34d392cf3d Merge branch 'fix' of github.com:HerrCai0907/cpp-httplib into HerrCai0907-fix 2024-04-11 22:22:58 -04:00
yhirose
825c3fbbb1 Removed excess usage of std::move 2024-04-11 21:21:27 -04:00
Rusty Conover
00bdf73ec6
fix: increase default receive buffer to 16kb (#1814)
Since TLS packets have a maximum size of 16kb it makes
sense to fully accommodate them on reads.

Co-authored-by: Rusty Conover <rusty@Juno.local>
2024-04-09 16:59:07 -04:00
Jiwoo Park
f44ab9b3da
Fix range parser when parsing too many ranges (#1812)
* Implement range parser without std::regex

* Add test cases for invalid ranges
2024-04-07 10:06:16 -04:00
yhirose
548dfff0ae Fix #1793 2024-03-09 22:26:17 -05:00
Congcong Cai
4dd2f3d03d fix ambiguous for HandlerWithResponse and Handler in set_error_handler
using lambda expression as Handler in set_error_handler will cause ambiguous.
Template forwarding can forward HandlerWithResponse to the correct overloading function
2024-03-07 19:07:39 +08:00
Jiwoo Park
c5a0673c93
Use final keyword for devirtualization (#1779) 2024-02-17 09:17:15 -05:00
Sergey
ad40bd6a00
Implement file mapping for UWP apps (#1775)
Fixes #1773.
2024-02-08 22:59:34 -05:00
yhirose
5c00bbf36b Release v0.15.3 2024-02-05 22:12:43 -05:00
yhirose
9d6f5372a3 Fix #1772 2024-02-05 22:11:53 -05:00
yhirose
80c0cc445e Release v0.15.2 2024-02-02 23:29:30 -05:00
yhirose
762024b890 Fix #1768 2024-02-02 23:17:32 -05:00
yhirose
82a90a2325 Update year 2024-01-29 08:53:01 -05:00
yhirose
b7cac4f4b8 Release v0.15.1 2024-01-29 07:40:56 -05:00
yhirose
e323374d2a Fix #1766 2024-01-28 17:43:51 -05:00
Jiwoo Park
ffc294d37e
Reduce object copy (#1767) 2024-01-28 08:18:29 -05:00
yhirose
fceada9ef4 Changed to return 416 for a request with an invalid range 2024-01-28 08:13:19 -05:00
yhirose
5f0f73fad9 Reduce duplicate computation for ranges 2024-01-27 19:07:52 -05:00
yhirose
530d6ee098 Release v0.15.0 2024-01-27 17:39:58 -05:00
yhirose
420c9759c6 Fix #1694 2024-01-27 16:13:54 -05:00
yhirose
2ce7c22218 Fix #1747 2024-01-27 12:56:39 -05:00
Wander Nauta
4ef9ed80cd
Treat paths with embedded NUL bytes as invalid (#1765)
Fixes #1763.
2024-01-27 08:22:00 -05:00
Jiwoo Park
44b3fe6277
Support move semantics for Response::set_content() (#1764) 2024-01-27 07:53:19 -05:00
Ilya Andreev
449801990f
Add a getter for a bearer token from a request (#1755)
* Add a getter for a bearer token from a request

* Replace a method for bearer token getter with a free function
2024-01-15 08:57:22 -05:00
Jean-Francois Simoneau
af2928d316
Fix select() return code for fd >= 1024 (#1757) 2024-01-15 08:27:31 -05:00
Matthias Bilger
65218ce222
added missing include of exception (#1752) 2023-12-31 18:59:43 -05:00
Adam Gajda
55e99c4030
Fix -Wold-style-cast warning (#1751) 2023-12-31 18:43:31 -05:00
TheOnlyJoey
b63d50671d
Fixes Windows std::max macro problems (#1750) 2023-12-30 11:37:58 -05:00
yhirose
eba980846b
Fix #1628 (OpenSSL 1.1.1 End of Life on September 11, 2023) (#1745) 2023-12-24 08:20:58 -05:00
vmaffione
374d058de7
ThreadPool: optional limit for jobs queue (#1741)
For very busy servers, the internal jobs queue where accepted
sockets are enqueued can grow without limit.
This is a problem for two reasons:
 - queueing too much work causes the server to respond with huge latency,
   resulting in repetead timeouts on the clients; it is definitely
   better to reject the connection early, so that the client
   receives the backpressure signal as soon as the queue is
   becoming too large
 - the jobs list can eventually cause an out of memory condition
2023-12-24 08:20:22 -05:00
yhirose
ad9f6423e2 Fix #1744 2023-12-23 11:45:08 -05:00
yhirose
cbca63f091 Release v0.14.3 2023-12-21 19:55:25 -05:00
yhirose
b4748a226c Fix #1738 2023-12-21 13:33:52 -05:00
Ilya Andreev
c86f69a105
Use StatusCode in httplib code (#1742) 2023-12-19 22:17:24 -05:00
Ilya Andreev
d39fda0657
Add StatusCode enum (#1739)
* Add StatusCode enum

* Remove changes on RFC 9110

* Add number suffixes to StatusCode constants

* Remove docs for StatusCode constants
2023-12-19 17:57:30 -05:00
Ilya Andreev
37f8dc4382
Change some of status messages based on RFC 9110 (#1740) 2023-12-19 09:22:58 -05:00
yhirose
8aa38aecaf Fix #1665 2023-12-17 22:03:02 -05:00
yhirose
f1dec77f46 Code format 2023-12-17 22:00:33 -05:00
yhirose
cddaedaff8 Fix #1736 2023-12-15 19:29:54 -05:00
davidalo
e426a38c3e
Fix: Query parameter including query delimiter ('?') not being parsed properly (#1713)
* Fix: Query parameter including query delimiter ('?') not being parsed properly

* Add details::split function with and without m argument to allow split parameters with/without counter

* Revert changes in SplitTest.ParseQueryString
2023-12-07 14:28:41 -05:00
yhirose
f14accb7b6 Release v0.14.2 2023-12-04 22:31:12 -05:00
yhirose
c5c704cb3b Fix #1724 2023-12-04 21:34:55 -05:00
Jean-Francois Simoneau
115a786581
Fix readability warnings (#1722)
* Fix readability warnings

Did not fix readbility-qualified-auto, will do a separate pull request

* Revert changes where meaning is lost

* Revert some style changes
2023-11-24 09:55:04 -05:00
Jean-Francois Simoneau
5ef4cfd263
Fix bugprone warnings (#1721) 2023-11-20 22:14:00 -05:00
Jean-Francois Simoneau
03fecb2f78
Fix modernize warnings (#1720) 2023-11-20 22:10:04 -05:00
Jean-Francois Simoneau
7fc8682a0a
Fix performance-noexcept-move-constructor (#1715) 2023-11-20 13:13:59 -05:00
Jiwoo Park
1d14e051a5
Remove cryptui on Windows (#1710) 2023-11-11 21:26:57 -05:00
Jiwoo Park
1d6b22b5f0
Fix C6001 (#1701) 2023-10-30 07:13:40 -04:00
yhirose
1a49076b5b Removed unnecessary exception 2023-10-29 19:36:40 -04:00
yhirose
e2813d9d4d Code cleanup. (Removed unnecessary .c_str() calls) 2023-10-23 16:43:12 -04:00
yhirose
0a629d7391 Release v0.14.1 2023-09-30 22:26:23 -04:00
PabloMK7
a609330e4c
Add optional user defined header writer (#1683)
* Add optional user defined header writer

* Fix errors and add test
2023-09-30 22:13:14 -04:00
yhirose
30b7732565 Release v0.14.0 2023-08-22 20:19:07 -04:00
yhirose
6650632e7f Fix #1638 2023-08-22 19:36:10 -04:00
Sven Panne
afe627e7af
Avoid a -Warray-bounds false positive in GCC 13. (#1639)
The exact circumstances when this false positive is triggered are quite
tricky to reproduce, but it happened reproducibly with g++ 13.1 and 13.2 in
a close-source SW I'm working on.  The fix even improves performance by a
very tiny bit: There is no need to copy the std::smatch, having a const
reference is enough.

Just as a side note: -Warray-bounds seems to cause trouble in other
projects, too, so e.g. the Linux kernel has disabled since June 2022.
2023-08-14 10:26:54 -04:00
Duncan Ogilvie
67f6ff7fa9
Fix CPPHTTPLIB_ALLOW_LF_AS_LINE_TERMINATOR (#1634) 2023-08-03 17:01:40 -04:00
yhirose
c7ed1796a7 Release v0.13.3 2023-07-31 21:28:33 -04:00
yhirose
44c62d838e
Use memory mapped file for static file server (#1632)
* Use memory mapped file for static file server

* Fix build error
2023-07-31 07:43:50 -04:00
yhirose
6bb580cda8 Fix #1559 2023-07-31 00:27:26 -04:00
yhirose
00a8cb8e5d Code cleanup 2023-07-31 00:22:22 -04:00
yhirose
01b90829bc Removed unnecessary CRLF at the end of multipart ranges data 2023-07-31 00:22:22 -04:00
yhirose
e699bd0730 Release v0.13.2 2023-07-29 12:26:19 -04:00
Akın ELDEN
961a9379d5
Fix #1590 (#1630)
* ClientImpl: Connection=close header control moved from process_request to send_

* Connection=close header control moved from send_ to handle_request

* SSLClient::connect_with_proxy error handling improved

* to_string definition added for Error::ProxyConnection

* Comment improvement

---------

Co-authored-by: akinelden <akin.elden@gmail.com>
2023-07-29 12:09:25 -04:00
yhirose
ec87b04aff Fix #1619 2023-07-29 00:53:57 -04:00
yhirose
aabf752a51 Fix #1519 2023-07-28 23:37:45 -04:00
yhirose
afb0674ccb Fix #1624 2023-07-21 20:36:01 -04:00
bdenhollander
ee625232a4
Fix successful decompress reported as Error::Read (#1612)
* Fix successful decompress reported as Error::Read

Streams less than 4096 bytes are sometimes reported as failed reads because stream_.avail_in is not reduced to 0. The next iteration of the loop finds `prev_avail_in == strm_.avail_in` and return false. `ret = inflate(...)` returns Z_STREAM_END on the first iteration of the loop indicating that inflate is finished. This fix prevents the second iteration of the loop from failing.

* Fix successful decompress reported as Error::Read

- Add unit tests for raw deflate that illustrates the decompression failure when there are extra trailing bytes
2023-07-11 18:35:27 -04:00
yhirose
0f1b62c2b3 Release v0.13.1 2023-07-08 07:41:24 -04:00
yhirose
c30906a541 Code cleanup 2023-07-07 19:43:37 -04:00
bgs99
3533503323
Fix explicit constructor warning (#1614) 2023-07-07 13:17:19 -04:00
yhirose
82acdca638 Release v0.13.0 2023-07-06 18:32:42 -04:00
vmaffione
a1e56a567b
Result: allow default constructor (#1609) 2023-07-05 12:05:29 -04:00
yhirose
0c17d172a2 Code cleanup 2023-07-05 09:06:21 -04:00
bgs99
17fc522b75
Add named path parameters parsing (Implements #1587) (#1608)
* Add named path parameters parsing

* Select match mode based on pattern

* Add examples and comments to README

* Add documentation to matchers
2023-07-05 07:44:19 -04:00
yhirose
f1daa5b88b Fix #1607 2023-07-04 20:27:11 -04:00
yhirose
50cba6db9f Fix #1603 2023-06-27 21:23:23 -04:00
yhirose
bd9612b81e
Changed to use auto (#1594) 2023-06-17 02:18:34 -04:00
yhirose
7ab5fb65b2
Code cleanup (#1593) 2023-06-16 18:08:28 -04:00
Andre Eisenbach
8df5fedc35
Fix -Wold-style-cast warnings (#1591)
Removed multiple old-style (C) casts and replaced them with the
appropriate _cast's. This makes httplib a better citizen inside projects
that are compiled with all warnings enabled.

Unfortunately one warning remains as a result of invoking an
OpenSSL macro (at least on Linux), that would have to be fixed
upstream.

Also fixed a few casts for invocations of setsockopt.
setsockopt takes a const void* for the value pointer, not a char*.
Well, except on Windows ...

Co-authored-by: Andre Eisenbach <git@4ae.us>
2023-06-16 17:30:24 -04:00
Jiwoo Park
4a61f68fa4
Don't overwrite the last redirected location (#1589)
* Don't overwrite the last redirected location

* Check the last redirected location
2023-06-16 14:56:16 -04:00
yhirose
d3076f5a70 v0.12.6 2023-06-10 07:02:38 +09:00
yhirose
ed129f057f Fixed C++11 warnings and code format 2023-06-09 20:49:46 +09:00
Jiwoo Park
eab5ea01d7
Load in-memory CA certificates (#1579)
* Load in-memory CA certs

* Add test cases for in-memory cert loading

* Don't use the IIFE style
2023-06-09 16:34:51 +09:00
v1gnesh
4f33637b43
Add support for zOS (#1581)
Signed-off-by: v1gnesh <v1gnesh@users.noreply.github.com>
2023-06-06 14:14:06 +09:00
db-src
698a1e51ec
Move, not copy, Logger and Handler functors (#1576)
* Explicitly #include <utility> for use of std::move

* Move not copy Logger arg from Client to ClientImpl

* Move not copy, set_error_handler Handler to lambda

* Remove null statement in non-empty if/else block

I guess it was a relic from a time before the other statement was added.

---------

Co-authored-by: Daniel Boles <daniel.boles@voltalis.com>
2023-06-02 15:40:00 +09:00
yhirose
27c0e1186c Release v12.0.5 2023-05-30 16:09:42 +09:00
yhirose
f8ef5fab64 Release v0.12.4 2023-05-27 00:57:43 +09:00
yhirose
5b397d455d Fix more CRLF injection problems. 2023-05-22 22:56:16 +09:00
yhirose
f977558a28 Release v0.12.3 2023-04-30 10:44:36 +09:00
Oleg Shparber
c2e156e0e0
Fix leaked handle in create_socket (#1554)
Fixes resource leak problem detected by Coverity Scan.
2023-04-09 12:18:44 -04:00
yhirose
7aba2938d3 Fix #1548 2023-04-08 15:36:13 -04:00
yhirose
d587548250 Fix #1545 2023-04-08 14:53:55 -04:00
Sergey Kazmin
e62a4b02e5
fix (#1525)
Co-authored-by: Sergey Kazmin <sergey.kazmin@kaspersky.com>
2023-04-04 07:12:15 -07:00
Octavio Valle
ff34749572
Initialize sockaddr_un to fix valgrind uninitialised byte message. (#1547) 2023-04-03 08:28:01 -07:00
Jiwoo Park
e5804d4a50
Don't loading system certs from Keychain on iOS (#1546) 2023-04-01 06:26:30 -07:00
yhirose
76230db97f Simplified scope_exit 2023-03-25 21:52:39 -04:00
yhirose
a66a013ed7 Release v0.12.2 2023-03-25 21:47:14 -04:00
yhirose
f4b02dfdc1 Fix #1533 2023-03-25 21:13:07 -04:00
yhirose
4cf218643e Code format 2023-03-25 21:12:40 -04:00
Johannes Flügel
d262033ded
Prevent overflow in hash function str2tag_core() (#1529)
* str2tag_core(): prevent overflow

* Update httplib.h

works for all sizes of unsigned int and if there exists a #define for max
2023-03-22 14:16:32 -04:00
yhirose
88a9278872 Fix #1486 2023-03-11 17:04:08 -05:00
yhirose
9bb3ca8169
Fix #1459 (#1523) 2023-03-10 22:21:42 -05:00
yhirose
f2f4728489 Release v0.12.1 2023-03-10 17:53:19 -05:00
Mathieu Gaillard
df74526f91
Fix multipart Content-Type headers with both boundary and charset parameters (#1516)
* Fix multipart Content-Type headers with both boundary and charset parameters

* Improve code readability

* Add missing forward declaration

---------

Co-authored-by: Mathieu Gaillard <gaillard@adobe.com>
2023-03-08 23:57:17 -05:00
Joel Rosdahl
9f7ae0737a
Fix typos (#1517) 2023-03-08 17:03:20 -05:00
yhirose
1ebb8412c5 Use SSL_ERROR_ZERO_RETURN to check if the SSL peer is closed. 2023-03-07 08:15:16 -05:00
yhirose
c7e959a948 Fix #1481 2023-03-04 18:14:00 -05:00
yhirose
ba5884e779
Fix #1481 (#1513) 2023-03-03 23:45:19 -05:00
yhirose
cdaa5c48db Code cleanup 2023-03-03 22:41:57 -05:00
yhirose
75053bf855
Fix #1498 (#1501)
* Fix #1498

* Fixed build error
2023-02-22 13:19:36 -05:00
Sergey Kazmin
6d963fbe8d
Support loading system certs from Keychein on MacOS (#1474)
* Support loading system certs from Keychein on MacOS

* review improvements: add deps to meson.build and improve conditional expressions in cmake

* fix tabs

* fix tabs

* review improvements

* fix after review

* additionally load root certs from the system root keychain

* cmake fix

* fix

* small refactoring

* small refactoring

---------

Co-authored-by: Sergey Kazmin <sergey.kazmin@kaspersky.com>
2023-02-17 12:06:55 -05:00
jingTian-z
88f6245c84
feat: Add Request::get_file_multi_value func. (#1495)
Support to get multiple values of a key.

perf: Rename function names, variable names etc.
2023-02-16 21:51:06 -05:00
yhirose
0e7d2f9f93 Resolve #1482 2023-02-14 11:40:47 -05:00
yhirose
4e6ded1f36 Release v0.12.0 2023-02-07 10:27:40 -05:00
yhirose
d663588491
Removed is_writable() from DataSink (Resolve #1478, too) (#1483) 2023-02-04 13:53:42 -05:00
yhirose
c4ba43ca6f Removed incorrect comment 2023-01-24 09:07:42 -05:00
yhirose
0ff2e16d69 Issue 52666: cpp-httplib:server_fuzzer: Timeout in server_fuzzer 2023-01-21 01:09:19 -05:00
Ray Beck
51607ec752
add to_human_string (#1467)
* add to_human_string

* replace to_string with to_human_string

* fix test
2023-01-19 07:01:34 -05:00
yhirose
7992b14896 Release v0.11.4 2023-01-09 17:08:11 -05:00
Ray Beck
7e420aeed3
add support for requests with both MultipartFormDataItems and Content Providers (#1454)
* add support for requests with both MultipartFormDataItems and ContentProviders

* rework implementation

* use const auto & and fix offset calculation

* fix zero items

* snake case variables

* clang-format

* commonize get_multipart_content_provider, add Put() with MultipartFormDataProviderItems

* fix linker multiple definition error

* add test MultipartFormDataTest.DataProviderItems
2023-01-08 18:38:14 -05:00
yukun
227d2c2050
Add EINTR and EAGAIN judge for accept (#1438)
* Add EINTR and EAGAIN judge for accept

* Add EINTR signal tests

* Cancel win32 and win64 compile on signal unittest

Co-authored-by: yukun.yu <yukun.yu@alibaba-inc.com>
2022-12-20 19:34:51 -05:00
Jiwoo Park
58cffd3223
std::condition_variable::notify_one/all() should be called after unlocking mutex (#1448)
* Move next job in task queue rather than copy

* Notify waiting thread after unlocking mutex

* Add unit test for TaskQueue

* Don't use C++14 feature in test code
2022-12-09 17:37:48 -05:00
Ingo Bauersachs
8f32271e8c
Support LOCAL_ADDR and LOCAL_PORT header in client Request (#1450)
Having the local address/port is useful if the server is bound to
all interfaces, e.g. to serve different content for developers
on localhost only.
2022-12-06 08:23:09 -05:00
yhirose
c8c1c3d376 Fix #1442 2022-12-01 17:21:40 -05:00