import markdoc from '@astrojs/markdoc'; import { defineConfig } from 'astro/config'; // https://astro.build/config export default defineConfig({ integrations: [markdoc()], }); /quiche/atom/deps?h=0.9.0' type='application/atom+xml'/>
summaryrefslogtreecommitdiff
path: root/deps (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2021-06-08h3: close QUIC connection when unable to initialize HTTP/3Gravatar lucas 1-1/+15
Previously, if `quiche::h3::with_transport()` failed to initialize the HTTP/3 connection for any reason, it would return an error and rely on the caller to tidy up the QUIC connection. This is inconsistent with how other parts of quiche's HTTP/3 layer deal with low level issues. This change ensures the QUIC connection is closed before returning the reason to the caller.
2021-06-03h3: don't use UTF-8 strings to represent headersGravatar Alessandro Ghedini 13-425/+450
There is not requirement for HTTP/3 header names and values to be valid UTF-8, so don't require it.
2021-06-03lib: alternate DATAGRAM and STREAM frame packingGravatar lucas 1-2/+164
Previously, quiche would always prefer sending pending DATAGRAM frames over STREAM frames. Depending on the size of DATAGRAMs in relation to QUIC packet sizes the available space in packets for STREAM frames can end up being small. Similarly, sometimes STREAM frames may only get sent when the congestion window was smaller than the next DATAGRAM. This commit introduces a preference toggle into the quiche sending logic. This gives equal opportunity to send full-sized DATAGRAM or STREAM frames between calls to `send()`. In cases where there is no pending data of one type, quiche will just fallback to the other.
2021-06-03lib: expose functions to read DATAGRAM frame queue length and sizeGravatar lucas 4-0/+85
2021-06-03lib: add stream ID to InvalidStreamState errorGravatar lucas 2-13/+15
2021-05-28cubic: fix cwnd growth during congestion avoidanceGravatar Junho Choi 1-4/+1
cwnd_inc is used for storing cwnd increments during congestion avoidance. When cwnd_inc >= MSS we increase cwnd by 1 MSS. Currently we clear cwnd_inc when cwnd is updated but this will lead to slightly slower growth because the residual part is gone.
2021-05-28don't try to send HANDSHAKE_DONE on the clientGravatar Junho Choi 1-1/+36
`HANDSHAKE_DONE` can only be sent by a server, so don't try to send a packet from the client if the frame hasn't been sent yet.
2021-05-28apps/examples/http3_test: use connectionless UDP socket on clientsGravatar Junho Choi 6-14/+0
Now it uses sendto() and recvfrom(), the socket need to be connectionless. Fixes #952.
2021-05-27recovery: remove ABC_L constant and its logicGravatar Junho Choi 4-82/+30
RFC3465 ABC_L constant (2) is to prevent an ACK from growing cwnd too fast for TCP ACK. However in QUIC recovery we process each ack'ed packet one by one in on_packet_acked(), there is no case where 2 or more packets are acked in on_packet_acked() hook. Also current logic limits growing cwnd more than 2 MSS for ACK packet containing more than 2 ACK packets, cwnd can grow too conservative in case that an ACK range contains many packets. For example the receiver may ack multiple packets in a single ACK frame when it processed multiple packets at once. This PR partially reverts #737.
2021-05-27recovery: fixup Debug implGravatar lucas 1-2/+2
2021-05-26doc: the default CC value is cubicGravatar Junho Choi 1-1/+1
2021-05-26process post-handshake data only when receiving CRYPTO framesGravatar Alessandro Ghedini 1-3/+6
2021-05-24recovery: pacing of egress QUIC packetsGravatar Lohith Bellad 6-1/+252
2021-05-24network path awarenessGravatar Alessandro Ghedini 19-313/+717
Currently quiche does not hold any information about the network path of a QUIC connection (such as the address of the peer), and the application is responsible for maintaining such information. This means that in case of a network migration, the application is responsible for detecting the change and switching over to new path, however there is currently no way for an application to actually validate a new path, as required by the QUIC spec. Adding an ad-hoc API to only expose path validation to applications would likely be very cumbersome, due to the synchronization needed between an application and quiche on the state of the current path, and any other path being probed. Instead, this change makes quiche be aware of the network path being used. The application needs to communicate the destination address of a connection upon creationg (via `accept()` or `connect()`), as well as the source address of received packets (via `recv()` and the new `RecvInfo` structure). In turn quiche will provide the application with the destination address of generated packets (via `send()` and the new `SendInfo` structure). Currently only the destination address of a connection is tracked, which would allow quiche to handle responding to migrations transparently from the application (but this will be added as a separate change). Additional fields can later be added to `RecvInfo` and `SendInfo`, such as the address of the local endpoint in order to be able to initiate migrations, rather than just respond to them.
2021-05-21ci: enable examples and all features for all test buildsGravatar Alessandro Ghedini 1-4/+4
2021-05-21stream: undo consistent RangeBuf allocation on sendGravatar Alessandro Ghedini 2-109/+25
Currently, when writing stream data, `RangeBuf` objects are allocated with a fixed capacity, and if the buffer is not immediately filled, the next stream write will re-use it. This was originally implemented to try to reduce memory fragmentation of stream data, and, in order to be able to maintain the `Send` and `Sync` traits implementation, the `RangeBuf` data buffer was wrapped in an `RWlock`, in order to implement thread-safe interior mutability. However due to the fact that the locking falls within 2 hot code paths (stream data writing, and STREAM frame creation) it heavuily affects throughput. In retrospect, the benefit of reduced memory fragmentation does not seem to justify the performance penalty, so this undoes the consistent allocation change to remove the need for the lock. This partially reverts commit 0976433e68ea1926aa9cf581e1a5846aba6da672.
2021-05-18calculate max CRYPTO frame length more accuratelyGravatar Alessandro Ghedini 1-27/+32
Instead of using a static value of what the frame overhead _could_ be, use the actual header length value that is available.
2021-05-17ffi: expose source / destination connection IDsGravatar Norman Maurer 2-0/+27
Motivation: We should expose functions to access the source and destination ids via the c API as well Modifications: Expose functions in the C API Result: Be able to access the ids of a connection
2021-05-12stop sending packets if drainingGravatar Alessandro Ghedini 1-0/+11
This check is currently done in `Connection::send()` as well, but when coalescing multiple packets, if one causes the connection to move to draining (e.g. because a CONNECTION_CLOSE was sent), we should stop trying to write additional coalesced packets.
2021-05-12add PADDING frame to fill up the datagram with Initial packetGravatar Junho Choi 1-9/+58
For Initial packets we need to make the UDP datagram at least 1200 bytes following the transport spec. However when the last packet in the datagram is Short and the datagram is not fully filled, we try to do null padding at the end which causes a decryption failure on the server because Short packet doesn't have an explicit length. To avoid this issue, when Short packet is added in the same datagram with Initial packet, add a PADDING frame to Short packet to fill up the datagram size. If Short packet is not added, we still add zero padding at the end of packet.
2021-05-12cubic: fast convergence from the rfc8312bis draftGravatar Junho Choi 1-12/+69
Update based on https://github.com/NTAP/rfc8312bis/pull/35 - remove w_last_max - update the logic of fast convergence - fix the bug where fast convergence is not applied
2021-05-12cubic: AIMD approach for TCP friendly windowGravatar Junho Choi 1-25/+47
- Update based on https://github.com/NTAP/rfc8312bis/pull/24 - Fix congestion avoidance test
2021-05-12cubic: redefine K equation according to the rfc8312bis draftGravatar Junho Choi 1-16/+34
- Update based on https://github.com/NTAP/rfc8312bis/pull/3 - Fix congestion avoidance test (but still has a TODO)
2021-05-12h3: make quiche_h3_recv_dgram signature consistentGravatar Lucas Pardue 1-1/+2
Seems we missed the header file...
2021-05-11use PAYLOAD_LENGTH_LEN constGravatar Junho Choi 1-1/+1
2021-05-10validate protocol version when creating ConfigGravatar Norman Maurer 1-0/+25
Motivation: We should validate that the version is valid that was used to create the Config object and if not fail. Modifications: - Add validation for the version - Add some tests Result: Version is validated during config creation
2021-05-06apps: fix inconsistent struct constructorGravatar Alessandro Ghedini 1-1/+1
2021-05-06apps: use parse() to convert string to intGravatar Alessandro Ghedini 1-8/+8
2021-05-06qlog: use map() instead of pattern matchingGravatar Alessandro Ghedini 1-15/+3
2021-05-06h3: use parse() to convert string to intGravatar Alessandro Ghedini 1-3/+6
2021-05-06ffi: expose client-side session resumption and 0-RTT APIGravatar Norman Maurer 2-0/+33
Motivation: Quiche added support for session resumption and 0-RTT lately but the API was not exposed via the C api. This was done in https://github.com/cloudflare/quiche/pull/911 and https://github.com/cloudflare/quiche/pull/914. Modifications: Add C API to also be able to make use of the functionality via C. Result: Be able to use session resumption and 0-RTT via the C api
2021-05-05check the packet length against the buffer sizeGravatar Junho Choi 1-1/+70
When we queue 0-rtt packets in undecryptable_pkts, there is a case that actual packet length is smaller than the size in the payload (packet length field) which may cause a runtime panic. Such packet is undecryptable in any way, so check it early and return error.