Dirkjan Ochtman
47678a1a62
Replace Gitter link with Discord
2023-08-22 13:29:59 -07:00
Benjamin Saunders
8c58cc7781
proto: add forgotten fields to Debug for TransportConfig
2023-08-21 19:23:23 -07:00
Benjamin Saunders
33fa6bb24d
proto: Fix double-boxing of congestion::ControllerFactory
...
Also allows callers who already have a trait object to pass it on
without yet more boxing.
2023-08-21 19:13:23 -07:00
Benjamin Saunders
6d4830eaef
Fix client/server tracing span placement in echo_* tests
...
These must enclose the endpoint construction and connect calls.
2023-08-21 19:10:38 -07:00
Benjamin Saunders
13db6076a3
Propagate current tracing span to spawned connection drivers
...
For clients, this is the span that was current when the connection
attempt was initiated; for servers, it is the span of the endpoint
task, which is the span that was current when the endpoint was
constructed.
2023-08-21 19:10:38 -07:00
Benjamin Saunders
f07a40d7f1
proto: use deterministic packet numbers in tests that count ACKs
...
Prevents spurious failures when a skipped packet number causes an
extra ACK to be sent by reordering detection logic.
2023-08-20 22:48:47 -07:00
Benjamin Saunders
bef724969c
proto: Allow test code to opt out of skipping packet numbers
2023-08-20 22:48:47 -07:00
Benjamin Saunders
b3652a8336
udp: disable GSO on EINVAL
...
Linux 5.15 was observed to emit an EINVAL when attempting to transmit
UDP with GSO over IPv6 on a virtio net interface. 6.1 was also
observed to emit EINVAL, though only after EIO. In both cases, EINVAL
was suppressed by disabling GSO.
2023-08-20 15:54:28 -07:00
Benjamin Saunders
a06838abde
proto: Allow GSO to be manually disabled
2023-08-20 13:30:30 -07:00
Benjamin Saunders
5cca3063f6
udp: don't log EMSGSIZE errors
...
These are occasionally expected now that we're generating MTU probes,
and have been observed to cause unnecessary concern from users.
2023-08-17 19:11:13 -07:00
Floris Bruynooghe
9cdae99a50
Add docs for RecvMeta ( #1634 )
...
This helps implementors of AsyncUdpSocket.
2023-08-17 21:04:20 +02:00
Dirkjan Ochtman
c02c8a5a7a
udp: use set_socket_option_supported() wrapper
...
Make sure we still propagate other errors to the caller.
2023-08-16 19:25:12 -07:00
JieLiang Ma
b4cc111b88
set may_fragment based on whether setting IP_DONTFRAG fails with ENOPROTOOPT.
2023-08-15 13:40:54 +02:00
JieLiang Ma
7b72b71c2f
Move function may_fragment() from lib quinn-udp to UdpSocketState.
2023-08-15 13:40:54 +02:00
Dirkjan Ochtman
4f25f501ef
udp: simplify socket state initialization
2023-08-11 11:49:09 -07:00
Ben Saunders
20612b632b
Privatize TransportParameters::default()
2023-08-09 14:30:11 -07:00
dependabot[bot]
8076ffe94d
Bump Swatinem/rust-cache from 1 to 2
...
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache ) from 1 to 2.
- [Release notes](https://github.com/swatinem/rust-cache/releases )
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md )
- [Commits](https://github.com/swatinem/rust-cache/compare/v1...v2 )
---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-08-07 11:44:09 -07:00
Benjamin Saunders
70e14b5c26
Mitigate optimistic ACK attacks
2023-07-29 15:24:18 -07:00
Floris Bruynooghe
532ba7d804
Preserve the tracing span in the EndpointDriver task
...
The EndpointDriver is spawned in a task. Unless the span is copied
into this task the current span is lost.
Copying the current span means any tracing calls inside the driver,
from e.g. a custom AsyncUdpSocket, are preserved in the span. This
makes it easy to use different parent spans for different endpoints
and have log messages appear with their parent span. Otherwise these
log messages are not attached to a span.
2023-07-27 16:12:49 -07:00
Benjamin Saunders
89ff085cf5
Reduce default maximum UDP payload size to the ethernet MTU
...
Drastically reduces the size and sparsity of the quinn receive buffer
for no performance cost in typical applications.
2023-07-25 23:36:08 -07:00
Benjamin Saunders
4973c4ab29
Bump quinn-udp version
2023-07-24 16:35:51 -07:00
Benjamin Saunders
f15d837578
Fold UdpState into UdpSocketState
...
Simplifies the quinn-udp API, and helps isolate internal complexity to
the platforms that need it.
2023-07-24 16:35:51 -07:00
Benjamin Saunders
3eb23bc730
Fold UdpState into AsyncUdpSocket
...
Allows knowledge of UdpState to be isolated entirely within
AsyncUdpSocket implementations, simplifying quinn::Endpoint and the
poll_send API, and exposing more control over UDP feature checks to
implementers.
2023-07-24 16:35:51 -07:00
Benjamin Saunders
78720d0d4f
Perform a key update early in a connection's lifetime
2023-07-24 11:27:11 -07:00
Benjamin Saunders
e92153667d
Update docs for UDP fragmentation configuration support
...
As of 092a7686a4 , MTUD is enabled by
default on all major platforms, and automatically disabled regardless
of configuration otherwise.
2023-07-24 14:12:38 +02:00
Adolfo Ochagavía
0f47d35193
Ensure ack delay is correctly set
...
Sponsored by Stormshield
2023-07-24 14:08:09 +02:00
Adolfo Ochagavía
17014315c5
Extract decrypt_packet_body function
...
Sponsored by Stormshield
2023-07-24 14:08:09 +02:00
Adolfo Ochagavía
ad71ca3dd8
Extract unprotect_header function
...
Sponsored by Stormshield
2023-07-24 14:08:09 +02:00
Adolfo Ochagavía
bab7b0af91
Implement acknowledgement frequency
...
Sponsored by Stormshield
perf-regression
2023-07-24 14:08:09 +02:00
Jonatan Hatakeyama Zeidler
0ae7c60b15
Reexport rustls crate
2023-07-17 12:00:39 -07:00
Benjamin Saunders
b7695b1ddd
Replace .rev().next() with .next_back()
2023-07-15 13:42:18 -07:00
Lijun Wang
e652b6d999
Suppress stateless packets when endpoint transmit queue is large
2023-07-06 14:10:04 -07:00
tim gretler
6d3958fce5
make new_with_abstract public again
2023-06-30 09:58:14 +02:00
tim gretler
a8c17a3e17
merge converged endpoint constructors
2023-06-30 00:11:15 -07:00
tim gretler
35089ee1c8
use boxed udp socket
2023-06-30 00:11:15 -07:00
Ian Kettlewell
b30711f559
Update README.md to say "see examples for usage" with link.
2023-06-27 21:19:35 +02:00
dependabot[bot]
790ff720a9
Update rcgen requirement from 0.10.0 to 0.11.1
...
Updates the requirements on [rcgen](https://github.com/est31/rcgen ) to permit the latest version.
- [Changelog](https://github.com/est31/rcgen/blob/master/CHANGELOG.md )
- [Commits](https://github.com/est31/rcgen/compare/v0.10.0...v0.11.1 )
---
updated-dependencies:
- dependency-name: rcgen
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2023-06-19 16:20:46 +02:00
Benjamin Saunders
7914468e27
Merge redundant impl Connecting blocks
2023-06-12 14:12:15 -07:00
Benjamin Saunders
926f927135
Fix panic on redundant finish calls
2023-06-12 14:12:15 -07:00
Jonathan Johnson
98f5fe2a3f
Added Endpoint::reject_new_connections ( #1585 )
...
This commit adds a new function that refuses new connections without
impacting existing connections. Internally, this just sets the
connection limit to 0, which causes incoming connections to be rejected.
This is the same approach that was taken in 0.8.5 when `Incoming` was
dropped.
2023-06-07 10:15:52 +02:00
Benjamin Saunders
65bbb1e154
Update obsolete doc comment
2023-06-04 07:44:53 +02:00
Benjamin Saunders
c1d412c7aa
Bump versions to reflect API breakage
2023-06-03 14:58:29 -07:00
Benjamin Saunders
b73ed0b73a
Rename issue_cids to issue_first_cids to better reflect its role
2023-06-03 14:58:29 -07:00
Benjamin Saunders
6d2d9fda4c
Allocate persistent connection IDs immediately when generated
...
Guards against future bugs where multiple (e.g. concurrent) calls to
`new_cid` might otherwise lead to an undetected collision.
2023-06-03 14:58:29 -07:00
Benjamin Saunders
951761f7e6
Yield endpoint-generated responses directly rather than buffering
2023-06-03 14:58:29 -07:00
Benjamin Saunders
8b67ae483c
Move ConnectionHandle into DatagramEvent
...
Simplifies signatures and prepares for non-connection-related datagram
events.
2023-06-03 14:58:29 -07:00
Benjamin Saunders
97ccc4f611
Factor connection lookup out into a dedicated struct
2023-06-03 14:58:29 -07:00
Benjamin Saunders
85d9a5c6c9
Remove redundant/obsolete Endpoint::reject_new_connections
...
This was previously used by the `quinn` layer to stop accepting
connections when the `Incoming` stream was dropped. That stream has
since been replaced by an async function. Users who still want this
can use set_server_config directly.
2023-06-03 14:58:29 -07:00
Benjamin Saunders
1373443ad0
Fix invalid CIDs being ignored when using zero-length CIDs
2023-06-03 14:58:29 -07:00
Benjamin Saunders
23ad201255
Fix obsolete debug struct name
2023-06-03 14:58:29 -07:00