Skip to content

Latest commit

 

History

History
1309 lines (782 loc) · 60.7 KB

CHANGELOG.md

File metadata and controls

1309 lines (782 loc) · 60.7 KB

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

0.36.4 (2023-03-14)

0.36.3 (2023-02-23)

0.36.2 (2023-02-21)

Bug Fixes

  • move incoming conn handling off thread to not block (d1624cb)

0.36.1 (2023-02-20)

0.36.0 (2023-02-20)

⚠ BREAKING CHANGES

  • consumes receiver on read.

Features

  • limit async during read/write for greater consistency (c466644)

0.35.1 (2023-01-25)

0.35.0 (2023-01-20)

⚠ BREAKING CHANGES

  • ease transition of API changes
  • remove Config
  • remove bootstrap and reachability
  • remove bootstrapping; external IP/port

Bug Fixes

  • builder setting right address bound (0e42455)

  • unneeded async (0538e57)

  • ease transition of API changes (e5ab6df)

  • remove bootstrap and reachability (b7b4976)

  • remove bootstrapping; external IP/port (5b2aaac)

  • remove Config (aa6197b)

0.34.5 (2023-01-18)

Features

  • implement builder for Endpoint (e34471a)

0.34.4 (2023-01-11)

Bug Fixes

  • test: keep connection to prevent failure (27535dc)

0.34.3 (2023-01-10)

0.34.2 (2022-12-27)

0.34.1 (2022-12-22)

Bug Fixes

  • generate random Bytes faster (31b63ac)

0.34.0 (2022-12-19)

⚠ BREAKING CHANGES

  • conn: the Connection::send_uni public API has been removed since it has the same implementation as the Connection::send_with API.

  • conn: removing redundant Connection::send_uni public API (4026bf2)

0.33.2 (2022-12-13)

0.33.1 (2022-12-13)

0.33.0 (2022-12-12)

⚠ BREAKING CHANGES

  • Nothing really, but the release process for non breaking changes is currently broken

Features

  • Arbitrary breaking change to force release (5164fff)

0.32.0 (2022-12-12)

⚠ BREAKING CHANGES

  • This commit itself does not break anything, but is added to force a release flow for previous commits
  • update quinn to 0.9
  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • drop IGD support (5da6a33)
  • drop retry support (7909ca5)
  • update quinn to 0.9 (891b45e)
  • update quinn to use Endpoint::accept (bb6e610)
  • config: allow to set the max number of concurrent bi-streams (a75c728)
  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • remove unused channel (9507478)

  • return correct error type (38fb7dd)

  • api: don't treat any type of errors as benign (ff9c805)

  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

  • small README correction (692afb0)

0.32.0 (2022-12-12)

⚠ BREAKING CHANGES

  • This commit itself does not break anything, but is added to force a release flow for previous commits
  • update quinn to 0.9
  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • drop IGD support (5da6a33)
  • drop retry support (7909ca5)
  • update quinn to 0.9 (891b45e)
  • update quinn to use Endpoint::accept (bb6e610)
  • config: allow to set the max number of concurrent bi-streams (a75c728)
  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • remove unused channel (9507478)

  • return correct error type (38fb7dd)

  • api: don't treat any type of errors as benign (ff9c805)

  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

  • small README correction (692afb0)

0.32.0 (2022-12-12)

⚠ BREAKING CHANGES

  • This commit itself does not break anything, but is added to force a release flow for previous commits
  • update quinn to 0.9
  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • drop IGD support (5da6a33)
  • drop retry support (7909ca5)
  • update quinn to 0.9 (891b45e)
  • update quinn to use Endpoint::accept (bb6e610)
  • config: allow to set the max number of concurrent bi-streams (a75c728)
  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • remove unused channel (9507478)

  • return correct error type (38fb7dd)

  • api: don't treat any type of errors as benign (ff9c805)

  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

  • small README correction (692afb0)

0.32.0 (2022-12-12)

⚠ BREAKING CHANGES

  • update quinn to 0.9
  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • drop IGD support (5da6a33)
  • drop retry support (7909ca5)
  • update quinn to 0.9 (891b45e)
  • update quinn to use Endpoint::accept (bb6e610)
  • config: allow to set the max number of concurrent bi-streams (a75c728)
  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • remove unused channel (9507478)
  • return correct error type (38fb7dd)
  • api: don't treat any type of errors as benign (ff9c805)
  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

0.32.0 (2022-12-12)

⚠ BREAKING CHANGES

  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • config: allow to set the max number of concurrent bi-streams (a75c728)
  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • api: don't treat any type of errors as benign (ff9c805)
  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

0.32.0 (2022-12-06)

⚠ BREAKING CHANGES

  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Features

  • stream: include connection id information as part of the StreamId (8acd490)

Bug Fixes

  • api: don't treat any type of errors as benign (ff9c805)
  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

0.32.0 (2022-12-05)

⚠ BREAKING CHANGES

  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Bug Fixes

  • api: don't treat any type of errors as benign (ff9c805)
  • StreamID: wrap quinn::StreamID to avoid misleading log (4c06934)

0.32.0 (2022-12-05)

⚠ BREAKING CHANGES

  • api: Currently when an error occurs upon trying to read from a stream, we swallow some of the errors assuming them benign, as if the connection was just nicely closed. It'll be better to report the error upwards so the caller/user of this lib can be aware of it since it knows much better the context where it's happening to make any decision.

Bug Fixes

  • api: don't treat any type of errors as benign (ff9c805)

0.31.1 (2022-11-28)

0.31.0 (2022-11-26)

⚠ BREAKING CHANGES

  • conn: accept only one incoming msg per bi-stream

  • api: refactoring and addition of new Error types to the public API

  • api: refactoring and addition of new Error types to the public API (da9d885)

  • conn: accept only one incoming msg per bi-stream (13b499c)

0.30.1 (2022-10-25)

Features

  • api: exposing SendStream/RecvStream id() public APIs which return StreamId (0bf7523)

0.30.0 (2022-09-05)

⚠ BREAKING CHANGES

  • changes bytes interface for message send/read

This more closely reflects msg header, destintation and payload parts, and allows for greater flexibility and deduplication when sending repeat headers/payloads to different peers

Features

  • take three Bytes for each send (dcc35e5)

0.29.0 (2022-09-05)

⚠ BREAKING CHANGES

  • the connection id is now a string.

The quinn.stable_id is prefaced with the SockeetAddr of the peer, so this should provide a globally unique id now.

Features

  • make Connection.id unique across all peers (ae102be)

0.28.7 (2022-06-07)

0.28.6 (2022-04-25)

Features

  • add Stream when getting next message from connection (cd3b255)

0.28.5 (2022-03-01)

0.28.4 (2022-03-01)

Bug Fixes

  • p2p_node: 'polo' reply processing (aacedf4)

0.28.3 (2022-02-23)

0.28.2 (2022-02-13)

Features

  • add 'structopt' feature flag (7150c14)

0.28.1 (2022-02-13)

Features

  • add IncomingConnections::try_recv() (a7562e9)

0.28.0 (2022-01-31)

⚠ BREAKING CHANGES

  • moving to quinn 0.8

Features

Bug Fixes

  • multiple conns to same peer test fixed (5a6cb39)
  • test and connection stability (aee6dfc)

0.27.4 (2022-01-17)

0.27.3 (2022-01-11)

Features

  • add optional reason for closing a connection (8ba42b5)

0.27.2 (2021-11-04)

Features

  • implement Debug for Connection (966567e)

0.27.1 (2021-11-03)

0.27.0 (2021-10-28)

⚠ BREAKING CHANGES

  • The qp2p::config::DEFAULT_KEEP_ALIVE_INTERVAL constant has been removed, and the default value for keep_alive_interval set for Config::default() is now None, meaning keep-alives are disabled by default.

Features

  • add Connection::id to get a stable ID for a connection (a86e558)

Bug Fixes

  • more carefully handle 'benign' connection loss (9e2be50)

  • disable keep-alives by default (7788fda)

0.26.1 (2021-10-28)

0.26.0 (2021-10-27)

⚠ BREAKING CHANGES

  • Setting qp2p::Config::keep_alive_interval = None will now disable keep-alives, rather than falling back to the default interval.

Features

  • support disabling keep-alives (dca54b3)

0.25.0 (2021-10-27)

⚠ BREAKING CHANGES

    • The ConnId trait has been removed.
  • Endpoint, IncomingConnections, Connection, and ConnectionIncoming no longer have a generic type parameter.
  • Endpoint::disconnect_from, Endpoint::get_connection_by_addr, and Endpoint::get_connection_by_id have been removed.
  • Connection::id has been removed.
  • Endpoint::new, Endpoint::connect_to, and Endpoint::connect_to_any now return (Connection, ConnectionIncoming), rather than (Connection, Option<ConnectionIncoming>).
  • Connection::open_bi no longer takes a priority argument. This can be set with SendStream::set_priority instead.
  • Semantically, all calls to Endpoint::connect_to and Endpoint::connect_to_any will establish and return new connections. There is no connection reuse.

Bug Fixes

  • drop an unused field from tests::quinn::Peer (7b0fa53)

  • fix incorrect log message (1a9261b)

  • remove connection pooling (fd19094)

0.24.0 (2021-10-20)

⚠ BREAKING CHANGES

  • IncomingMessages has been removed, and is no longer returned by Endpoint::new or Endpoint::new_client.

Bug Fixes

  • don't retry sending on connection loss (578936d)

  • remove IncomingMessages (c0a6a20)

0.23.0 (2021-10-15)

⚠ BREAKING CHANGES

  • DisconnectionEvents has been removed, and is no longer returned from Endpoint::new or Endpoint::new_client.

Bug Fixes

  • fix an unread field lint on nightly (6ebab02)

  • remove DisconnectionEvents (93e70a7)

0.22.2 (2021-10-13)

Features

  • add a counter for opened connections to Endpoint (c6a9a42)

0.22.1 (2021-09-27)

0.22.0 (2021-09-27)

⚠ BREAKING CHANGES

  • IncomingConnections::next now returns Option<Connection<I>>. IncomingMessages::next now returns Option<(Connection<I>, Bytes)>.

  • Endpoint::try_send_message and Endpoint::try_send_message_with have been removed. Use Endpoint::get_connection_by_addr and Connection::send_* instead.

  • remove Endpoint::try_send_* (3e1bff4)

  • yield Connections from Incoming* streams (60dd829)

0.21.0 (2021-09-24)

⚠ BREAKING CHANGES

  • Endpoint::send_message and Endpoint::send_message_with have been removed. Use Endpoint::connect_to in combination with Connection::send or Connection::send_with instead.

  • The Endpoint::send_message_with and Endpoint::try_send_message_with methods now take retries as an Option<&RetryConfig>, rather than Option<RetryConfig>.

  • move Endpoint::send_* to Connection (0f95b8a)

  • use &RetryConfig for retry overrides (70835ed)

0.20.0 (2021-09-21)

⚠ BREAKING CHANGES

  • Endpoint::get_connection_id and Endpoint::get_socket_addr_by_id have been removed. Endpoint::get_connection_by_addr and Endpoint::get_connection_by_id can be used instead to get a Connection, from which the id or remote_address can be retrieved.
  • Endpoint::new, Endpoint::connect_to, and Endpoint::connect_to_any now use Connection<I> instead of SocketAddr in their return type.

Features

  • return Connection from Endpoint::connect_* (9ce6947)

  • replace Endpoint addr/id getters (c2ab8a1)

0.19.0 (2021-09-14)

⚠ BREAKING CHANGES

  • retries: Removal of Eq and PartialEq derivations on config.

Features

  • config: nest retry config (edc5493)
  • retries: extend send msg api with retry cfg (af6fe59)

0.18.0 (2021-09-10)

⚠ BREAKING CHANGES

  • The port_forward field on Config is only present with the igd feature enabled (default).

  • The no-igd feature has been removed.

  • Make Config::port_forward depend on igd feature (ce3e602)

  • Remove no-igd feature (b5e2938)

0.17.4 (2021-09-07)

Bug Fixes

  • Don't report an error on benign end of stream (d1b4e22)

0.17.3 (2021-09-02)

0.17.2 (2021-09-01)

Features

  • derive debug for public channels (4d262de)

0.17.1 (2021-08-31)

Bug Fixes

  • Correctly mark UpnpError source (728d6b4)

0.17.0 (2021-08-31)

⚠ BREAKING CHANGES

  • The signature of Endpoint::new_client has changed to return a tuple of (Endpoint, IncomingMessages, DisconnectionEvents) rather than just the Endpoint.

Features

  • Client support for incoming messages and disconnections (cb945a9)

0.16.0 (2021-08-27)

⚠ BREAKING CHANGES

  • The Endpoint::bootstrap_nodes method has been removed since it is no longer set.
  • The Error type has been removed.
  • Endpoint::try_send_message now returns Result<(), Option<SendError>> rather than Result<(), Error>. The Error::MissingConnection variant has been removed.
  • Endpoint::is_reachable now returns Result<(), RpcError>, rather than Result<(), Error>.
  • The Result alias has been removed. It can be replaced by std::result::Result<T, qp2p::Error>.
  • The QuicP2p type has been removed. Use Endpoint::new or Endpoint::new_client instead. The BootstrapFailure, EmptyBootstrapNodesList, Io, Endpoint, NoEchoServerEndpointDefined, EchoServiceFailure, CannotAssignPort, IncorrectPublicAddress, and UnresolvedPublicIp Error variants have been removed.
  • The IgdAddPort, IgdRenewPort, IgdSearch, and IgdNotSupported variants have been removed from Error. These variants would never have been returned, but may be referenced in matches against Error values.
  • The RecvNextError and UnexpectedMessageType types have been removed. RecvError is used where RecvNextError was used previously.
  • The SendError::TooLong variant has been removed. The same condition (attempting to send a message longer than u32::MAX bytes) will now return SendError::Serialization.
  • RecvStream::next now returns RecvNextError as the error type. The following Error variants have been removed:
  • Error::Serialisation (this is now fully covered by SendError and RecvError).
  • Error::InvalidMsgFlag (this case is now covered by RecvError::Serialization).
  • Error::StreamRead (this is now covered by RecvError).
  • Error::EmptyResponse (this case is now covered by RecvError::Serialization).
  • Error::UnexpectedMessageType (this case is now covered by `ReadNextError::UnexpectedMessageType).

Finally, a Recv variant has been added to Error.

  • The following APIs had their error type changed from Error to SendError:
  • SendStream::send_user_msg
  • SendStream::send
  • SendStream::finish
  • Endpoint::send_message

Additionally, the StreamWrite and MaxLengthExceeded variants have been removed from Error, and a Send variant has been added.

  • SendStream::send is no longer public. Error::UnexpectedMessageType now contains a simple error struct.
  • Endpoint::connect_to and Endpoint::open_bidirectional_stream now use ConnectionError, rather than Error, for error results.
  • Endpoint::disconnect_from now returns ().
    • The Error::UnknownStream variant has been removed.
  • SendStream::set_priority is now infallible and returns ().
  • SendStream::priority has been removed.
  • The Error::Connect and Error::ConnectionClosed variants have been removed. Several additional variants have been added to ConnectionError.
  • Endpoint::connect_to_any now returns Option<SocketAddr> instead of Result<SocketAddr>.
  • The ConnId::generate method now returns Self, and doesn't allow for errors. The Error::ConnectionIdGeneration variant has been removed.
  • Endpoint::socket_addr has been renamed to public_addr.
  • The Error::UnexpectedError variant has been removed.
  • The Error::DisconnectionNotification and Error::Configuration variants have been removed.
  • There are several breaking changes:
  • QuicP2p::from_config now returns Result<Self, ConfigError>.
  • The Error::CertificateParse variant has been removed.
  • The Error::CertificatePkParse variant has been removed.
  • The Error::CertificateGen variant has been removed.
  • The Error::Tls variant has been removed.
  • The Error::Base64Decode variant has been removed.
  • The duration fields in config have all changed:
  • idle_timeout_msec is renamed idle_timeout and is now an Option<Duration>.
  • keep_alive_interval_msec is renamed keep_alive_interval and is now an Option<Duration>.
  • upnp_lease_duration is now an Option<Duration>.
  • retry_duration_msec is renamed min_retry_duration and is now an Option<Duration>.
  • QuicP2p::from_config now takes a Config argument, rather than Option<Config>. Config::default() (or Option::unwrap_or_default) should be used instead.
  • Config::hard_coded_contacts and Config::bootstrap_cache_dir have been removed. Additionally, QuicP2p::with_config no longer takes bootstrap_nodes – these should instead be passed to QuicP2p::bootstrap. Finally, the Error::InvalidPath and Error::UserHomeDir variants have been removed.
  • Config::local_ip and Config::local_port have been removed. QuicP2p::bootstrap and QuicP2p::new_endpoint now require a local address to bind to. The Error::UnspecifiedLocalIp variant has been removed.
  • This is a breaking behavioural change. It is now up to the caller if they want to retry with a different port.
  • Config::max_msg_size_allowed has been removed.

Features

  • Add Endpoint::connect_to_any (59d0b5e)
  • Add Endpoint::new_client constructor (176d025)
  • Add RecvNextError for receive-specific errors (7e6e4a9)
  • Add SendError for send-specific errors (73c6501)
  • Add public Endpoint::new constructor (c448df2)

Bug Fixes

  • Add missing re-export for TransportErrorCode (8cf4f88)

  • Don't use connection pool in Endpoint::is_reachable (8a7260b)

  • Fix WireMsg visibility (33e9b3b)

  • Make connection deduplicator handle cancellations (a0404ac)

  • Delete SerializableCertificate (4bbcd29)

  • Make Config in QuicP2p::from_config non-optional (19b3795)

  • Make ConnId::generate infallible (ea089ac)

  • Make Endpoint::disconnect_from infallible (9eb947f)

  • Merge 'connect' and 'close' errors with ConnectionError (9aae2e3)

  • Move local address from config to QuicP2p::bootstrap (de9763d)

  • Refactor WireMsg::read_from_stream to avoid logic error (047d071)

  • Remove BootstrapCache and hard-coded contacts (df3fef8)

  • Remove Endpoint::bootstrap_nodes (c399bca)

  • Remove Error::UnknownStream variant (2386486)

  • Remove Error (5608f27)

  • Remove QuicP2p (44d964c)

  • Remove Result alias (e528134)

  • Remove random port fallback (9b1612a)

  • Remove unused Config::max_msg_size_allowed (44d750f)

  • Remove unused Error variants (3b8174a)

  • Rename Endpoint::socket_addr to public_addr (91d8457)

  • Return Option from Endpoint::connect_to_any (5d374fa)

  • Return RpcError from Endpoint::is_reachable (674ad2d)

  • Return SendError in Endpoint::try_send_message (c43855b)

  • Separate ConfigError from Error (e837aca)

  • Treat unexpected messages as serialization errors (e0695c3)

  • Use ConnectionError when possible (db74509)

  • Use Duration in config and centralise defaults (86f886b)

  • Use SerializationError for too long messages (5bf79c1)

  • Use a separate type for IGD errors (d9413de)

0.15.3 (2021-08-24)

0.15.2 (2021-08-11)

Features

  • priority: allow setting priority of a stream (a0cf893)

0.15.1 (2021-08-11)

0.15.0 (2021-08-11)

⚠ BREAKING CHANGES

  • The Error::QuinnConnectionClosed variant has been renamed Error::ConnectionClosed and now contains closure information. The Error::Connection variant has been renamed Error::ConnectionError, and now contains a ConnectionError. quinn::ConnectionError is no longer re-exported.

  • Separate connection close from errors (4d3d4eb)

0.14.1 (2021-08-11)

0.14.0 (2021-08-03)

⚠ BREAKING CHANGES

  • quinn: config change

Bug Fixes

  • ci: ignore quinn test on CI (5f7b9f0)
  • clippy: update to use latest version of rust (18d48c4)
  • disconnections: remove connection from pool before signalling disconnection event (d45204c)
  • quinn: disable stateless retry in quinn config (0f5df36)

0.13.0 (2021-08-03)

⚠ BREAKING CHANGES

  • id: introduces generic type to Qp2p and Endpoint

Features

  • id: keep a track of connections using a connection ID within qp2p (10c8ea0)

Bug Fixes

  • api: rename type parameter after rebase (8b2ad02)

0.12.11 (2021-07-28)

Features

  • Make total backoff duration configurable (75d26ea)
  • retry connection attempts for new connections too (fef624d)
  • use backoff w/ jitter for retries (fec5d07)

0.12.10 (2021-07-15)

Features

  • Add config option for retry interval (6bba5ec)
  • retry on connect, retry on send (94bfb8b)

0.12.9 (2021-07-13)

Bug Fixes

0.12.8 (2021-07-13)

0.12.7 (2021-07-12)

Features

  • use tracing for logging (d65285b)

0.12.6 (2021-07-02)

Bug Fixes

  • igd: Fix the condition for terminating the IGD renewal loop (295626c)

0.12.5 (2021-07-01)

Features

  • error: add error variant when creating port binding fails (24b2bc5)

Bug Fixes

  • clippy: fix clippy issues (53de7a9)
  • igd: stop renewing port mapping after endpoint.close() is called (949b372)

0.12.4 (2021-06-24)

0.12.3 (2021-06-14)

0.12.2 (2021-06-14)

0.12.1 (2021-06-09)

Bug Fixes

  • avoid re-connect attempts on existing connection (3cde437)

0.12.0 (2021-06-07)

⚠ BREAKING CHANGES

  • refactor: updates some apis to be async

Features

  • refactor: remove unnecessary mutex (8066b18)

Bug Fixes

  • tests: minor test fixes (95ab0f7)

0.11.11 (2021-06-01)

0.11.10 (2021-05-25)

Features

  • api: create new try_send_message API and change send_message (1264246)

0.11.9 (2021-04-26)

Features

  • api: add public API to get an endpoint's list of bootstrap nodes (075c89e)
  • boostrap_cache: add API to replace contents of bootstrap cache (0684769)
  • endpoint: add functionality for re-boostrapping to the network (af6b54d)

0.11.8 (2021-04-13)

Features

  • api: add new api to check if endpoint is externally reachable (6305442)

Bug Fixes

  • igd: run igd even if echo service succeedes (b2a2971)

0.11.7 (2021-04-08)

Bug Fixes

  • boostrap: connect to peers concurrently when querying their echo service (bb6b7dd)

0.11.6 (2021-04-07)

Bug Fixes

  • bootstrap: fix stalled connections w/multiple bootstrap contacts (cd02b6a)

0.11.5 (2021-04-06)

Bug Fixes

  • endpoint_verification: add timeout for endpoint verification query (2fc7041)

0.11.4 (2021-04-05)

0.11.3 (2021-04-02)

Bug Fixes

  • manual-port-forwarding: use the existing endpoint to validate (56e6626)

0.11.2 (2021-03-29)

Bug Fixes

  • clippy: rename error variant to fix clippy issue with latest rust (c2d0227)
  • config: remove duplicate options for config params (b40f2ef)
  • remove duplicate short option (30fd110)

0.11.1 (2021-03-28)

Features

  • add peer address to connection log messages (1130207)

0.11.0 (2021-03-25)

⚠ BREAKING CHANGES

  • header: this changes the data_len field in MsgHeader from usize to u32

  • header: Allow compilation on 32 bit architectures (7c39399)

0.10.1 (2021-03-11)

Bug Fixes

  • read multiple messages from a single stream (949fc4b)

0.10.0 (2021-03-05)

⚠ BREAKING CHANGES

  • 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)

Features

  • igd: expose a feature to completely disable IGD support, downgrading igd crate to v0.11.1 (0873b29)

Bug Fixes

  • echo_service: dont contact echo_service if IGD was successful (8899436)

0.9.21 (2021-02-19)

Bug Fixes

  • config: do not use the IGD gateway to realize local IP address (62dbcc4)

0.9.20 (2021-02-19)

Bug Fixes

  • use loopback even when IGD finds local ip, if network is loopback (95f00b3)

0.9.19 (2021-02-18)

Bug Fixes

  • logs: dont log expected messages at error level (12b2c5a)

0.9.18 (2021-02-16)

0.9.17 (2021-02-15)

Bug Fixes

  • use hard coded contacts to realize local IP address (3741833)

0.9.16 (2021-02-12)

Features

  • 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)

Bug Fixes

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

Features

  • api: add more error variants and use them instead of (bb56857)

Bug Fixes

  • example: remove panics from the example (20dfe02)

0.9.3 (2020-12-03)

Bug Fixes

  • proper error on empty bootstrap (db61592)

0.9.2 (2020-11-24)

0.9.1 (2020-11-19)

Bug Fixes

  • do not initialize logger in QuicP2p constructor (4952639)

0.9.0 (2020-11-19)

⚠ BREAKING CHANGES

  • QuicP2p::bootstrap return type changed from Result<(Endpoint, Connection)> to Result<(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 to open_bi (same as in quinn)
    • Connection::send renamed to send_bi for consistency
    • Endpoint::listen no longer returns Result

Features

  • add Endpoint::close (2cedb77)
  • do not close quinn::Connection on Connection 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)

Features

  • 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)

Bug Fixes

  • 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)

Features

  • 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)

Bug Fixes

  • 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

[0.7.0]

  • Standardize cargo dependency versioning
  • Return an error when IGD fails

[0.6.2]

  • Fix clippy errors in feature-gated code
  • Fix bug in get_connection_info with upnp enabled.

[0.6.1]

  • Skip port forwarding if quic-p2p is running on the loopback address.

[0.6.0]

  • 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.

[0.5.0]

  • Update quinn to 0.6.0
  • Update rustls to 0.17.0

[0.4.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 to bootstrap_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.

[0.3.0]

  • Expose Dirs and OverRide structs publicly.
  • Add boostrap_cache_dir field to the config to specify a custom path for the bootstrap cache.

[0.2.1]

  • Fix incorrect deserialisation logic in WireMsg
  • Fix fmt::Display for Event and WireMsg

[0.2.0]

  • 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

[0.1.1]

  • 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).