All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
0.10.0 (2021-03-05)
-
tokio: new Tokio v1 is not backward compatible with previous runtime versions < 1.
-
tokio: upgrade tokio to v1.2.0, quinn to v0.7.0 and rustls to v0.19.0 (0465cf8)
0.9.25 (2021-03-03)
0.9.24 (2021-02-25)
0.9.23 (2021-02-21)
0.9.22 (2021-02-20)
- igd: expose a feature to completely disable IGD support, downgrading igd crate to v0.11.1 (0873b29)
- echo_service: dont contact echo_service if IGD was successful (8899436)
0.9.21 (2021-02-19)
- config: do not use the IGD gateway to realize local IP address (62dbcc4)
0.9.20 (2021-02-19)
- use loopback even when IGD finds local ip, if network is loopback (95f00b3)
0.9.19 (2021-02-18)
- logs: dont log expected messages at error level (12b2c5a)
0.9.18 (2021-02-16)
0.9.17 (2021-02-15)
- use hard coded contacts to realize local IP address (3741833)
0.9.16 (2021-02-12)
- adds a p2p node example that uses bidirectional streams (46184b8)
- makes QuicP2p::Endpoint cloneable so that it can more easily be used across threads. (a8c8b9d)
- api: add API to open bi-directional stream that can be used to (158ae88)
- api: add support for manual port forwarding by passing additional (9dca7b9)
- api: move all connection handling and message handling internally (0093c20)
- disconnects: add API for disconnection and fix tests (37abcf9)
- echo_service: find if peer is externally reachable if external IP (a9989cc)
- echo_service: perform UPnP and/or echo_service when the endpoint (5812f7b)
- all: remove FIFO queues and use the mpsc channels directly (2bab054)
- echo_service: prevent contacting the echo service multiple times (f9cf906)
- example: dont use LocalHost in example (2d70c05)
- igd: don't skip port forwarding if local IP address is specified (2fb6401)
- test: refactor structure of test code and fix echo_service test (591ebf8)
0.9.15 (2021-02-09)
0.9.14 (2021-02-02)
0.9.13 (2021-01-27)
- connections: when gracefully finishing uni-stream upon sending bytes, do not remove conn from the pool if an error thrown was caused due to being already closed (e6c5a2a)
0.9.12 (2021-01-21)
0.9.11 (2021-01-20)
0.9.10 (2021-01-20)
- get peer's cached connection (1d8f4ab)
0.9.9 (2021-01-14)
0.9.8 (2021-01-13)
0.9.7 (2020-12-29)
0.9.6 (2020-12-10)
0.9.5 (2020-12-10)
0.9.4 (2020-12-10)
- api: add more error variants and use them instead of (bb56857)
- example: remove panics from the example (20dfe02)
0.9.3 (2020-12-03)
- proper error on empty bootstrap (db61592)
0.9.2 (2020-11-24)
0.9.1 (2020-11-19)
- do not initialize logger in QuicP2p constructor (4952639)
0.9.0 (2020-11-19)
QuicP2p::bootstrap
return type changed fromResult<(Endpoint, Connection)>
toResult<(Endpoint, Connection, IncomingMessages)>
.- Dropping
Connection
while some send/recv streams are still in scope no longer closes the connection. All those streams must be dropped too before the connection is closed. -
- `Endpoint::connect_to` now returns pair or `(Connection, Option<IncomingMessages>)` (previously it returned only `Connection`).
Connection::open_bi_stream
renamed toopen_bi
(same as in quinn)Connection::send
renamed tosend_bi
for consistencyEndpoint::listen
no longer returnsResult
- add Endpoint::close (2cedb77)
- do not close
quinn::Connection
onConnection
drop (1e5ee89) - implement Clone for Connection (51de4c8)
- implement connection deduplication (175c563)
- implement connection pooling (6edb290)
- re-export quinn::ConnectionError (c10895d)
- remove connection from the pool when manually closed (815eb11)
- return also IncomingMessages from QuicP2p::bootstrap (cd18837)
0.8.9 (2020-11-18)
0.8.8 (2020-11-10)
- config: add --fresh and --clean flags to the config to prevent use (b685d77)
- port_forwarding: refactor IGD and echo service to be async (a19cd51)
- upnp: add config to disable port forwarding for clients (4a14488)
- echo_service: respond to echo service request and expand test (40217e1)
- echo_service_test: refactor test to use tokio::spawn and join! (2f82af2)
- examples: Fix clippy errors in examples (c201df3)
- upnp: add timeout for IGD and echo service (2167ead)
0.8.7 (2020-11-05)
0.8.6 (2020-10-27)
0.8.5 (2020-10-26)
0.8.4 (2020-09-30)
0.8.3 (2020-09-24)
0.8.2 (2020-09-22)
- api: change bootstrap_nodes arg in with_config API to be an slice rather than a VecDeque (a505065)
- header: add message header that is sent over the wire for data (4dc09b8)
- client-ip: set to use loopback ip if hard coded contacts are loopback (06fb27f)
- endpoint: return error if no local addr was specified and IGD is not available (940dce9)
- log: minor fixes in log messages (0a9bf09)
0.8.1 (2020-09-08)
- Update repo/crate name to qp2p
0.8.0 (2020-09-08)
- Update repo/crate name to quic_p2p to match org naming convention
- Refactor the API to allow reusing of streams to exchange multiple messages
- Refactor and fix tests to use the new API
- Add api to get connection stream without sending a message
- Update qp2p endpoint port when a random port is used
- Expose a function to query remote address from a Connection
- Add support for listening to messages from both uni-streams and bi-streams
- Expose a 'listen' API which return a stream of connections and in turn messages
- Support for bootstrapping using multiple nodes concurrently
- Support sending a message on a Connection and awaiting for a response using unidirectional streams
- Expose an async API
- Standardize cargo dependency versioning
- Return an error when IGD fails
- Fix clippy errors in feature-gated code
- Fix bug in get_connection_info with
upnp
enabled.
- Skip port forwarding if quic-p2p is running on the loopback address.
- Include support for UPnP and improve echo service.
- Use IGD for port forwarding and use the IGD gateway to find a node's local IP address.
- Update quinn to 0.6.0
- Update rustls to 0.17.0
- Force the use of the basic single-threaded Tokio scheduler to prevent conflicts when used by a crate using Tokio
rt-threaded
feature - Take two channels, one for client event and a second one for a node
- Use node or client channel for sending a message depending on the peer we are receiving the message from
- Remove the use of peer certificate, and therefore remove it from the handshake process
- Use shared QUIC
ClientConfig
instead of one per peer - Update for Rust 1.41 (mem::replace -> mem::take)
- Use structopt to parse command line arguments
- Rename
proxies
tobootstrap_nodes
- Migrate to async/await syntax with new quinn v0.5
- Update CI to run all packages in the worspace
- Migrate CI/CD pipeline to GitHub Actions
- Use new new-style macro import
- Unsent user messages in the pending queues of an ongoing connection attempt will now be sent back to the user library if the connection attempt fails.
- Report connection failure for all cases where the connection was initiated by us. Previously some of the cases where not handled.
- Fire unsent user messages to the clients back to the user library. Previously unsent messages to clients were silently ignored.
- Expose
Dirs
andOverRide
structs publicly. - Add
boostrap_cache_dir
field to the config to specify a custom path for the bootstrap cache.
- Fix incorrect deserialisation logic in
WireMsg
- Fix
fmt::Display
forEvent
andWireMsg
- Fix bugs
- Modify API and internals with changes required by routing
- Return user messages given via
send
API for both successful and unsuccessful sends - Tie a user given token to the event returning the above message to help identify the context
- Initial release.
- Implement bootstrap cache.
- Implement the bootstrap logic.
- Add peer types (Client/Node).
- Implement optimised user message transfer (for larger messages).
- Add utils for testing delayed connections.
- Add configuration loading from files and command line (with
structopt
).