yhirose
b476b55771
Fix #557
2020-07-20 17:04:50 -04:00
yhirose
5ddaf949d0
Fixed build error on Windows
2020-07-19 18:32:28 -04:00
yhirose
457a5a7501
Added compressor class
2020-07-19 17:44:45 -04:00
Daniel Ottiger
2ce080c2cb
include <wincrypt.h> as otherwise CertOpenSystemStoreW can not be found ( #568 )
...
- visual studio 2019, version 16.6.3
- 64 bit target
2020-07-15 10:17:18 -04:00
yhirose
6ad25b6cf0
Fix #566
2020-07-12 20:41:02 -04:00
yhirose
3dff60eb16
Fix #565
2020-07-10 08:18:28 -04:00
yhirose
5038314b21
Fix #564
2020-07-08 13:56:06 -04:00
yhirose
6e1297cab0
Fix #150 ( #556 )
2020-07-07 18:55:46 -04:00
yhirose
7de743c962
Code format
2020-07-04 00:11:32 -04:00
Umiade
964fb5e5ca
Fix: regex can't match when proxy was set to some web debugger(e.g. Fiddler) ( #553 )
...
Co-authored-by: Umiade <hanyuchao@corp.netease.com>
2020-07-03 07:17:04 -04:00
yhirose
c4f3f9529b
Fix #534 ( #546 )
2020-07-02 21:57:50 -04:00
Ilya Tsybulsky
887def9490
Fix logger never called when write_content_with_provider returns false ( #549 )
2020-07-01 17:09:43 -04:00
Ilya Tsybulsky
bad6b2d22f
fix-the-code-won't compile-with-sdl-checks-on ( #550 )
2020-07-01 17:09:19 -04:00
rundong08
3d47a51430
Fixed comparison of integers of different signs. ( #544 )
2020-06-29 21:19:56 -04:00
yhirose
ce502a73e1
Fix #531
2020-06-22 14:56:18 -04:00
yhirose
6b22409217
Code format
2020-06-18 23:33:07 -04:00
yhirose
969cccd52a
Use && for parameter of boundary
2020-06-18 23:32:09 -04:00
yhirose
4a9c048bbc
Fixed problem with set_socket_options
2020-06-18 23:31:41 -04:00
yhirose
bfabbec8c7
Fix #528
2020-06-18 12:20:01 -04:00
yhirose
3e9c06cf79
Fixed #527
2020-06-18 12:18:43 -04:00
yhirose
29677540ae
Removed unnecessary yeid.
2020-06-16 21:33:10 -04:00
yhirose
71fcfeb912
Removed unnecessary code
2020-06-16 21:21:03 -04:00
yhirose
c7d22e451f
Fixed timeout calculation bugs
2020-06-16 21:20:47 -04:00
yhirose
42f9f9107f
Updated version in the User Agent string
2020-06-16 17:53:15 -04:00
yhirose
7cd25fbd63
Fix #499
2020-06-16 17:46:23 -04:00
yhirose
3dfb4ecac2
Fix #522
2020-06-15 23:09:46 -04:00
yhirose
144114f316
Fixed warnings on Windows
2020-06-13 23:20:21 -04:00
yhirose
0743d78c9b
Fixed ClientStop test error.
2020-06-14 03:01:41 +00:00
yhirose
e022b8b80b
Refactoring to make it ready for KeepAlive connection on Client
2020-06-13 21:42:23 -04:00
yhirose
f80b6bd980
Added Endpoint structure in Client
2020-06-13 01:26:57 -04:00
yhirose
5af7222217
Fixed Client::stop problem with more than one requests on threads
2020-06-12 11:04:37 -04:00
yhirose
24bdb736f0
Fix #506
2020-06-09 19:58:01 -04:00
yhirose
d0dc200633
Code format
2020-06-09 19:17:58 -04:00
Nicolas Schneider
919a51091f
replace usage of [[deprecated]] with CPPHTTPLIB_DEPRECATED ( #513 )
2020-06-03 13:12:31 -04:00
Nicolas Schneider
05e8b22989
fix cast warning ( #512 )
2020-06-03 07:44:16 -04:00
Nicolas Schneider
00dcd6b004
check for [[deprecated]] support via feature test macro ( #511 )
...
The [[deprecated]] specifier is a C++14 feature, so it might not always
be available on a C++11 compiler.
2020-06-03 07:43:56 -04:00
yhirose
a42c6b99d3
Code cleanup
2020-06-02 19:06:16 -04:00
Wang Gao
812cb5bc3d
fix get value function ( #509 )
2020-06-02 19:05:04 -04:00
yhirose
aea60feb85
Code cleanup
2020-06-01 13:22:02 -04:00
yhirose
b3a4045300
Fix #503
2020-05-28 19:19:18 -04:00
yhirose
d9fe3fa020
Fix #504
2020-05-28 17:08:05 -04:00
yhirose
d8612ac02d
Fixed build error...
2020-05-28 12:51:52 -04:00
yhirose
83ee6007da
Fix #500
2020-05-28 12:06:11 -04:00
yhirose
3eaa769a2d
Fix #481 , #483 , #487
2020-05-26 18:34:32 -04:00
yhirose
b91540514d
Fix #494
2020-05-25 10:50:24 -04:00
yhirose
ab563ff52c
Fix #496
2020-05-25 10:38:47 -04:00
yhirose
be7962f140
Fix #489
2020-05-24 15:18:34 -04:00
yhirose
630f3465a9
Deprecated set_timeout_sec, added set_connection_timeout.
2020-05-23 18:00:24 -04:00
yhirose
9af1a4a08f
Fixed problem with stop on windows
2020-05-23 13:49:49 -04:00
yhirose
0654e5dab4
Changed CPPHTTPLIB_IDLE_INTERVAL_USECOND to 0
2020-05-23 08:44:03 -04:00
yhirose
62e036f253
Fixed #488 again
2020-05-22 18:24:01 -04:00
yhirose
f0adfb2e0c
Fix #488
2020-05-22 12:18:07 -04:00
yhirose
139c816c16
Fixed the location of Client2
2020-05-19 21:02:58 -04:00
yhirose
29fd136afd
Code cleanup and format
2020-05-16 17:35:04 -04:00
yhirose
f5598237b2
Fixed many redirects problem on Proxy
2020-05-16 17:34:03 -04:00
Daniel Ottiger
01058659ab
make write timeout configurable (like the read timeout already is) ( #477 )
...
In case we want to send a lot of data,
and the receiver is slower than the sender.
This will first fill up the receivers queues and after this
eventually also the senders queues,
until the socket is temporarily unable to accept more data to send.
select_write is done with an timeout of zero,
which makes the select call used always return immediately:
(see http://man7.org/linux/man-pages/man2/select.2.html )
This means that every marginal unavailability will make it return false
for is_writable and therefore httplib will immediately abort the transfer.
Therefore make this values configurable in the same way
as the read timeout already is.
Set the default write timeout to 5 seconds,
the same default value used for the read timeout.
2020-05-16 17:31:46 -04:00
yhirose
b9a9df4d73
Fixed problem with writing large data
2020-05-15 22:21:58 -04:00
yhirose
25aa3ca982
Added std::ostream os in DataSink.
2020-05-15 21:26:13 -04:00
yhirose
f4c5d94d74
Updated version in the User Agent string
2020-05-14 18:07:02 -04:00
yhirose
63a96aeb20
Improved Client2 interface
2020-05-14 12:51:34 -04:00
yhirose
bbb83d12c1
Removed default parameter values in Client and SSLClient constructors
2020-05-14 08:51:32 -04:00
yhirose
2d4b42b70b
Removed url
2020-05-14 01:43:06 -04:00
yhirose
1919d08f71
Added Client2
2020-05-14 01:36:56 -04:00
yhirose
824c02fcd3
Code cleanup
2020-05-14 01:08:36 -04:00
yhirose
2c0613f211
Fix #472
2020-05-13 21:48:14 -04:00
Saika Fatih
803ebe1e20
Typos fixed ( #474 )
2020-05-12 13:18:58 -04:00
yhirose
ba685dbe48
Fixed potential infinite loop with content receiver
2020-05-10 20:45:57 -04:00
yhirose
49c4c2f9c1
Fix #459
2020-05-10 20:39:16 -04:00
yhirose
58909f5917
Fix #466
2020-05-10 15:58:53 -04:00
yhirose
5982b5c360
Fix #471
2020-05-10 14:18:03 -04:00
PixlRainbow
5bb4c12c6b
Fix #465 ( #467 )
...
update digest header username to use username parameter instead of "hello" test value
2020-05-09 08:29:08 -04:00
Daniel Ottiger
d043b18097
keepalive: support multiple post using content provider ( #461 )
2020-05-07 08:31:14 -04:00
yhirose
8728db7477
Apply IPV6_V6ONLY only when socket is AF_INET6
2020-05-04 22:16:43 -04:00
Daniel Ottiger
b2203bb05a
server: support dual-stack server socket ( #450 )
...
According to RFC 3493 the socket option IPV6_V6ONLY
should be off by default, see
https://tools.ietf.org/html/rfc3493#page-22 (chapter 5.3).
However this does not seem to be the case on all systems.
For instance on any Windows OS, the option is on by default.
Therefore clear this option in order to allow
an server socket which can support IPv6 and IPv4 at the same time.
2020-05-04 22:13:12 -04:00
yhirose
d45250fd88
Appled HANDLE_EINTR to send and select system calls
2020-05-01 21:38:23 -04:00
yhirose
528cacdc0d
Changed CPPHTTPLIB_THREAD_POOL_COUNT back to 8. ( #454 )
2020-05-01 21:23:02 -04:00
Matthew DeVore
ed1b6afa10
Fix crash caused by header field regex complexity ( #457 )
2020-05-01 12:44:13 -04:00
yhirose
08fc7085e5
Fixed #456
2020-04-30 19:40:23 -04:00
yhirose
8333340e2c
Chagned to use inline function instead of macro
2020-04-27 12:36:39 -04:00
Jan Lukavsky
b0a189e50e
Sketch handling EINTR errors
2020-04-27 17:36:44 +02:00
yhirose
776b3ffbf9
Code format
2020-04-25 18:01:48 -04:00
yhirose
d359e3a5f7
Renave queue_adjust to on_idle ( #442 )
2020-04-25 17:56:55 -04:00
evg82
5928e0af1a
TaskQueue method to internal size adjust ( #442 )
...
I use a custom TaskQueue, with variable number of workers, adding workers on demand is an easy task when new connection arrive (in enqueue function) however i need another funtion to be called even (or better) went no new connections arrives to reduce workers count. I only added a new virtual method in TaskQueue class to allow custom class to adjust workers size over time. Even if this methods is called frequenlty custom class can keep a "last_update" counter to check if need to adjust worker count or any other internal task. Without this function i need an external thread to make this adjust task.
2020-04-25 17:55:20 -04:00
yhirose
a5005789ff
Fixed Visual Studio compiler warnings with x64 platform ( Resolve #440 and #446 ) ( #448 )
2020-04-25 17:13:14 -04:00
Hoa Thiên Vũ
2feea0c9ab
Fixed error: ‘ULONG_MAX’ was not declared in this scope on line 1921 ( #445 )
...
* Fixed error:
ULONG_MAX is defined in the limits.h header file. Putting #include <climits>
```
httplib.h: In function ‘bool httplib::detail::read_content_chunked(httplib::Stream&, httplib::ContentReceiver)’:
httplib.h:1921:22: error: ‘ULONG_MAX’ was not declared in this scope
if (chunk_len == ULONG_MAX) { return false; }
^~~~~~~~~
httplib.h:1921:22: note: suggested alternative: ‘_SC_ULONG_MAX’
if (chunk_len == ULONG_MAX) { return false; }
^~~~~~~~~
_SC_ULONG_MAX
```
* Move #include <climits> to after #include <cassert>
2020-04-24 12:02:19 -04:00
yhirose
a2e4af54b7
Fix #399
2020-04-23 23:09:04 -04:00
yhirose
d0b123be26
Support remote_addr and remote_port REMOTE_PORT header in client Request ( #433 )
2020-04-23 22:12:12 -04:00
Matthew DeVore
df138366e4
Fail to read a chunk if its length is >= ULONG_MAX ( #444 )
...
We cannot trivially support such large chunks, and the maximum value
std::strtoul can parse accurately is ULONG_MAX-1. Error out early if the
length is longer than that.
2020-04-23 10:59:15 -04:00
Matthew DeVore
c49441ae64
Do not throw exceptions when parsing request chunks ( #441 )
...
detail::read_content_chunked was using std::stoul to parse the
hexadecimal chunk lengths for "Transfer-Encoding: chunked" requests.
This throws an exception if the string does not begin with any valid
digits. read_content_chunked is not called in the context of a try block
so this caused the process to terminate.
Rather than use exceptions, I opted for std::stroul, which is similar to
std::stoul but does not throw exceptions. Since malformed user input is
not particularly exceptional, and some projects are compiled without
exception support, this approach seems both more portable and more
correct.
2020-04-23 09:05:45 -04:00
yhirose
ad9fd3bd93
Fix #436
2020-04-22 21:42:58 -04:00
yhirose
da26b517a3
Added url::Get interface
2020-04-21 23:00:39 -04:00
yhirose
240cc85ccb
Fixed regex problem for recirect location
2020-04-21 21:18:29 -04:00
yhirose
129e2f00b8
Removed unnecessary noexcept
2020-04-20 19:42:05 -04:00
Daniel Ottiger
da746c6e67
SSLClient::set_ca_cert_store: mark as inline ( #435 )
2020-04-20 12:53:39 -04:00
yhirose
3451da940d
Code format
2020-04-19 22:05:04 -04:00
yhirose
38a6b3e69f
Fixed warning
2020-04-19 22:04:29 -04:00
Daniel Ottiger
2ece5f116b
Pass certs and keys from memory ( #432 )
...
* SSLServer: add constructor to pass ssl-certificates and key from memory
* SSLClient: add constructor to pass ssl-certificates and key from memory
* add TestCase for passing certificates from memory to SSLClient/SSLServer
2020-04-18 16:26:06 -04:00
yhirose
c2b6e4ac04
Fix #431
2020-04-17 21:48:16 -04:00
yhirose
85327e19ae
Fix #425
2020-04-12 15:33:08 -04:00
Alexandre Taillefer
ed8efea98b
Added support for DELETE request body ( #418 )
...
* Added support for DELETE request body
* Fixed DELETE request body test case typo
Co-authored-by: Alexandre Taillefer <alexandre.taillefer@pwc.ca>
2020-04-07 15:51:52 -04:00
Max
1ccddd1b0b
SSL_shutdown() only if not already closed by remote ( #413 )
2020-04-06 10:30:21 -04:00
yhirose
992f3dc690
Code cleanup
2020-04-03 09:33:29 -04:00
yhirose
402d47e2cd
Fix #407
2020-03-31 19:42:53 -04:00
yhirose
171fc2e353
Fix #403 . Added more status codes based on MDN document
2020-03-26 20:50:40 -04:00
SoenkeHeeren
ced4160d05
add http status code 201 to show the right status message in return headers ( #402 )
2020-03-26 12:20:32 -04:00
Igor [hyperxor]
dc13cde820
Minor improvements in httplib classes ( #395 )
2020-03-23 06:54:13 -04:00
Andrew Gasparovic
914c8860e8
Accept content by value to allow moving
...
Previously, calling set_content always resulted in 's' being copied. With this change, there will still be the same number of copies made (1) when doing `set_content(my_value, ...)`, but there will be no copies if a caller elects to do `set_content(std::move(value), ...)` or `set_content(some_function_that_returns_a_temporary(), ...)` instead.
2020-03-21 00:39:07 -04:00
yhirose
685533ba50
Fixed warnings on Windows due to max/min macro
2020-03-16 13:58:09 -04:00
yhirose
e1acb949e7
Fix #382
2020-03-13 18:43:29 -04:00
Oleg Vorobiov
7b3cea5317
Prevent an implicit capture of 'this' via '[=]' ( #381 )
2020-03-12 12:31:22 -04:00
yhirose
26deffe0c6
Not to send 'EXCEPTION_WHAT' header to client
2020-03-10 17:44:36 -04:00
Rafael Leira
e07c5fec01
simplest way to catch handler exceptions
2020-03-10 17:44:36 -04:00
miketsts
6e473a7c5c
Fix conversion to ‘int’ from ‘long int’ warning ( #377 )
...
Co-authored-by: Michael Tseitlin <michael.tseitlin@concertio.com>
2020-03-10 14:48:14 -04:00
yhirose
c74129a1c2
Fix #372 ( #374 )
2020-03-09 23:59:00 -04:00
yhirose
18e750b4e7
Code cleanup
2020-03-09 19:47:28 -04:00
Matthew DeVore
bf7700d192
Fix exception that occurs with libc++ regex engine ( #368 )
...
The regex that parses header lines potentially causes an unlimited
amount of backtracking, which can cause an exception in the libc++ regex
engine.
The exception that occurs looks like this and is identical to the
message of the exception fixed in
https://github.com/yhirose/cpp-httplib/pull/280 :
libc++abi.dylib: terminating with uncaught exception of type
std::__1::regex_error: The complexity of an attempted match
against a regular expression exceeded a pre-set level.
This commit eliminates the problematic backtracking.
2020-02-28 06:31:39 -05:00
yhirose
4c3b119dde
Code format
2020-02-24 21:17:02 -05:00
hyperxor
ccc9a9b3f4
Remove code duplication in converting params to query
2020-02-25 02:30:34 +03:00
rymis
f2bb9c45d6
Support for deflate compression ( #360 )
2020-02-24 11:48:00 -05:00
yhirose
d0d744d520
Fixed compiler warning with Visual C++. Close #358
2020-02-20 17:30:04 -05:00
yhirose
fce8e6fefd
Merge pull request #356 from samhocevar/fix-shadow-declarations
...
Fix a few shadowed variable compilation warnings.
2020-02-17 09:01:47 -05:00
Sam Hocevar
180aa32ebf
Fix a few shadowed variable compilation warnings.
2020-02-17 06:58:30 +01:00
yhirose
064cc6810e
Fix #352
2020-02-13 17:40:06 -05:00
yhirose
464cc89b77
Fix #351
2020-02-12 22:35:52 -05:00
yhirose
ca5a50d2c9
Fix #349
2020-02-11 00:26:15 -05:00
yhirose
851edaf77f
Code format
2020-02-02 20:02:16 -05:00
yhirose
ac7742bb32
Changed the order of parameters of set_mounting_point.
2020-02-01 09:18:24 -05:00
yhirose
8801e51138
Fix #341
2020-01-31 20:35:20 -05:00
Vitaly Takmazov
5e43680486
HEAD support for static file server
2020-01-28 12:00:27 +03:00
yhirose
79df842cc5
Updated README
2020-01-26 18:34:50 -05:00
yhirose
2e360f9dd6
Improved Stream interface
2020-01-16 23:28:11 -05:00
Valentin Vanelslande
126f1d177e
Add status message: 503 Service Unavailable
2020-01-16 00:59:24 -05:00
yhirose
b557ac9328
Code format
2020-01-14 17:04:51 -05:00
yhirose
f6db19959f
Merge pull request #333 from stupedama/master
...
std:🧵 :hardware_concurrency
2020-01-14 17:04:17 -05:00
yhirose
6b4df41b30
Fix #330
2020-01-14 17:02:25 -05:00
yhirose
0d81e20129
Fix #332
2020-01-14 14:59:20 -05:00
Fredrik Fjeldvær
26cb83ed6c
if std: 🧵 :hardware_concurrency() is 0 use 2 threads. also -1 thread because we already have one thread from the main function
2020-01-14 17:48:51 +01:00
Valentin Vanelslande
db27812198
Add status message for 202 Accepted
2020-01-10 17:50:37 -05:00
yhirose
6fe6fd5dbe
Fixed build errors
2020-01-10 09:40:26 -05:00
yhirose
0ee9660f3d
Code format
2020-01-10 09:35:07 -05:00
yhirose
a15d16a9de
Moved Stream concrete classes into detail namespace
2020-01-10 09:33:14 -05:00
Tyler Rockwood
fcdaa24fc5
Properly implement BufferStream::read
...
The existing implementation did not advance the buffer at all.
2020-01-09 22:05:59 -06:00
hyperxor
b16905ec8b
Fix Response move
2020-01-08 23:13:04 +03:00
yhirose
2f72845008
Fix #319
2020-01-07 23:40:11 -05:00
hyperxor
568fda62b4
Tiny improvement in DataSink class
2020-01-07 13:25:04 +03:00
yhirose
96e9ec0663
Improved DataSink interface
2020-01-05 23:59:54 -05:00
yhirose
d2fae4031c
Fixed build errors
2020-01-03 01:36:59 -05:00
yhirose
de844e67ef
Proxy support for Keep-Alive requests
2020-01-03 01:24:07 -05:00
yhirose
6c0e021554
Fixed socket leak
2020-01-02 17:01:02 -05:00
yhirose
aa630e3062
Fix #311
2020-01-02 13:02:05 -05:00