1
0
mirror of synced 2025-06-10 20:21:41 +03:00
Commit Graph

436 Commits

Author SHA1 Message Date
803ebe1e20 Typos fixed (#474) 2020-05-12 13:18:58 -04:00
ba685dbe48 Fixed potential infinite loop with content receiver 2020-05-10 20:45:57 -04:00
49c4c2f9c1 Fix #459 2020-05-10 20:39:16 -04:00
58909f5917 Fix #466 2020-05-10 15:58:53 -04:00
5982b5c360 Fix #471 2020-05-10 14:18:03 -04:00
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
d043b18097 keepalive: support multiple post using content provider (#461) 2020-05-07 08:31:14 -04:00
8728db7477 Apply IPV6_V6ONLY only when socket is AF_INET6 2020-05-04 22:16:43 -04:00
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
d45250fd88 Appled HANDLE_EINTR to send and select system calls 2020-05-01 21:38:23 -04:00
528cacdc0d Changed CPPHTTPLIB_THREAD_POOL_COUNT back to 8. (#454) 2020-05-01 21:23:02 -04:00
ed1b6afa10 Fix crash caused by header field regex complexity (#457) 2020-05-01 12:44:13 -04:00
08fc7085e5 Fixed #456 2020-04-30 19:40:23 -04:00
8333340e2c Chagned to use inline function instead of macro 2020-04-27 12:36:39 -04:00
b0a189e50e Sketch handling EINTR errors 2020-04-27 17:36:44 +02:00
776b3ffbf9 Code format 2020-04-25 18:01:48 -04:00
d359e3a5f7 Renave queue_adjust to on_idle (#442) 2020-04-25 17:56:55 -04:00
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
a5005789ff Fixed Visual Studio compiler warnings with x64 platform (Resolve #440 and #446) (#448) 2020-04-25 17:13:14 -04:00
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
a2e4af54b7 Fix #399 2020-04-23 23:09:04 -04:00
d0b123be26 Support remote_addr and remote_port REMOTE_PORT header in client Request (#433) 2020-04-23 22:12:12 -04:00
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
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
ad9fd3bd93 Fix #436 2020-04-22 21:42:58 -04:00
da26b517a3 Added url::Get interface 2020-04-21 23:00:39 -04:00
240cc85ccb Fixed regex problem for recirect location 2020-04-21 21:18:29 -04:00
129e2f00b8 Removed unnecessary noexcept 2020-04-20 19:42:05 -04:00
da746c6e67 SSLClient::set_ca_cert_store: mark as inline (#435) 2020-04-20 12:53:39 -04:00
3451da940d Code format 2020-04-19 22:05:04 -04:00
38a6b3e69f Fixed warning 2020-04-19 22:04:29 -04:00
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
c2b6e4ac04 Fix #431 2020-04-17 21:48:16 -04:00
85327e19ae Fix #425 2020-04-12 15:33:08 -04:00
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
992f3dc690 Code cleanup 2020-04-03 09:33:29 -04:00
402d47e2cd Fix #407 2020-03-31 19:42:53 -04:00
171fc2e353 Fix #403. Added more status codes based on MDN document 2020-03-26 20:50:40 -04:00
ced4160d05 add http status code 201 to show the right status message in return headers (#402) 2020-03-26 12:20:32 -04:00
dc13cde820 Minor improvements in httplib classes (#395) 2020-03-23 06:54:13 -04:00
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
685533ba50 Fixed warnings on Windows due to max/min macro 2020-03-16 13:58:09 -04:00
e1acb949e7 Fix #382 2020-03-13 18:43:29 -04:00
7b3cea5317 Prevent an implicit capture of 'this' via '[=]' (#381) 2020-03-12 12:31:22 -04:00
26deffe0c6 Not to send 'EXCEPTION_WHAT' header to client 2020-03-10 17:44:36 -04:00
e07c5fec01 simplest way to catch handler exceptions 2020-03-10 17:44:36 -04:00
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
c74129a1c2 Fix #372 (#374) 2020-03-09 23:59:00 -04:00
18e750b4e7 Code cleanup 2020-03-09 19:47:28 -04:00