Commit Graph

920 Commits

Author SHA1 Message Date
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
yhirose
9f512acb42 Removed code for upsupported OpenSSL 2022-12-01 13:41:18 -05:00
yhirose
c0b461a3b7 Release v0.11.3 2022-11-29 19:26:10 -05:00
yhirose
74fe5a5029 Fix #1426 2022-11-27 10:53:11 -05:00
yhirose
9d0a9d4e23 Fix #1437 2022-11-27 10:21:24 -05:00
yhirose
07c6e58951 Fix #1421 2022-11-15 11:57:14 -05:00
Pavel Artemkin
87994811a1
undef poll at the end if CPPHTTPLIB_USE_POLL (#1427)
* undef poll at the end if CPPHTTPLIB_USE_POLL

* win32 only
2022-11-13 21:49:49 -05:00
Changbin Park
93a51979c4
Get client process id over ip/port when server runs on UNIX socket. (#1418)
* handle socket options for UNIX socket same as others

 * set FD_CLOEXEC by default
 * invoke `socket_options` callback if set

* Offer Client info even on UNIX socket based Server

HTTP Request header "REMOTE_PORT" contains client process id if possible
when Server works on UNIX socket.

* retrigger checks

* retrigger checks

* add support macOS

Co-authored-by: Changbin Park <changbin.park@ahnlab.com>
2022-11-03 10:25:18 -04:00
Changbin Park
ad7edc7b27
avoid lockup in ThreadPool::shutdown() on legacy host (#1417)
It is found on CentOS 7.0.1406 which is very early version of CentOS 7.

Co-authored-by: Changbin Park <changbin.park@ahnlab.com>
2022-11-03 10:23:45 -04:00
Andreas Kempf
27cd4e6ffe
Support compilation on AIX (#1402)
Disable the ifaddrs.h include statement and the USE_IF2IP flag on AIX.
AIX is a Unix OS but does not offer the ifaddrs.h header.
2022-10-14 10:49:48 -04:00
yhirose
8e10d4e8e7 Release v0.11.2 2022-09-12 11:36:14 -04:00
Changbin Park
b57f79f438
Detecting client disconnection (#1373)
* SocketStream need to check connectivity for writability.

When the stream is used for SSE server which works via chunked content
provider it's not possible to check connectivity over writability
because it's wrapped by DataSink. It could make the server stalled, when
the provider wants to only keep connection without send data and certain
amount of clients consumes entire threadpool.

* add unittest for SocketStream::is_writable()

SocketStream::is_writable() should return false if peer is disconnected.

* revise broken unittest ServerTest.ClientStop

DataSink could be unwritable if it's backed by connection based. Because
it could be disconnected by client right after enter centent provider.

Co-authored-by: Changbin Park <changbin.park@ahnlab.com>
2022-08-30 21:11:19 -04:00
yhirose
cba9ef8c0b Issue 49740 in oss-fuzz: cpp-httplib:server_fuzzer: Timeout in server_fuzzer 2022-08-06 08:08:08 -04:00
yhirose
4f8407a3a7 Refactoring the previous commit 2022-08-04 20:56:02 -04:00
Gopinath K
656e936f49
add multipart formdata for PUT requests. (#1351)
* httplib.h

  add multipart formdata for PUT in addition to POST as some REST
  APIs use that.

  Factor the boundary checking code into a helper and use it from
  both Post() and Put().

* test/test.cc

  add test cases for the above.
2022-08-04 20:42:13 -04:00
yhirose
d92c314466 Release v0.11.1 2022-08-02 19:44:25 -04:00
Changbin Park
362d064afa
UNIX domain socket support (#1346)
* Add support UNIX domain socket

* `set_address_family(AF_UNIX)` is required

* add unittest for UNIX domain socket

* add support UNIX domain socket with abstract address

Abstract address of AF_UNIX begins with null(0x00) which can't be
delivered via .c_str() method.

* add unittest for UNIX domain socket with abstract address

Co-authored-by: Changbin Park <changbin.park@ahnlab.com>
2022-08-01 06:57:25 -04:00
Rockybilly
0b541ffebc
Add get_socket_fd method to Client and ClientImpl, add according unit… (#1341)
* Add get_socket_fd method to Client and ClientImpl, add according unit test

* Change name get_socket_fd to get_socket

* Change name get_socket to socket

Co-authored-by: ata.yardimci <ata.yardimci@erstream.com>
2022-07-31 08:27:38 -04:00
yhirose
106be19c3e Issue 49512: cpp-httplib:server_fuzzer: Timeout in server_fuzzer 2022-07-30 23:27:29 -04:00
yhirose
25d72bf881 Release v0.11.0 2022-07-29 20:45:55 -04:00
Mehmet İbrahimoğlu
9d5b5297cc
ssize_t redefinition on Windows - int/int64 vs long/long long (#1337)
* ssize_t redefinition on Windows - int/int64 vs long/long long

* Define ssize_t as __int64 for _WIN64, not long long

Co-authored-by: iamttaM <9880090+oculusbytes@users.noreply.github.com>
2022-07-29 20:42:31 -04:00
Mehmet İbrahimoğlu
462884bebb
With SSL enabled and NOMINMAX not defined, there is a conflict with 'max', which this fixes (#1334)
Co-authored-by: iamttaM <9880090+oculusbytes@users.noreply.github.com>
2022-07-27 08:16:06 -04:00
yhirose
f0eb55b327
Changed to use const std::string & as much as possible instead of const char * (#1331)
* Changed to use `const std::string &` as much as possible instead of `const char *`

* Fix problems on Windows
2022-07-22 22:44:33 -04:00
yhirose
916b2a8fd3 Merge branch 'use_exception_ptr' of https://github.com/kuguma/cpp-httplib into kuguma-use_exception_ptr 2022-07-15 17:19:39 -04:00
yhirose
37bb3c6a77
No longer support VS 2013 and older #1325 (#1326)
* Fixed a warning

* No longer support VS 2013 and older (Fix #1325)
2022-07-14 20:57:41 -04:00
Kai Aoki
d4ab2fa0e6 fix double ref and case of exceptions that are not std::exception 2022-07-15 01:45:10 +09:00
Kai Aoki
72d3f4896a Update httplib.h
use std::exception_ptr
2022-07-12 00:10:57 +09:00
yhirose
5e6f973b99 Release v0.10.9 2022-07-08 17:40:05 -04:00
yhirose
127a64d5a0
Skip preamble and epilogue in multipart/form-data (Fix #1317) (#1320)
* fix: skip MIME preamble (#1317)

* Skip epilogue in multipart/form-data

Co-authored-by: Gavin1937 <71205842+Gavin1937@users.noreply.github.com>
2022-07-08 17:26:50 -04:00
yhirose
caa31aafda Accept large data transfer over SSL (Fix #1261, Close #1312) 2022-07-02 07:50:33 -04:00
yhirose
dae318495f Revert "Accept large data transfer over SSL (#1261)"
This reverts commit 307b729549.
2022-07-02 07:18:59 -04:00
Andrea Pappacoda
305a7abcb9
fix: update CPPHTTPLIB_VERSION to 0.10.8 (#1305) 2022-06-08 16:44:10 -04:00
yhirose
219d13b718 Fix #1303 2022-06-07 09:52:08 -04:00
conghuawang
df20c27696
resolve http server can't send file large than 2GB (Fix #1290) (#1294)
* resolve problem: http server can't send file large than 2GB.
add unit test for http server send large file.
add /bigobj compile option to msvc x64.

* disable unit test "ServerLargeContentTest" due to out-of-memory on GitHub Actions.
2022-05-27 11:56:20 -04:00
yhirose
a5a62768c0
Fix #1292 (#1296) 2022-05-27 11:54:43 -04:00
yhirose
4001637beb Added CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 2022-05-26 10:16:32 -04:00
Martín Córdova
47044c05a8
Fix compile error with MINGW-64 GCC-12.1.0 (#1283) 2022-05-24 07:16:54 -04:00
yhirose
9452c0a4b6 Release v0.10.7 2022-04-28 10:21:14 -04:00
Yoshiki Matsuda
307b729549
Accept large data transfer over SSL (#1261)
* Add large data transfer test

* Replace `SSL_read` and `SSL_write` with `ex` functions

* Reflect review comment

* Fix return value of `SSLSocketStream::read/write`

* Fix return value in the case of `SSL_ERROR_ZERO_RETURN`

* Disable `LargeDataTransfer` test due to OoM in CI
2022-04-27 21:08:39 -04:00
mylogin
696239d6e1
Link Windows crypto libs only when CPPHTTPLIB_OPENSSL_SUPPORT is set (#1254) 2022-04-20 22:04:55 -04:00
yhirose
d87abeecf0 Release v0.10.6 2022-04-17 17:34:48 -04:00
yhirose
4e28e4f741 Fix #1251 2022-04-17 11:53:41 -04:00
yhirose
d05c343602 Release v0.10.5 2022-04-16 21:02:30 -04:00
yhirose
33f67386fe Fix #1249 2022-04-16 08:54:56 -04:00
yhirose
56d8168dc4 clangformat 2022-04-16 08:52:55 -04:00
greenfish
5d87cc0558
resolve compiler warnings (#1246)
* resolve compiler warnings

- check `WSAStartup` return.
- `const` is not suitable for `std::move`.

* resolve compiler warnings

- bool startup => bool is_valid_.
- remove `const` not removed.
2022-04-14 11:46:10 -04:00
yhirose
cb41947eb4
Fix #1235 (#1243)
* Fix #1235

* fix BindIPAddress error (#1242)

* Code cleanup

* Added a unit test

* Commented out 'SSLClientTest.SetInterfaceWithINET6'

* Fixed incorrect return value from if2ip

* Removed if_nametoindex call

Co-authored-by: Kotarou <2918558+CyberKoo@users.noreply.github.com>
2022-04-13 21:32:46 -04:00
Kotarou
0857eba17b
replace deprecated OpenSSL functions with evp functions (#1241) 2022-04-11 13:40:58 -04:00
Andrea Pappacoda
bf0760fde4
fix: update user agent (#1218) 2022-03-18 18:12:51 -04:00
yhirose
a1df576e4f Fix #1212 2022-03-16 22:00:40 -04:00
yhirose
7fb0254794 Fix #1215 2022-03-16 12:50:13 -04:00
yhirose
c82d1e52cc Fix #1214 2022-03-16 10:56:33 -04:00
yhirose
e12fe4cbbb Performance improvement 2022-02-27 14:30:49 -05:00
Sebastien Blanchet
8191fd8e6c
Add optional private key password to SSLServer ctor (#1205) 2022-02-27 14:16:15 -05:00
yhirose
d73395e1dc Release v0.10.3 2022-02-22 10:21:27 -05:00
au-ee
64d001162b
CPPHTTPLIB_NO_DEFAULT_USER_AGENT skips default user agent (#1201) 2022-02-22 09:39:26 -05:00
yhirose
bb00a23116 Apply clangformat 2022-02-09 17:16:47 -05:00
Rockybilly
7f43f0f3ff
User-Agent update cpp-httplib/0.10.2 (#1181) 2022-01-28 12:27:27 -05:00
Gregor Jasny
87e03dd1ce
Report connection timeout as separate event (#1171) 2022-01-26 17:32:40 -05:00
yhirose
e5cacb465d
Fix #1172 (#1173)
This change is based on RFC7230, § 3.5 'Message Parsing Robustness': "Although the line terminator for the start-line and header fields is the sequence CRLF, a recipient MAY recognize a single LF as a line terminator and ignore any preceding CR."
2022-01-26 13:34:23 -05:00
yhirose
b61f36579c Fix #1166 2022-01-20 15:24:09 -05:00
yhirose
65a8f4cf44 Added hosted_at. (Resolve #1113) 2021-12-31 15:35:52 -05:00
yhirose
27d128bbb4 Fix problems in #1154 2021-12-31 14:55:40 -05:00
yhirose
070f9bec58 Code cleanup 2021-12-31 13:27:47 -05:00
c00c
f817032513
fix socket option setting for windows (#1154)
* fix socket option setting for windows

* misc

Co-authored-by: zhangsen <zhangsen@cyberkl.com>
2021-12-31 10:07:59 -05:00
yhirose
17abe221c0
Fix is_file problem on Windows (#1153) 2021-12-30 14:54:57 -05:00
vitaly-ivanov
4a7a81e039
Work around silly Win defines to support BoringSSL (#1148)
* Work around silly Win defines to support BoringSSL

* changes wrapped into ifdef(_WIN32) just in case
2021-12-30 11:08:51 -05:00
yhirose
37fd4eb643 Code cleanup 2021-12-26 07:53:56 -05:00
yhirose
865b0e4c03 Resolve #1145 2021-12-26 07:53:06 -05:00
yhirose
b324921c1a Release v0.10.1 2021-12-24 21:01:06 -05:00
yhirose
63f72caf30 Fix "Issue 42689 in oss-fuzz: cpp-httplib:server_fuzzer: Timeout in server_fuzzer" 2021-12-24 20:58:09 -05:00
yhirose
99ac17b90a Fix #1140 2021-12-23 23:19:14 -05:00
yhirose
4b0ed9ee88 Release v0.10.0 2021-12-21 18:15:41 -05:00
yhirose
3b35279b16 Added SSLServer::ssl_context() 2021-12-18 00:21:41 -05:00
yhirose
27deb44df5 Update SSL related code 2021-12-18 00:15:38 -05:00
yhirose
24a3ef949b Performance improvement for multipart form data file upload. 2021-12-18 00:15:10 -05:00
yhirose
793ae9855e
Fix #1041 (#1132)
* Fix #1041

* Fixed problem with is_socket_alive

* Adjust the way to check if the sockt is still alive.

* Revert "Adjust the way to check if the sockt is still alive."

This reverts commit 6c673b21e5.

* Adjust is_socket_alive according to the code review
2021-12-16 21:06:17 -05:00
yhirose
cec6288a99 Resolve #1131 2021-12-14 07:58:21 -05:00
yhirose
9639578c2a Release v0.9.10 2021-12-11 19:26:22 -05:00
yhirose
743ecbd365
Issue1121 (#1122)
* Fixed test/Makefile problem when cleaning *.pem files

* Fix #1121
2021-12-11 19:07:12 -05:00
yhirose
ddff782133 Release v0.9.9 2021-11-26 20:46:38 -05:00
yhirose
3051152103
Fix #1102 (#1108) 2021-11-26 20:44:58 -05:00
yhirose
06026bb47d Code formating 2021-11-23 10:53:05 -05:00
yhirose
226388ae27 Resolve #1100 2021-11-23 10:47:30 -05:00
Scott Graham
ea7548b4cc
Remove stray ; causing warning with -Wextra-semi (#1099) 2021-11-22 07:16:07 -05:00
Rodolphe
c7486ead96
accept protobuf encoding (#1096)
Co-authored-by: rodolphe <rodolphe@zen.ly>
2021-11-17 13:14:31 -05:00
yhirose
ec56dfa35e
Fix #1085 (#1091) 2021-11-15 14:37:10 -05:00
zhenyolka
4f8fcdbaf7
Allow to specify server IP address (#1067)
* Allow to specify server IP address

* Reimplement in set_hostname_addr_map

* Add tests for set_hostname_addr_map

* Fix tests after implement set_hostname_addr_map

* SpecifyServerIPAddressTest.RealHostname typo
2021-10-16 15:05:55 -04:00
CarlosLeeGit
b80aa7fee3
support custom ssl ctx configuration for SSLServer (#1073) 2021-10-15 07:13:16 -04:00
yhirose
d17ac3bb40 Fix "Issue 39922 in oss-fuzz: cpp-httplib:server_fuzzer: Timeout in server_fuzzer" 2021-10-14 08:55:29 -04:00
yhirose
c7554ccac2
Fix #1069 (#1070) 2021-10-09 20:35:58 -04:00
estshorter
3da42fd1e8
Avoid min/max macro expansion on Windows (#1057) 2021-09-25 08:53:15 -04:00
yhirose
503aa61325 Fix problem with an empty parameter in set_base_dir 2021-09-20 17:40:05 -04:00
Zizheng Tai
e1efa337a2
Make Client move-constructible (#1051) 2021-09-16 14:05:42 -04:00
yhirose
3c522386e9 Fix "Issue 38551 in oss-fuzz: cpp-httplib:server_fuzzer: Timeout in server_fuzze" 2021-09-12 19:24:48 -04:00
yhirose
c202aa9ce9
Read buffer support. (Fix #1023) (#1046) 2021-09-12 00:26:02 -04:00
yhirose
4e05368086 Fix #1054 2021-09-11 14:13:49 -04:00
yhirose
e1afe74fe2 Fix #1037 2021-09-10 22:42:14 -04:00
Gregor Jasny
415edc237c
Set error variable for failed write_data (#1036) 2021-09-05 16:15:46 -04:00
yhirose
ab477b5631 Fix "Issue 37742 in oss-fuzz: cpp-httplib:server_fuzzer: Timeout in server_fuzzer" 2021-09-02 22:57:57 -04:00
yhirose
0823d5c7f2 Fixed #1031 2021-08-30 17:16:31 -04:00
yhirose
4297500928 Fix #1024 2021-08-17 09:28:17 -04:00
Thomas Behn
a58f042614
Don't define INVALID_SOCKET if it has been defined already (i.e. by libpcap) (#1021)
Co-authored-by: Thomas Behn <Thomas.Behn@meinberg.de>
2021-08-10 08:29:27 -04:00
Joel Rosdahl
887074efd2
Add test of httplib.h split into .h + .cc (#1015)
In order to test the split version (.h + .cc via split.py):

- Added a test_split program in the test directory whose main purpose is
  to verify that it works to compile and link the test case code against
  the split httplib.h version.
- Moved types needed for test cases to the “header part” of httplib.h.
  Also added forward declarations of functions needed by test cases.
- Added an include_httplib.cc file which is linked together with test.cc
  to verify that inline keywords have not been forgotten.

The changes to httplib.h just move code around (or add forward
declarations), with one exception: detail::split and
detail::process_client_socket have been converted to non-template
functions (taking an std::function instead of using a type parameter for
the function) and forward-declared instead. This avoids having to move
the templates to the “header part”.
2021-07-31 09:53:30 -04:00
Joel Rosdahl
9c2c15ca45
Add missing template method implementations (#1013)
When using the split version of httplib.h the templated implementation
of e.g. Client::set_connection_timeout ends up in httplib.cc and
therefore results in a linker error since the needed template
specialization has not been instantiated. Fix this by moving the
implementation of template methods into the part that ends up in
httplib.h after the split.

Fixes #1008.
2021-07-30 10:05:49 -04:00
yosh-matsuda
879dd261c2
Fix gzip compression/decompression over 4 GiB data size (#1002)
* Fix gzip compression/decompression over 4 GiB data size

* Add gzip test for large random data
2021-07-22 22:07:40 -04:00
xxrl
52f5eb5980
[Fix] ca_cert_path/ce_cert_store lose (#1004)
When redirect from http to https, user setting for ca_cert will lose

issue: #1003
2021-07-22 21:41:41 -04:00
Gregor Jasny
ea2f69a0d7
Add httplib::Error to std::string function (#999)
Fixes: #978
2021-07-19 21:17:44 -04:00
yhirose
e3750d9ddf Simplefied server APIs 2021-07-17 18:09:30 -04:00
yhirose
c1eee3012e Fix #998 2021-07-17 17:18:56 -04:00
yhirose
06bfa7e08b Fix #979 2021-07-14 22:49:49 -04:00
yhirose
3d83cbb872 Improve string compare performance 2021-07-12 23:51:56 -04:00
yhirose
8a803b30f6 Fix #990 2021-07-12 23:46:25 -04:00
yhirose
80be649de7 Fix #961 2021-06-26 18:26:33 -04:00
Gregor Jasny
6b9ffc8bec
Remove dead code (#965) 2021-06-18 07:20:34 -04:00
Simon Edlund
d903053faf
Update httplib.h (#964)
operator""_ replaced by operator""_t
2021-06-17 10:57:25 -04:00
yhirose
676f1b5a26 Updated the user agent string 2021-06-14 08:43:12 -04:00
Baruch Nissenbaum
b8dec12f15
Limit SSL_ERROR_WANT_READ retries to 1 sec (#957)
retry with 1ms delays to prevent CPU hoggin
2021-06-14 08:41:20 -04:00
yhirose
fc9b223acc Updated copyright year 2021-06-11 14:45:35 -04:00
CncGpp
ba824089d7
Fix code err code 401 when the password is empty in base_auth. (#958) 2021-06-11 14:39:33 -04:00
yhirose
5a43bb8149 Implemented #946 in a different way 2021-06-02 13:45:47 -04:00
yhirose
0104614656 Code refactoring 2021-06-02 08:11:31 -04:00
yhirose
77a77f6d2d Added set_default_headers on Server 2021-05-23 19:06:28 -04:00
Mathias Laurin
089b9daa1c
Fix virtual call in ClientImpl::~ClientImpl() (#942)
* Fix virtual call in ClientImpl::~ClientImpl()

This fixes a warning in clang tidy:

> Call to virtual method 'ClientImpl::shutdown_ssl' during
> destruction bypasses virtual dispatch

ClientImpl::~ClientImpl() calls lock_socket_and_shutdown_and_close()
that itself calls shutdown_ssl().  However, shutdown_ssl() is virtual
and C++ does not perform virtual dispatch in destructors, which results
in the wrong overload being called.

This change adds a non-virtual shutdown_ssl_impl() function that is
called from ~SSLClient().  We also inline sock_socket_and_shutdown_and_close()
and removes the virtual call in ~ClientImpl().

* Inline and remove lock_socket_and_shutdown_and_close()

The function only has one caller.
2021-05-22 20:15:20 -04:00
yhirose
ba34ea4ee8 Fix #944 2021-05-22 19:24:50 -04:00
Baruch Nissenbaum
2917b8a005
Explicit cast from size_t to uInt (#941)
* Explicit cast from size_t to uInt

* static_cast<uInt> instead of C style cast
2021-05-19 18:03:59 -04:00
yhirose
75fdb06696 Added a missing member in copy_settings. 2021-05-15 09:14:44 -04:00
Alex Hornung
e00ad37580
Add option to bypass URL encode of path (#934) 2021-05-15 08:48:25 -04:00
Vincent Stumpf
5cfb70c2b4
Fix some shadowed variable warnings (#935) 2021-05-15 08:46:16 -04:00
Alessio Pollero
2a70c45697
Fix client.cc code, since res.error() without operator overloading… (#921)
* Fix client.cc code, since res.error() without operator overloading causing error in Xcode

* Add unit test to check new error to string with operator overloading

* Add inline as requested in code review comment
2021-05-01 13:29:23 -04:00
Aswin Raj Kharel
c58b00580e
reserving before encoding (#912) 2021-04-24 16:19:14 -04:00
Ken Schalk
7c60e69c33
Remove redunant call to close_socket (#911) 2021-04-23 17:07:19 -04:00
yhirose
73e0729f63 Change sink.write() to return boolean 2021-04-22 07:14:08 -04:00
yhirose
21c529229c Fixed timeout issues 2021-04-22 07:14:08 -04:00
yhirose
63643e6386 Code format 2021-04-13 20:52:49 -04:00
yhirose
6cc2edce99 Added set_address_family 2021-04-13 20:49:52 -04:00