summaryrefslogtreecommitdiff
path: root/lib/vquic
Commit message (Collapse)AuthorAgeFilesLines
* 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
* quiche: The expression must be surrounded by parenthesesDaniel Stenberg2019-09-231-1/+1
| | | | | PVS-Studio warning Fixes #4402
* http: lowercase headernames for HTTP/2 and HTTP/3Barry Pollard2019-09-232-2/+6
| | | | | Closes #4401 Fixes #4400
* ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23Tatsuhiro Tsujikawa2019-09-211-14/+13
| | | | Closes #4392
* quiche: persist connection detailsDaniel Stenberg2019-09-161-3/+3
| | | | | | | | | ... like we do for other protocols at connect time. This makes "curl -I" and other things work. Reported-by: George Liu Fixes #4358 Closes #4360
* Curl_addr2string: take an addrlen argument tooDaniel Stenberg2019-08-311-2/+1
| | | | | | | | | | | This allows the function to figure out if a unix domain socket has a file name or not associated with it! When a socket is created with socketpair(), as done in the fuzzer testing, the path struct member is uninitialized and must not be accessed. Bug: https://crbug.com/oss-fuzz/16699 Closes #4283
* quiche: expire when poll returned dataDaniel Stenberg2019-08-301-0/+3
| | | | | | ... to make sure we continue draining the queue until empty Closes #4281
* quiche: decrease available buffer size, don't assign it!Daniel Stenberg2019-08-301-1/+1
| | | | Found-by: Jeremy Lainé
* ngtcp2: on h3 stream close, call expireDaniel Stenberg2019-08-291-1/+1
| | | | | | ... to trigger a new read to detect the stream close! Closes #4275
* ngtcp2: build latest ngtcp2 and ngtcp2_crypto_opensslTatsuhiro Tsujikawa2019-08-292-140/+8
| | | | Closes #4278
* ngtcp2: set flow control window to stream buffer sizeDaniel Stenberg2019-08-281-3/+4
| | | | Closes #4274
* ngtcp2: Build with latest ngtcp2 and ngtcp2_crypto_opensslTatsuhiro Tsujikawa2019-08-274-1187/+161
| | | | Closes #4270
* quiche: send the HTTP body correctly on callback uploadsDaniel Stenberg2019-08-261-1/+10
| | | | Closes #4265
* ngtcp2: add support for SSLKEYLOGFILEDaniel Stenberg2019-08-251-0/+18
| | | | Closes #4260
* ngtcp2: improve h3 response receivingDaniel Stenberg2019-08-251-9/+26
| | | | Closes #4259
* ngtcp2: use nghttp3_version()Daniel Stenberg2019-08-251-1/+2
|
* ngtcp2: sync with upstream API changesDaniel Stenberg2019-08-253-114/+80
| | | | Assisted-by: Tatsuhiro Tsujikawa
* http: the 'closed' struct field is used by both ngh2 and ngh3Daniel Stenberg2019-08-241-6/+0
| | | | | | | | and remove 'header_recvbuf', not used for anything Reported-by: Jeremy Lainé Closes #4257
* ngtcp2: accept upload via callbackDaniel Stenberg2019-08-232-18/+139
| | | | Closes #4256
* ngtcp2: make postfields-set posts workDaniel Stenberg2019-08-201-14/+33
| | | | Closes #4242
* ngtcp2: use ngtcp2_version() to get the run-time versionDaniel Stenberg2019-08-201-1/+2
| | | | | | ... which of course doesn't have to be the same used at build-time. Function just recently merged in ngtcp2.
* ngtcp2: move the h3 initing to immediately after the rx keyDaniel Stenberg2019-08-201-6/+5
| | | | | | To fix a segfault and to better deal with 0-RTT Assisted-by: Tatsuhiro Tsujikawa
* quiche: register debug callback once and earlierAlessandro Ghedini2019-08-171-12/+18
| | | | | | | | | | | The quiche debug callback is global and can only be initialized once, so make sure we don't do it multiple times (e.g. if multiple requests are executed). In addition this initializes the callback before the connection is created, so we get logs for the handshake as well. Closes #4236
* ngtcp2: provide the callbacks as a static structDaniel Stenberg2019-08-152-32/+33
| | | | ... instead of having them in quicsocket
* ngtcp2: add missing nghttp3_conn_add_write_offset callTatsuhiro Tsujikawa2019-08-151-0/+9
| | | | Closes #4225
* ngtcp2: deal with stream closeTatsuhiro Tsujikawa2019-08-151-1/+10
|
* ngtcp2: Consume QUIC STREAM data properlyTatsuhiro Tsujikawa2019-08-151-8/+13
|
* ngtcp2: don't reinitialize SSL on RetryTatsuhiro Tsujikawa2019-08-151-1/+0
|
* quiche: happy eyeballsDaniel Stenberg2019-08-141-31/+42
| | | | Closes #4220
* ngtcp2: do QUIC connections happy-eyeballs friendlyDaniel Stenberg2019-08-142-209/+221
|
* ngtcp2: initial h3 request workDaniel Stenberg2019-08-121-21/+111
| | | | Closes #4217
* ngtcp2: send HTTP/3 request with nghttp3Tatsuhiro Tsujikawa2019-08-121-44/+221
| | | | | | | | 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
* nghttp3: initial h3 template code addedDaniel Stenberg2019-08-122-1/+501
|
* nghttp3: required when ngtcp2 is used for QUICDaniel Stenberg2019-08-121-1/+1
| | | | | | | | - checked for by configure - updated docs/HTTP3.md - shown in the version string Closes #4210
* ngtcp2: Send ALPN h3-22Tatsuhiro Tsujikawa2019-08-111-4/+5
| | | | Closes #4212
* ngtcp2: use ngtcp2_settings_default and specify initial_tsTatsuhiro Tsujikawa2019-08-111-4/+2
|
* ngtcp2: make the QUIC handshake workTatsuhiro Tsujikawa2019-08-103-76/+267
| | | | Closes #4209