Commit Graph

453 Commits

Author SHA1 Message Date
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
yhirose
fcbcbd53bd Fix #306 2019-12-26 18:48:22 -05:00
yhirose
1bf616d653 Fix #303 2019-12-26 17:50:53 -05:00
yhirose
2c6da365d9
Merge pull request #300 from vvanelslande/accpet
Change Accpet-Encoding to Accept-Encoding
2019-12-22 15:39:47 -05:00
yhirose
38adeaf02c Fixed problem with proxy support and added unit tests 2019-12-22 15:37:01 -05:00
Valentin Vanelslande
b3814b2b80
Change Accpet-Encoding to Accept-Encoding 2019-12-22 13:02:20 -05:00
yhirose
a444b612af V0.5.0 2019-12-22 12:52:08 -05:00
yhirose
ed6d949f42 Fix #299 2019-12-22 12:50:25 -05:00
yhirose
d28cd3f937 Code cleanup 2019-12-21 23:20:30 -05:00
yhirose
8cc3e6c434
Merge pull request #296 from yhirose/connect
CONNECT method support on client
2019-12-21 23:09:10 -05:00
hyperxor
0dc653f45a Fix redundant Progress copy in Get methods 2019-12-21 10:57:06 +03:00
yhirose
a1cfc0f377 Fixed problem with redirect 2019-12-20 13:25:11 -05:00
yhirose
eb4fcb5003 CONNECT method support on client 2019-12-20 06:59:59 -05:00
yhirose
ae43c96984
Merge pull request #295 from yhirose/timeout
Fix #294
2019-12-18 17:57:23 -05:00
yhirose
9c81693801 Fix #294 2019-12-18 17:47:36 -05:00
yhirose
80202c9f62
Merge pull request #292 from Bendr0id/fix_socket_create_on_older_windows_systems
Adds workaround for socket creation on older Windows variants
2019-12-18 07:09:48 -05:00
Ben Gräf
094a6a614a Adds workaround for socket creation on older Windows variants
Since the WSA_FLAG_NO_HANDLE_INHERIT is only supported on Windows 7 SP1 and above the socket creation fails on older Windows Systems.
     
Let's try to create a socket the old way in this case.
     
Reference:
https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasocketa
     
WSA_FLAG_NO_HANDLE_INHERIT:
This flag is supported on Windows 7 with SP1, Windows Server 2008 R2 with SP1, and later
2019-12-18 07:49:36 +01:00
yhirose
39c7bba7b9 Code cleanup 2019-12-17 13:05:08 -05:00
yhirose
f2476f21fc Fixed URL encoding problem when sending a request to proxy 2019-12-17 12:58:25 -05:00
yhirose
9a41b16cbb Fix #285. Added set_interface method on client 2019-12-15 17:44:00 -05:00
yhirose
260422b7d7 Format code 2019-12-14 23:46:11 -05:00
yhirose
d2c7b447d5 Fix #289: Fixed build problem with Visual C++ 2019-12-13 09:12:50 -05:00
yhirose
72b20c08da Better API names 2019-12-13 06:56:00 -05:00
yhirose
afd6d5f9dc Removed compress parameter and added compress method on client 2019-12-12 23:09:59 -05:00
yhirose
5324b3d661 Improved multipart form data interface 2019-12-12 22:48:09 -05:00
yhirose
151ccba57e Code cleanup 2019-12-12 21:50:12 -05:00
yhirose
69a28d50f6 Fix #287 2019-12-12 12:50:45 -05:00
Yuji Hirose
3c2736bb2a Fixed regex syntax error 2019-12-10 13:07:49 -05:00
Yuji Hirose
fd4e1b4112 Fix #266 2019-12-10 12:10:14 -05:00
yhirose
f6a2365ca5 Fix #282 2019-12-06 12:21:15 -05:00
yhirose
df1ff7510b Made code more readable 2019-12-06 12:02:08 -05:00
yhirose
379905bd34 Merge branch 'whitespace-and-libcxx-compat' of https://github.com/matvore/cpp-httplib 2019-12-06 09:51:21 -05:00
Matthew DeVore
bc9251ea49 Work around incompatibility in <regex> in libc++
libc++ (the implementation of the C++ standard library usually used by
Clang) throws an exception for the regex used by parse_headers before
this patch for certain strings. Work around this by simplifying the
regex and parsing the header lines "by hand" partially. I have repro'd
this problem with Xcode 11.1 which I believe uses libc++ version 8.

This may be a bug in libc++ as I can't see why the regex would result in
asymptotic run-time complexity for any strings. However, it may take a
while for libc++ to be fixed and for everyone to migrate to it, so it
makes sense to work around it in this codebase for now.
2019-12-05 17:14:16 -08:00
Matthew DeVore
a9e942d755 Properly trim whitespace from headers
HTTP Whitespace and regex whitespace are not the same, so we can't use
\s in regexes when parsing HTTP headers. Instead, explicitly specify
what is considered whitespace in the regex.
2019-12-05 17:14:16 -08:00
Barry McNamara
e1785d6723 Remove use of exceptions. 2019-12-05 15:56:55 -08:00
yhirose
033bc35723 Improve multipart content reader interface 2019-12-02 07:11:12 -05:00
yhirose
b69c0a1dcb Content receiver support for multipart content (Fix #241) 2019-12-01 22:04:26 -05:00
yhirose
295e4d58aa Fix #276 2019-11-29 17:07:51 -05:00
yhirose
6f58dc728f Fixed problem with requests with no content 2019-11-28 08:28:01 -05:00
yhirose
880f7fa62b Fix #273 2019-11-27 12:54:01 -05:00
yhirose
8f3dbf7f21 Code cleanup 2019-11-27 08:01:25 -05:00
yhirose
924a557fa3 Changed to use 'using' instead of 'typedef' 2019-11-27 07:03:17 -05:00
yhirose
d8da740597 Fix #270 2019-11-26 08:48:17 -05:00
yhirose
d45676b064 Added NoThread task queue 2019-11-25 13:00:37 -05:00
Hirose Family
94d13e88a5 Fixed regex problem with Apple LLVM version 8.0.0 2019-11-03 19:27:12 -05:00
Johan Jansen
a62a48a7b5 Modernize some additional code 2019-10-31 21:49:04 +01:00
Johan Jansen
c652919954 Do not use shared_ptr where not required 2019-10-31 21:48:48 +01:00
Johan Jansen
58753ba33c Fix some virtual override warnings 2019-10-31 21:38:37 +01:00
yhirose
5706828d2c Replace C-style arrays and fix static-code analysis warnings 2019-10-31 21:32:07 +01:00
yhirose
e743b8cd57 Fix #254 2019-10-30 08:21:59 -04:00
yhirose
9d57899352 Simplified ContentReceiver interface 2019-10-27 23:38:56 -04:00
yhirose
d03937e144 Content receiver support on server 2019-10-27 23:20:56 -04:00
yhirose
8fb37a449d Fix #251 2019-10-27 17:27:57 -04:00
yhirose
f0b1b5dbfd Added set_read_timeout. Fix #248. 2019-10-27 14:57:22 -04:00
yhirose
5f32c424c2 Content provider support on client 2019-10-25 18:39:04 -04:00
yhirose
f0683f2301 Fixed build errors 2019-10-25 13:11:49 -04:00
yhirose
0d527e2b83 Code formatting 2019-10-25 12:09:26 -04:00
yhirose
bea3ebd7af Added 'compress' option to POST, PUT and PATCH. 2019-10-25 11:46:12 -04:00
yhirose
380f725713 Code format 2019-10-24 22:20:42 -04:00
Bastien Durel
d1abf96581
html files may be .htm 2019-10-23 09:52:21 +02:00
yhirose
7a3abd2768
Merge pull request #243 from Sil3ntStorm/patch1
Allow use of OpenSSL 1.1.1, fix compile errors
2019-10-20 10:12:14 -04:00
Aaron Albers
89e1e9b8fe Added bind_to_port()
- This compliments the existing `bind_to_any_port()`
  where you can determine if the bind succeeded prior
  to calling `listen_after_bind()` but allows you to
  specify the port.
2019-10-19 10:41:19 -06:00
Sil3ntStorm
98d16eb836 Allow use of OpenSSL 1.1.1, fix compile errors 2019-10-19 16:40:06 +02:00
yhirose
dcdb0d047b Fixed PRI request problem 2019-10-03 13:44:18 -04:00
yhirose
1f86e41d97 Changed back to select as default 2019-10-03 13:44:18 -04:00
Johan Jansen
f23f9a06a9 Allow configuration to be overriden without source editing 2019-09-30 22:00:17 +02:00
Alin Gherman
224119a60a Retry in case of too many sockets opened instead of stopping the server. 2019-09-30 11:48:02 +02:00
yhirose
c02849e269 Removed CPPHTTPLIB_USE_POLL, added CPPHTTPLIB_USE_SELECT 2019-09-29 19:43:22 -04:00
yhirose
71979b1e88
Merge pull request #226 from Zefz/mingw-compile-fix
Fix compilation on Mingw-64
2019-09-27 17:29:33 -04:00
zefz
b14b7b0f8f Fix compilation on Mingw-64 2019-09-27 20:23:16 +02:00
Tang Huaizhe
9dbe0d855c Fix compile error in android ndk 2019-09-27 13:32:23 +08:00
Johan Jansen
94fc229c44 Add missing explicit const_cast 2019-09-26 22:20:33 +02:00
Johan Jansen
a7052cba22 Fix several -Wold-style-cast warnings in Clang-9 2019-09-26 22:03:18 +02:00
yhirose
c946eb7699 Fixed warnings on Windows 2019-09-26 08:13:20 -04:00
PolloLoco
c7f8561472 Added ssl_context member function to SSLClient in
order to allow access to the SSL_CTX struct, for
example to load the windows cert store
2019-09-18 15:10:15 +02:00
yhirose
4ab9270660 Use 'poll' as default instead of select (Fix #215) 2019-09-18 08:42:18 -04:00
yhirose
d599a36c2a Format code 2019-09-16 17:48:17 -04:00
yhirose
0c293887d0 Fixed problem with redirect 2019-09-15 09:15:21 -04:00
Steffen Schuemann
7e92ffec48 Added new Client::Get variant that combines a ContentReceiver with a new ResponseHandler
While trying to implement streaming of internet radio, where a ContentReceiver is needed to handle the audio data, I had the problem, that important information about the stream data is part of the HTTP header (e.g. size of audio chunks between meta data), so I added a ResponseHandler and a new Get variant, to gain access to the header before handling the first chunk of data.

The ResponseHandler can abort the request by returning false, in the same way as the ContentReceiver.

A test case was also added.
2019-09-14 14:55:12 +02:00
yhirose
c9238434e1 Added redirect support (Fix #211) 2019-09-06 18:07:35 -04:00
yhirose
e2babf315c Fixed build error on Windows 2019-09-05 13:22:44 -04:00
yhirose
c434d555bb Fixed problem caused by former changes 2019-09-03 17:19:58 -04:00
yhirose
80f040cf69 Fix #209 2019-09-03 17:10:04 -04:00
yhirose
037b4fc789 Fixed problem with keep-alive on client 2019-09-03 17:05:10 -04:00
yhirose
a782d1b609 Added OpenSSL version check. (Currently commented out) 2019-08-31 20:15:50 -04:00
yhirose
1e82359329 Keep-alive connection support on client (Fix #36) 2019-08-31 17:52:24 -04:00
yhirose
a4160e6ac1 Fix #212 2019-08-25 17:19:20 -04:00
yhirose
bdbfc6cfe7 Fix #210 2019-08-25 16:49:10 -04:00
yhirose
22615f9682 Fix #203 2019-08-07 06:34:24 -04:00
yhirose
64991a560a Fixed problems with Win32 build 2019-08-07 15:21:22 +09:00
yhirose
d7bb402ca7 Format code 2019-08-06 18:12:05 +09:00
yhirose
d58deddbcc Fixed #198 2019-08-06 18:10:41 +09:00
yhirose
3629f87627 Fixed thread pool problem. 2019-08-06 08:31:43 +09:00
yhirose
2823a94fc1 Added 'resource_releaser' for content provider 2019-08-05 09:40:23 +09:00
yhirose
f4aaba6362 Fixed warnings on Windows 2019-08-03 20:43:15 -04:00
yhirose
c899462e75 Added 'Content-Range' header for single range request 2019-08-03 22:12:24 +09:00
yhirose
9785cd47f2 Thread pool support 2019-08-03 16:39:39 +09:00
yhirose
579ff1a0a6 new_task_queue support 2019-08-03 13:15:05 +09:00
yhirose
47312e6df9 Added TaskQueue interface 2019-08-03 12:11:22 +09:00
yhirose
66b81a1497 Code cleanup 2019-08-03 10:47:48 +09:00
yhirose
9d7b717504 Range header support and redesign of content provider interface 2019-08-03 03:28:39 +09:00
yhirose
58f72bc8b6 Code cleanup 2019-07-29 14:24:40 -04:00
yhirose
4c58b91e40 Added additonal status messages 2019-07-29 09:47:50 -04:00
yhirose
06b3dee5aa Code cleanup 2019-07-28 19:12:44 -04:00
yhirose
d15df874b3 Code cleanup 2019-07-28 07:52:57 -04:00
yhirose
f40de531ab Fix #196 2019-07-26 14:39:09 -04:00
yhirose
cb11d9412e Fixed connection end problem with HTTP/1.0 client 2019-07-24 06:53:48 -04:00
yhirose
34651ef89b Fix #121 2019-07-23 09:53:44 -04:00
yhirose
dd20e4d418 Fixed build errors 2019-07-22 06:58:05 -04:00
yhirose
7267b3f3e2 Write error handling 2019-07-21 21:34:49 -04:00
yhirose
4c18ac2b18 Added locking_callback for OpenSSL versions prior to 1.1.0 2019-07-19 17:03:47 -04:00
yhirose
eaafa5d55c Fix #127 2019-07-19 11:38:06 -04:00
yhirose
3d1ae3a3af Code cleanup 2019-07-17 23:50:47 -04:00
yhirose
6f663028e9 Fix #139. Content receiver support 2019-07-17 22:00:18 -04:00
yhirose
31cdadc4b1 Added check code to compress and decompress 2019-07-17 19:00:35 -04:00
yhirose
849add5887 Code cleanup 2019-07-17 15:09:41 -04:00
yhirose
fccb84f5e8 Refactoring for reading content 2019-07-17 08:56:49 -04:00
Jasper van de Ven
2fdc41c323 Made svr_sock_ and is_running_ variables atomic 2019-07-05 11:03:23 +02:00
yhirose
74e9a0d17e Fix #182 2019-07-03 10:52:24 -04:00
yhirose
bb537d93fe Added CPPHTTPLIB_RECV_BUFSIZ 2019-06-29 20:39:18 -04:00
yhirose
bde3fd9f78 Improved performance of read_content_without_length 2019-06-29 20:25:16 -04:00
yhirose
2aa35d5f53 Fix #179 2019-06-28 12:08:47 -04:00
yhirose
5377c86da9 clangformat 2019-06-20 19:17:59 -04:00
yhirose
1981e0ccad Add SSL object on Request 2019-06-20 18:52:28 -04:00
yhirose
866b6967a0 Fixed memory leak 2019-06-20 17:37:18 -04:00
yhirose
6d74fa86be Fix #164 2019-06-20 17:11:44 -04:00
yhirose
b5c79bf146 Fix #160 2019-06-20 15:00:22 -04:00
yhirose
4f4e6f2140 Use 'inline' 2019-06-20 12:43:17 -04:00
yhirose
a28e3620a2 Fix #173 2019-06-20 11:45:11 -04:00
yhirose
4a857511e2 fix #168 2019-06-17 11:33:43 -04:00
yhirose
8d12e0d8f4 Simplified code 2019-06-11 21:39:35 -04:00
yhirose
07d9843b91 clangformat 2019-06-11 20:57:02 -04:00
yhirose
92f08b54c4
Merge pull request #162 from PixlRainbow/master
client certificates support
2019-06-11 20:53:56 -04:00
PixlRainbow
60e0286cfb rename certificate parameter to reduce confusion 2019-06-06 23:52:33 +08:00
PixlRainbow
628b1115ea remove requirement for trusted_cert_path 2019-06-06 23:34:24 +08:00
PixlRainbow
57f61bf80e client-side support for client certificates 2019-06-06 01:16:47 +08:00
PixlRainbow
6bb05c5483 support certificates signed by intermediate CA 2019-06-05 19:44:37 +08:00
yhirose
6f207497de Fixed #150 2019-06-04 22:53:37 -04:00
PixlRainbow
d630c116df server-side support for client certificates 2019-06-05 02:21:37 +08:00
Yuji Hirose
48af26e332 Fixed resource leaks 2019-06-03 11:06:59 -04:00
Yuji Hirose
d4936a2c78 Fixed #155 2019-05-31 10:30:11 -04:00
Hans Erickson
f3f4ab8499 Add encode_url() call to Client class when adding parameter values. 2019-05-20 09:48:06 -05:00
Mark Nelson
e623dfedf3
Update httplib.h
CPPHTTPLIB_PAYLOAD_MAX_LENGTH is only used in one place, that is to initialize payload_max_length_. Because payload_max_length_ is a size_t, attempts to intialize it with a 64 bit integer max will generate warnings, notably on 32 bit compilers. Changing the max to the same size as the target resolves that, and this should be no risk.
2019-05-14 16:17:41 -04:00
yhirose
dfc94f2cab Code cleanup 2019-05-07 21:46:15 -04:00
yhirose
3f42804a4f Wildcard support for verifying server certificate. fix #87 2019-05-07 21:40:03 -04:00
yhirose
82193b9489 Code clieanup 2019-05-07 20:11:45 -04:00
yhirose
097c61b871 Comment out debug print 2019-05-07 16:57:27 -04:00
yhirose
b08e22ab00 Changed the server certificate verification API 2019-05-07 16:54:51 -04:00
yhirose
03a577cccd Fixed huge payload problem on Windows 2019-05-07 16:41:50 -04:00
yhirose
0bd9737c88 Fix #87 2019-05-07 16:41:33 -04:00
yhirose
dd901126a7 Fix #146 2019-05-05 13:31:42 -04:00
yhirose
744e8e7071 Fix #144 2019-04-12 23:34:27 -04:00
yhirose
8af85019dc Removed get_header_value_int and use uint64_t for the return value of get_header_value_uint64 2019-04-12 17:22:39 -04:00
Manny
07ed076499
BUGFIX: crash when "content-length" > max_int 2019-04-12 12:16:32 +02:00
Yuji Hirose
5d082f1da4 Apply clangformat 2019-04-11 08:13:31 -04:00
yhirose
a91a0b7dbf Fix #140 2019-04-10 12:21:42 -04:00
yhirose
8483e5931f Fix #136 2019-03-28 19:56:32 -04:00
batist73
90e699161a Add WinSock2 dependency 2019-03-27 19:55:06 +03:00
Yuji Hirose
96cacd24f9 Fixed #134 2019-03-12 08:49:08 -04:00
archivaldo
c5264cea9c Fix coding style 2019-03-07 19:03:18 -03:00
archivaldo
dedcc43216 small fix to allow fronting 2019-03-07 16:40:19 -03:00
Whitetiger
787761a7bf
Fix build error with Boost::asio 2019-02-25 13:09:31 -05:00
Geraldo Intmain
774c27e690 Encoding LF and CR 2019-02-24 17:15:27 -03:00
yhirose
7b3f6db70b Fix #128 2019-02-22 08:52:38 -05:00
Yuji Hirose
d3eb88b740 Fix #126 2019-02-13 08:14:58 -05:00
Constantin
28ad0ca68d
Fixed #124 2019-01-30 12:12:47 +09:00
yhirose
a72eef7fb4 Fixed #123 2019-01-29 12:05:32 -05:00
yhirose
8d908fadb6 Fixed #120 2019-01-15 08:08:34 -05:00
yhirose
b5927aec12 fix #116 2018-12-17 21:07:38 -05:00
yhirose
d0090b158f fix #112 2018-12-13 19:37:44 -05:00
yhirose
86b3dfc480 fix #110 2018-11-30 21:18:35 -05:00
yhirose
5ad4311fb0 fix #109 2018-11-22 20:50:54 -05:00
Geraldo Intmain
c4f9062552 Encode space and plus characters 2018-10-29 20:46:11 -03:00
yhirose
49c82c9c50 Fix #97. (Thanks to DJm00n.) 2018-10-28 16:15:22 +09:00
Duncan Ogilvie
d0c5c66bd6
Fix undefined behavior + make some ifdefs more readable 2018-10-14 12:39:51 +02:00
yhirose
d32eee7627 Fix #96 2018-09-30 08:40:31 -04:00
yhirose
abf79d5a38 Code cleanup 2018-09-23 12:32:26 -04:00
yhirose
4d7cee81eb Fix #95 2018-09-23 12:02:17 -04:00
Duncan Ogilvie
bc16283a2f Change size_t to time_t where applicable 2018-08-17 11:51:41 +02:00
Thomas Tissot
82fc7d5591 Request cancelation feature
This commit modifies the signature of the `Progress` callback
so that its return value will indicate whether the request shall
continue to be processed by returning `true`, or if it shall
be aborted by returning `false`. Such modification will allow
one to cancel an ongoing request before it has completed.

When migrating, developers should modify there `Progress`
callbacks to always return `true` by default in case there
do not want to benefit from the cancelation feature.

A few unit tests use cases were provided, but anyone should feel
free to provide additional uses cases that they find relevant.
2018-08-06 11:54:52 +02:00
yhirose
f2daaf1b85
Merge pull request #85 from davidgfnet/streaming
Implementing streaming Responses
2018-08-01 17:56:09 -04:00
David Guillen Fandos
dae4124039 Implementing streaming Responses
This enables a much easier handling of big queries after all.
2018-08-01 23:53:01 +02:00
yhirose
07910f73a9 Fixed problem that listen may return incorrect value when calling stop; 2018-07-31 19:46:04 -04:00
Maksim Kolinichenko
15ed1b4883 Add Keep-Alive header to response 2018-07-27 17:39:04 +03:00
Maksim Kolinichenko
d26ee03613 Fixed request parsing regex typo 2018-07-27 17:26:14 +03:00
Albert S
d9479bc0b1 Fixed bound checks for #74 2018-06-02 08:40:19 +02:00
yhirose
890025e347
Merge pull request #75 from crtxcr/http_response_codes
More status messages for http codes
2018-06-01 23:07:14 -04:00
yhirose
2bb27aa25d Fix #74 2018-06-01 23:05:32 -04:00
Albert S
bb2f96afeb Added a few more common http status codes 2018-06-01 14:34:58 +02:00
yhirose
5b3187e2f9 Fix #72 2018-05-31 22:17:23 -04:00
yhirose
5a78e1c457 Added 'set_keep_alive_max_count' method on Server 2018-05-31 19:01:24 -04:00
Scott Graham
f275352cba Handle port==0 when socket is bound on ipv6
I discovered
0515c6aad6
doesn't work when the server is bound on an AF_INET6 address on Windows
due to the getsockname() call failing.
2018-05-29 12:59:13 -07:00
yhirose
7b9d752583 Fixed problem with connection close 2018-05-14 00:05:14 -04:00
yhirose
312a8d7523 Removed HTTP version. It's now always 'HTTP/1.1'. 2018-05-13 19:18:25 -04:00
yhirose
37130cd7f9 Changed to use INVALID_SOCKET 2018-05-10 23:56:24 -04:00
Joshua Peraza
75285e8713 Define and use kInvalidSocket 2018-05-09 16:28:39 -07:00
yhirose
6c5d0b2a18 Fix #57 and #62 2018-05-08 21:51:41 -04:00
Enzo AGUADO
911e620a54 don't include sys/select on windows 2018-05-07 16:59:08 +08:00
Enzo AGUADO
632df52b4f add sys/select.h for musl libc 2018-05-07 02:15:12 +08:00