Commit Graph

694 Commits

Author SHA1 Message Date
Benjamin Saunders af4c4caeb2 Fix racy Endpoint::wait_idle 2023-01-08 06:37:22 +01:00
XOR-op c88a6ecd7b reexport whole quinn-udp module 2023-01-07 21:59:19 +01:00
XOR-op 50a474d7ab reexport udp::{RecvMeta, UdpState} for AsyncUdpSocket 2023-01-07 21:59:19 +01:00
Benjamin Saunders 49cdfa553e Route logs via log crate by default when tracing isn't used 2022-12-24 21:37:50 +01:00
Dirkjan Ochtman 2c6aa43610 Apply clippy suggestions from Rust 1.66 2022-12-19 10:13:01 -08:00
StygianLightning 0d366990f1 Removed an obsolete lint control annotation.
The lint issue that made the workaround necessary has been resolved.
2022-12-10 11:07:03 -08:00
StygianLightning b170993bd1 Fixed a typo. 2022-12-10 11:07:03 -08:00
Benjamin Saunders 7d1b280f55 Bump versions 2022-12-05 22:37:28 +01:00
lucifer9 166e0fb60a Fix build on FreeBSD, add CI test for FreeBSD, set IPV6_RECVPKTINFO on FreeBSD & macOS, set IP_RECVDSTADDR on FreeBSD and macOS only for IPv4, fix a warning about unused state: &UdpState, allow different types for the 3rd argument to sendmmsg()/recvmmsg() 2022-12-02 02:33:38 -08:00
Brandon Williams 9f50319421 send-stream: rely on cleaning up waker for Stopped in SendStream Drop impl 2022-11-29 15:26:15 -08:00
Brandon Williams 70ef5039e9 recv-stream: clean up any previously register wakers when RecvStream is dropped 2022-11-29 15:26:15 -08:00
Brandon Williams f6ae67e2fa send-stream: clean up any previously register wakers when SendStream is dropped 2022-11-29 15:26:15 -08:00
Brandon Williams 7ba0acb8da send-stream: unregister waker when Stopped is dropped 2022-11-29 11:35:34 -08:00
Brandon Williams 1122c627c3 connection: wake 'stopped' streams on stream finish events
In the event that the SendStream Stopped future is polled once and then dropped
before the remote side has stopped the stream, and instead the stream
has been finished, the waker registered in the connection stopped map is
never removed and is effectively "leaked" until the connection is
closed. This can lead to a large amount of memory being retained when a
connection is very long lived and many streams are used over the life of
that connection.
2022-11-29 11:35:34 -08:00
Benjamin Saunders cfb7a067ee Bump version 2022-11-28 20:27:12 -08:00
Benjamin Saunders 478445ea71 Fix panic on concurrent read_datagram completion
The previous logic assumed that a datagram must be available if the
future was notified, but this might not be the case if e.g. two
futures are concurrently waiting for datagrams, but only one datagram
has been received, since we use notify_waiters to wake all waiting
futures to be robust in the face of cancellation.
2022-11-28 20:27:12 -08:00
Benjamin Saunders fb2af0816e Update description to reflect abstract runtime support 2022-11-22 19:34:52 -08:00
Benjamin Saunders 1d390af2fa Bump versions for 0.9.1 release 2022-11-15 06:50:40 +01:00
Benjamin Saunders 2dca78766a Less confusing Notify name for local stream opening
Remotely-initiated streams can be said to be opened as well.
2022-11-14 01:18:03 -08:00
Benjamin Saunders d73fcfd4a0 Fix stream open futures sometimes waiting on the wrong notification
After a spurious wakeup, `Connection::open_uni` and `open_bi` would
switch to waiting for notifications about incoming streams, rather
than the intended notification about new stream ID flow control
budget. This was probably a copy-paste error from `poll_accept`.
2022-11-14 01:18:03 -08:00
Benjamin Saunders 641114a69d Fix clippy lints 2022-11-14 01:17:22 -08:00
Dirkjan Ochtman 28a2c8052c quinn: bump dependency on tokio to 1.13
We now use `UdpSocket::poll_send_ready()` and `UdpSocket::poll_recv_ready()`.
2022-10-26 16:10:29 -07:00
Dirkjan Ochtman 57bd7643e7 quinn-udp: bump version to 0.3 2022-10-26 16:10:29 -07:00
Benjamin Saunders 4c4da517fe Bump version numbers for 0.9 release 2022-10-26 12:50:12 +02:00
Benjamin Saunders 00fb34759d Move idle Notify handle into endpoint Shared 2022-10-23 08:18:42 +02:00
Benjamin Saunders 7d51d2e57e Remove Incoming stream in favor of Endpoint::accept 2022-10-23 08:18:42 +02:00
Benjamin Saunders b8857397ff Introduce Endpoint::accept method for better ergonomics 2022-10-23 08:18:42 +02:00
Benjamin Saunders feca8abebf Accessor for free datagram send buffer space
Useful for applications which can adapt to variable bandwidth on the
fly, such as video streaming.
2022-10-20 09:26:20 +02:00
Benjamin Saunders 4c5d7d0894 Expose a getter for the close reason 2022-10-20 09:25:27 +02:00
dependabot[bot] f86dd7596d Update rcgen requirement from 0.9.1 to 0.10.0
Updates the requirements on [rcgen](https://github.com/est31/rcgen) to permit the latest version.
- [Release notes](https://github.com/est31/rcgen/releases)
- [Changelog](https://github.com/est31/rcgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/est31/rcgen/compare/v0.9.1...v0.10.0)

---
updated-dependencies:
- dependency-name: rcgen
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 15:29:41 +02:00
Benjamin Saunders 6e4bcbb2fc Drop NewConnection in favor of simpler API 2022-09-27 11:08:26 +02:00
Benjamin Saunders dce1794bbc Revert Connection::open_{uni, bi} to named 'static futures 2022-09-27 11:08:26 +02:00
Benjamin Saunders 6ba0051472 Introduce Connection::{accept_{uni, bi}, read_datagram}
Provides a more natural alternative to the streams in NewConnection
2022-09-27 11:08:26 +02:00
Benjamin Saunders 3e2935ff5f Extract Notify handles from inside connection mutex
Reduces indirection and allows us to avoid cloning an `Arc` each time
one of the relevant events is waited on, and opens the door to
handwritten futures built on them.
2022-09-27 11:08:26 +02:00
Benjamin Saunders 5fa3581edb Fix missing wakeups on large stream credit increase 2022-09-27 11:08:26 +02:00
Benjamin Saunders ebad48d34f Clarify test diagnostic 2022-09-17 20:25:02 +02:00
Benjamin Saunders 558e904414 Fix spurious test panic 2022-09-17 20:25:02 +02:00
Benjamin Saunders 8083a28100 Remove double indirection around Runtime 2022-09-17 20:25:02 +02:00
Benjamin Saunders 471848634b Drop unnecessary manual Clone impl 2022-09-17 20:25:02 +02:00
Benjamin Saunders 332eb605f5 Bump MSRV to 1.59 2022-08-28 07:04:56 +02:00
Benjamin Saunders b01ac88806 Define Connection::closed helper to await connection termination
This has come up several times, most recently in
https://github.com/quinn-rs/quinn/issues/1395. While equivalent
behavior is already possible by waiting for e.g. `IncomingUniStreams`
to yield `Err` or `None`, this is substantially more discoverable.
2022-08-16 19:05:23 +02:00
Lijun Wang 24ec886905 Fixed doc link 2022-08-01 10:54:46 +02:00
Lijun Wang 1f5977450a Doc fix 2022-08-01 10:54:46 +02:00
Lijun Wang 1274832787 remove mut 2022-08-01 10:54:46 +02:00
Lijun Wang 1cfa19284a Open set_receive_window in public Connection class 2022-08-01 10:54:46 +02:00
Benjamin Saunders ffa85f2c43 Abstract out async runtime
Co-authored-by: Yureka <yuka@yuka.dev>
2022-07-05 09:06:31 -07:00
Benjamin Saunders 9f948d5a5f Factor async handling out of quinn-udp 2022-07-05 09:06:31 -07:00
Benjamin Saunders 16ed21b0cc Bump edition on quinn and quinn-proto 2022-07-05 09:06:31 -07:00
Benjamin Saunders fe93a68108 Replace structopt with its successor, clap 3 2022-07-03 21:02:33 +02:00
Benjamin Saunders 3bc6bdae89 Bump MSRV to 1.57
This is >6 months old and should address the CI failure.
2022-07-03 08:07:54 +02:00