summaryrefslogtreecommitdiff
path: root/lib/vquic
Commit message (Collapse)AuthorAgeFilesLines
* curl.se: new homeDaniel Stenberg2020-11-046-6/+6
|
* http3: fix two build errors, silence warningsViktor Szakats2020-10-161-3/+4
| | | | | | | | | * fix two build errors due to mismatch between function declarations and their definitions * silence two mismatched signs warnings via casts Approved-by: Daniel Stenberg Closes #6093
* ngtcp2: adapt to new NGTCP2_PROTO_VER_MAX defineDaniel Stenberg2020-09-251-8/+4
| | | | Closes #6012
* Curl_handler: add 'family' to each protocolDaniel Stenberg2020-09-212-0/+2
| | | | | | | Makes get_protocol_family() faster and it moves the knowledge about the "families" to each protocol handler, where it belongs. Closes #5986
* ngtcp2: adapt to the new pkt_info argumentsDaniel Stenberg2020-08-261-3/+5
| | | | | | Guidance-by: Tatsuhiro Tsujikawa Closes #5864
* ngtcp2: adapt to error code renameDaniel Stenberg2020-08-051-1/+1
| | | | Closes #5786
* ngtcp2: store address in sockaddr_storageDaniel Stenberg2020-07-271-2/+3
| | | | | Reported-by: Tatsuhiro Tsujikawa Closes #5733
* quiche: handle calling disconnect twiceDaniel Stenberg2020-07-271-2/+8
| | | | | | Reported-by: lilongyan-huawei on github Fixes #5726 Closes #5727
* ngtcp2: adjust to recent sockaddr updatesDaniel Stenberg2020-07-162-9/+7
| | | | Closes #5690
* ngtcp2: update to modified qlog callback prototypeDaniel Stenberg2020-07-121-1/+3
| | | | Closes #5675
* ngtcp2: sync with current masterDaniel Stenberg2020-06-291-1/+3
| | | | | | | | ngtcp2 added two new callbacks Reported-by: Lucien Zürcher Fixes #5624 Closes #5627
* connect: improve happy eyeballs handlingDaniel Stenberg2020-06-182-15/+35
| | | | | | | | For QUIC but also for regular TCP when the second family runs out of IPs with a failure while the first family is still trying to connect. Separated the timeout handling for IPv4 and IPv6 connections when they both have a number of addresses to iterate over.
* ngtcp2: never call fprintf() in lib code in release versionDaniel Stenberg2020-06-181-12/+14
|
* ngtcp2: fix happy eyeballs quic connect crashDaniel Stenberg2020-06-181-1/+2
| | | | | | Reported-by: Peter Wu Fixes #5565 Closes #5568
* quiche: update SSLKEYLOGFILE supportAlessandro Ghedini2020-06-081-1/+7
| | | | | | | | quiche now requires the application to explicitly set the keylog path for each connection, rather than reading the environment variable itself. Closes #5541
* ngtcp2: update with recent API changesDaniel Stenberg2020-06-081-5/+8
| | | | | | | Syncs with ngtcp2 commit 7e9a917d386d98 merged June 7 2020. Assisted-by: Tatsuhiro Tsujikawa Closes #5538
* quiche: advertise draft 28 supportPeter Wu2020-06-041-2/+14
| | | | | | | Fix the verbose message while at it, quiche currently supports draft 27 and draft 28 simultaneously. Closes #5518
* urldata: let the HTTP method be in the set.* structDaniel Stenberg2020-06-022-2/+2
| | | | | | | | | | | | When the method is updated inside libcurl we must still not change the method as set by the user as then repeated transfers with that same handle might not execute the same operation anymore! This fixes the libcurl part of #5462 Test 1633 added to verify. Closes #5499
* ngtcp2: use common key log routine for better thread-safetyPeter Wu2020-05-271-42/+12
| | | | | | | | | Tested with ngtcp2 built against the OpenSSL library. Additionally tested with MultiSSL (NSS for TLS and ngtcp2+OpenSSL for QUIC). The TLS backend (independent of QUIC) may or may not already have opened the keylog file before. Therefore Curl_tls_keylog_open is always called to ensure the file is open.
* ngtcp2: cleanup memory when failing to connectDaniel Stenberg2020-05-261-6/+14
| | | | | | Reported-by: Peter Wu Fixes #5447 (the ngtcp2 side of it) Closes #5451
* quiche: clean up memory properly when failing to connectDaniel Stenberg2020-05-261-8/+17
| | | | | | Addresses the quiche side of #5447 Reported-by: Peter Wu Closes #5450
* ngtcp2: fix build with current ngtcp2 master implementing draft 28Peter Wu2020-05-251-87/+21
| | | | | | | | Based on client.cc changes from ngtcp2. Tested with current git master, ngtcp2 commit c77d5731ce92, nghttp3 commit 65ff479d4380. Fixes #5444 Closes #5443
* ngtcp2: introduce qlog supportDaniel Stenberg2020-05-075-39/+155
| | | | | | | | | If the QLOGDIR environment variable is set, enable qlogging. ... and create Curl_qlogdir() in the new generic vquic/vquic.c file for QUIC functions that are backend independent. Closes #5353
* quiche: enable qlog outputDaniel Stenberg2020-05-051-1/+42
| | | | | | | | | | | | | | | quiche has the potential to log qlog files. To enable this, you must build quiche with the qlog feature enabled `cargo build --features qlog`. curl then passes a file descriptor to quiche, which takes ownership of the file. The FD transfer only works on UNIX. The convention is to enable logging when the QLOGDIR environment is set. This should be a path to a folder where files are written with the naming template <SCID>.qlog. Co-authored-by: Lucas Pardue Replaces #5337 Closes #5341
* ngtcp2: convert to dynbufDaniel Stenberg2020-05-041-84/+20
| | | | Closes #5335
* vquic/ngtcp2.h: update copyright year rangeDaniel Stenberg2020-03-311-1/+1
| | | | Follow-up to 0736ee73d346a52
* vquic: add support for GnuTLS backend of ngtcp2Daiki Ueno2020-03-312-26/+315
| | | | | | | | Currently, the TLS backend used by vquic/ngtcp2.c is selected at compile time. Therefore OpenSSL support needs to be explicitly disabled. Signed-off-by: Daiki Ueno <dueno@redhat.com> Closes #5148
* ngtcp2: update to git master for the key installation API changeDaiki Ueno2020-03-301-5/+9
| | | | | | | | | | | | | | This updates the ngtcp2 OpenSSL backend to follow the API change in commit 32e703164 of ngtcp2. Notable changes are: - ngtcp2_crypto_derive_and_install_{rx,tx}_key have been added to replace ngtcp2_crypto_derive_and_install_key - the 'side' argument of ngtcp2_crypto_derive_and_install_initial_key has been removed Fixes #5166 Closes #5168
* version: make curl_version* thread-safe without using global contextDaniel Stenberg2020-03-072-2/+2
| | | | Closes #5010
* ngtcp2: fixed to only use AF_INET6 when ENABLE_IPV6Harry Sintonen2020-02-041-0/+2
|
* quiche: Copyright year out of dateDaniel Stenberg2020-01-301-1/+1
| | | | Follow-up to 7fc63d72333a
* quiche: update to draft-25Alessandro Ghedini2020-01-301-1/+1
| | | | Closes #4867
* ngtcp2: update to git master and its draft-25 supportDaniel Stenberg2020-01-291-1/+3
| | | | Closes #4865
* misc: Copyright year out of date, should be 2020Daniel Stenberg2020-01-121-1/+1
| | | | | | Follow-up to recent commits [skip ci]
* ngtcp2: Add an error code for QUIC connection errorsEmil Engler2020-01-111-13/+13
| | | | | | | | | | - Add new error code CURLE_QUIC_CONNECT_ERROR for QUIC connection errors. Prior to this change CURLE_FAILED_INIT was used, but that was not correct. Closes https://github.com/curl/curl/pull/4754
* ngtcp2: Support the latest update key callback typeJay Satiro2019-12-202-33/+1
| | | | | | | | | | | | | | | - Remove our cb_update_key in favor of ngtcp2's new ngtcp2_crypto_update_key_cb which does the same thing. Several days ago the ngtcp2_update_key callback function prototype was changed in ngtcp2/ngtcp2@42ce09c. Though it would be possible to fix up our cb_update_key for that change they also added ngtcp2_crypto_update_key_cb which does the same thing so we'll use that instead. Ref: https://github.com/ngtcp2/ngtcp2/commit/42ce09c Closes https://github.com/curl/curl/pull/4735
* build: Disable Visual Studio warning "conditional expression is constant"Jay Satiro2019-12-012-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Disable warning C4127 "conditional expression is constant" globally in curl_setup.h for when building with Microsoft's compiler. This mainly affects building with the Visual Studio project files found in the projects dir. Prior to this change the cmake and winbuild build systems already disabled 4127 globally for when building with Microsoft's compiler. Also, 4127 was already disabled for all build systems in the limited circumstance of the WHILE_FALSE macro which disabled the warning specifically for while(0). This commit removes the WHILE_FALSE macro and all other cruft in favor of disabling globally in curl_setup. Background: We have various macros that cause 0 or 1 to be evaluated, which would cause warning C4127 in Visual Studio. For example this causes it: #define Curl_resolver_asynch() 1 Full behavior is not clearly defined and inconsistent across versions. However it is documented that since VS 2015 Update 3 Microsoft has addressed this somewhat but not entirely, not warning on while(true) for example. Prior to this change some C4127 warnings occurred when I built with Visual Studio using the generated projects in the projects dir. Closes https://github.com/curl/curl/pull/4658
* ngtcp2: fix thread-safety bug in error-handlingDavid Benjamin2019-11-281-2/+3
| | | | | | | | ERR_error_string(NULL) should never be called. It places the error in a global buffer, which is not thread-safe. Use ERR_error_string_n with a local buffer instead. Closes #4645
* ngtcp2: use overflow buffer for extra HTTP/3 dataJavier Blazquez2019-11-182-35/+204
| | | | | Fixes #4525 Closes #4603
* ngtcp2: free used resources on disconnectDaniel Stenberg2019-11-182-7/+17
| | | | | Fixes #4614 Closes #4615
* ngtcp2: handle key updates as ngtcp2 master branch tells usDaniel Stenberg2019-11-182-3/+36
| | | | | | | Reviewed-by: Tatsuhiro Tsujikawa Fixes #4612 Closes #4613
* ngtcp2: increase QUIC window size when data is consumedDaniel Stenberg2019-11-161-14/+24
| | | | | | Assisted-by: Javier Blazquez Ref #4525 (partial fix) Closes #4600
* quiche: reject headers in the wrong orderDaniel Stenberg2019-11-121-1/+6
| | | | | | | | Pseudo header MUST come before regular headers or cause an error. Reported-by: Cynthia Coan Fixes #4571 Closes #4584
* HTTP3: fix invalid use of sendto for connected UDP socketJavier Blazquez2019-10-281-4/+2
| | | | | | | | | | On macOS/BSD, trying to call sendto on a connected UDP socket fails with a EISCONN error. Because the singleipconnect has already called connect on the socket when we're trying to use it for QUIC transfers we need to use plain send instead. Fixes #4529 Closes https://github.com/curl/curl/pull/4533
* HTTP3: fix Windows buildJavier Blazquez2019-10-282-9/+9
| | | | | | | | | | | | | The ngtcp2 QUIC backend was using the MSG_DONTWAIT flag for send/recv in order to perform nonblocking operations. On Windows this flag does not exist. Instead, the socket must be set to nonblocking mode via ioctlsocket. This change sets the nonblocking flag on UDP sockets used for QUIC on all platforms so the use of MSG_DONTWAIT is not needed. Fixes #4531 Closes #4532
* ngtcp2: adapt to API changeDaniel Stenberg2019-10-041-7/+7
| | | | Closes #4457
* quiche: update HTTP/3 config creation to new APIlucas2019-09-291-1/+1
|
* quiche: don't close connection at end of stream!Daniel Stenberg2019-09-261-3/+1
|
* quiche: set 'drain' when returning without having drained the queuesDaniel Stenberg2019-09-261-4/+7
|
* ngtcp2: remove fprintf() callsDaniel Stenberg2019-09-251-23/+17
| | | | | | | | - convert some of them to H3BUF() calls to infof() - remove some of them completely - made DEBUG_HTTP3 defined only if CURLDEBUG is set for now Closes #4421