Daniel Stenberg
f2cc26456b
ngtcp2: do QUIC connections happy-eyeballs friendly
2019-08-14 23:14:12 +02:00
Daniel Stenberg
1d85e09ccd
curl_version: bump string buffer size to 250
...
With HTTP/3 libs and plenty TLS libs, I manged to hit the limit (which
causes a truncated output).
2019-08-14 15:16:07 +02:00
Daniel Stenberg
db80de0528
CURLOPT_ALTSVC.3: use a "" file name to not load from a file
2019-08-14 14:42:11 +02:00
Jay Satiro
dca6f73613
vauth: Use CURLE_AUTH_ERROR for auth function errors
...
- Add new error code CURLE_AUTH_ERROR.
Prior to this change auth function errors were signaled by
CURLE_OUT_OF_MEMORY and CURLE_RECV_ERROR, and neither one was
technically correct.
Ref: https://github.com/curl/curl/pull/3848
Co-authored-by: Dominik Hölzl
Closes https://github.com/curl/curl/pull/3864
2019-08-14 03:14:01 -04:00
Daniel Stenberg
aae490229b
curl_version_info: make the quic_version a const
...
Follow-up from 1a2df1518a
Closes #4222
2019-08-13 23:15:49 +02:00
Daniel Stenberg
f3c34bf83c
examples: add http3.c, altsvc.c and http3-present.c
...
Closes #4221
2019-08-13 23:14:20 +02:00
Peter Wu
cc5fae5dac
nss: use TLSv1.3 as default if supported
...
SSL_VersionRangeGetDefault returns (TLSv1.0, TLSv1.2) as supported
range in NSS 3.45. It looks like the intention is to raise the minimum
version rather than lowering the maximum, so adjust accordingly. Note
that the caller (nss_setup_connect) initializes the version range to
(TLSv1.0, TLSv1.3), so there is no need to check for >= TLSv1.0 again.
Closes #4187
Reviewed-by: Daniel Stenberg
Reviewed-by: Kamil Dudka
2019-08-13 21:59:30 +01:00
Daniel Stenberg
362d59edab
quic.h: remove unused proto
2019-08-13 15:09:07 +02:00
Daniel Stenberg
125884e466
curl_version_info.3: mentioned ALTSVC and HTTP3
...
... and sorted the list alphabetically
2019-08-13 14:10:20 +02:00
Daniel Stenberg
d6cb1bdf6c
lib/quic.c: unused - removed
2019-08-13 12:41:04 +02:00
Daniel Stenberg
b867ecf0c5
CURLOPT_ALTSVC_CTRL.3: remove CURLALTSVC_ALTUSED
...
Follow-up to 98c3f148
that removed it from the header file
2019-08-13 11:19:35 +02:00
Junho Choi
1c86622699
docs/HTTP3: simplify quiche build instruction
...
Use --recursive to get boringssl in one line
Closes #4219
2019-08-12 22:36:27 +02:00
Daniel Stenberg
49e6b3857f
altsvc: make it use h3-22 with ngtcp2 as well
2019-08-12 22:30:58 +02:00
Daniel Stenberg
368d444cc6
ngtcp2: initial h3 request work
...
Closes #4217
2019-08-12 22:30:52 +02:00
Daniel Stenberg
1a2df1518a
curl_version_info: offer quic (and h3) library info
...
Closes #4216
2019-08-12 13:37:08 +02:00
Daniel Stenberg
551806255f
HTTP3: use ngtcp2's draft-22 branch
2019-08-12 12:45:48 +02:00
Daniel Stenberg
76ba80613d
RELEASE-NOTES: synced
2019-08-12 10:06:05 +02:00
Daniel Stenberg
f88d865bf4
CURLOPT_READFUNCTION.3: provide inline example
...
... instead of mentioning one in another place
2019-08-12 09:20:52 +02:00
Tatsuhiro Tsujikawa
fb6d46a709
ngtcp2: send HTTP/3 request with nghttp3
...
This commit makes sending HTTP/3 request with nghttp3 work. It
minimally receives HTTP response and calls nghttp3 callbacks, but no
processing is made at the moment.
Closes #4215
2019-08-12 09:20:36 +02:00
Daniel Stenberg
102ebe0459
nghttp3: initial h3 template code added
2019-08-12 00:18:59 +02:00
Daniel Stenberg
d85a1cf11d
nghttp3: required when ngtcp2 is used for QUIC
...
- checked for by configure
- updated docs/HTTP3.md
- shown in the version string
Closes #4210
2019-08-12 00:18:53 +02:00
Eric Wong
17d1e27d30
asyn-thread: issue CURL_POLL_REMOVE before closing socket
...
This avoids EBADF errors from EPOLL_CTL_DEL operations in the
ephiperfifo.c example. EBADF is dangerous in multi-threaded
applications where I rely on epoll_ctl to operate on the same
epoll description from different threads.
Follow-up to eb9a604f8d
Bug: https://curl.haxx.se/mail/lib-2019-08/0026.html
Closes #4211
2019-08-11 22:58:01 +02:00
Carlo Marcelo Arenas Belón
4a962ff218
configure: avoid undefined check_for_ca_bundle
...
instead of using a "greater than 0" test, check for variable being
set, as it is always set to 1, and could be left unset if non of
OPENSSL MBEDTLS GNUTLS WOLFSSL is being configured for.
Closes #4213
2019-08-11 16:50:18 +02:00
Tatsuhiro Tsujikawa
86ae740482
ngtcp2: Send ALPN h3-22
...
Closes #4212
2019-08-11 16:47:29 +02:00
Tatsuhiro Tsujikawa
f49abd1090
ngtcp2: use ngtcp2_settings_default and specify initial_ts
2019-08-11 16:47:21 +02:00
Daniel Stenberg
42a06118c8
curl_global_init_mem.3: mention it was added in 7.12.0
2019-08-11 00:19:45 +02:00
Tatsuhiro Tsujikawa
afce0620a2
ngtcp2: make the QUIC handshake work
...
Closes #4209
2019-08-10 16:07:33 +02:00
Alex Mayorga
14b1fb1c68
HTTP3.md: Update quiche build instructions
...
Added cloning for quiche and BoringSSL and modified the build
instructions so they work on a clean folder.
Closes #4208
2019-08-10 10:51:18 +02:00
Daniel Stenberg
084404b8ab
CURLOPT_H3: removed
...
There's no use for this anymore and it was never in a release.
Closes #4206
2019-08-09 12:26:02 +02:00
Daniel Stenberg
db061571ef
http3: make connection reuse work
...
Closes #4204
2019-08-09 12:26:02 +02:00
Daniel Stenberg
4570c22c57
quiche: add SSLKEYLOGFILE support
2019-08-09 12:23:18 +02:00
Daniel Stenberg
6ee9e4bd47
cleanup: s/curl_debug/curl_dbg_debug in comments and docs
...
Leftovers from the function rename back in 76b6348949
Reported-by: Gisle Vanem
Bug: f3e0f071b1 (com)
mitcomment-34601751
Closes #4203
2019-08-08 16:01:00 +02:00
Daniel Stenberg
c5ee65ffab
RELEASE-NOTES: synced
2019-08-08 09:58:52 +02:00
Daniel Stenberg
69b3ff5118
alt-svc: add protocol version selection masking
...
So that users can mask in/out specific HTTP versions when Alt-Svc is
used.
- Removed "h2c" and updated test case accordingly
- Changed how the altsvc struct is laid out
- Added ifdefs to make the unittest run even in a quiche-tree
Closes #4201
2019-08-08 09:10:29 +02:00
Daniel Stenberg
a93b43cde8
http3: fix the HTTP/3 in the request, make alt-svc set right versions
...
Closes #4200
2019-08-08 08:28:43 +02:00
Daniel Stenberg
98c3f14871
alt-svc: send Alt-Used: in redirected requests
...
RFC 7838 section 5:
When using an alternative service, clients SHOULD include an Alt-Used
header field in all requests.
Removed CURLALTSVC_ALTUSED again (feature is still EXPERIMENTAL thus
this is deemed ok).
You can disable sending this header just like you disable any other HTTP
header in libcurl.
Closes #4199
2019-08-08 08:24:37 +02:00
Daniel Stenberg
026840e35c
CURLOPT_HTTP_VERSION: seting this to 3 forces HTTP/3 use directly
...
Even though it cannot fall-back to a lower HTTP version automatically. The
safer way to upgrade remains via CURLOPT_ALTSVC.
CURLOPT_H3 no longer has any bits that do anything and might be removed
before we remove the experimental label.
Updated the curl tool accordingly to use "--http3".
Closes #4197
2019-08-08 08:17:24 +02:00
Daniel Stenberg
317076876a
docs/ALTSVC: remove what works and the experimental explanation
...
Also, put the TODO items at the bottom.
Closes #4198
2019-08-07 23:14:14 +02:00
Daniel Stenberg
f23d492777
docs/EXPERIMENTAL: explain what it means and what's experimental now
2019-08-07 14:52:02 +02:00
Daniel Stenberg
640b9733de
curl: make use of CURLINFO_RETRY_AFTER when retrying
...
If a Retry-After: header was used in the response, that value overrides
other retry timing options.
Fixes #3794
Closes #4195
2019-08-07 14:45:44 +02:00
Daniel Stenberg
d39ae9d493
curl: use CURLINFO_PROTOCOL to check for HTTP(s)
...
... instead of CURLINFO_EFFECTIVE_URL to avoid string operations.
2019-08-07 14:45:39 +02:00
Daniel Stenberg
f933449d3b
CURLINFO_RETRY_AFTER: parse the Retry-After header value
...
This is only the libcurl part that provides the information. There's no
user of the parsed value. This change includes three new tests for the
parser.
Ref: #3794
2019-08-07 14:45:39 +02:00
Daniel Stenberg
2bdb26a507
docs/ALTSVC.md: first basic file format description
2019-08-07 14:18:42 +02:00
Daniel Stenberg
eb63b27b6b
curl: have -w's 'http_version' show '3' for HTTP/3
...
Closes #4196
2019-08-07 12:51:52 +02:00
Daniel Stenberg
fd00e14adb
curl.h: add CURL_HTTP_VERSION_3 to the version enum
...
It can't be set for CURLOPT_HTTP_VERSION, but it can be extracted with
CURLINFO_HTTP_VERSION.
2019-08-07 12:51:52 +02:00
Daniel Stenberg
1f145b02d9
quiche: make use of the connection timeout API properly
2019-08-07 12:51:52 +02:00
Daniel Stenberg
7a83e1d1d4
quiche: make POSTFIELDS posts work
2019-08-07 11:05:05 +02:00
Daniel Stenberg
07828b1c9d
quiche: improved error handling and memory cleanups
2019-08-07 08:39:39 +02:00
Daniel Stenberg
470551b7fc
quiche: flush egress in h3_stream_recv() too
2019-08-07 07:48:37 +02:00
Daniel Stenberg
405d34280b
RELEASE-NOTES: synced
2019-08-06 23:11:03 +02:00