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)
- move incoming conn handling off thread to not block (d1624cb)
0.36.1 (2023-02-20)
0.36.0 (2023-02-20)
- consumes receiver on read.
- limit async during read/write for greater consistency (c466644)
0.35.1 (2023-01-25)
0.35.0 (2023-01-20)
- ease transition of API changes
- remove Config
- remove bootstrap and reachability
- remove bootstrapping; external IP/port
-
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)
- implement builder for Endpoint (e34471a)
0.34.4 (2023-01-11)
- 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)
- generate random Bytes faster (31b63ac)
0.34.0 (2022-12-19)
-
conn: the
Connection::send_uni
public API has been removed since it has the same implementation as theConnection::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)
- Nothing really, but the release process for non breaking changes is currently broken
- Arbitrary breaking change to force release (5164fff)
0.32.0 (2022-12-12)
- 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.
- 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)
-
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)
- 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.
- 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)
-
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)
- 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.
- 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)
-
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)
- 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.
- 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)
- 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)
- 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.
- config: allow to set the max number of concurrent bi-streams (a75c728)
- stream: include connection id information as part of the StreamId (8acd490)
- 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)
- 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.
- stream: include connection id information as part of the StreamId (8acd490)
- 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)
- 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.
- 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)
- 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.
- api: don't treat any type of errors as benign (ff9c805)
0.31.1 (2022-11-28)
0.31.0 (2022-11-26)
-
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)
- api: exposing SendStream/RecvStream id() public APIs which return StreamId (0bf7523)
0.30.0 (2022-09-05)
- 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
- take three Bytes for each send (dcc35e5)
0.29.0 (2022-09-05)
- 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.
- make Connection.id unique across all peers (ae102be)
0.28.7 (2022-06-07)
0.28.6 (2022-04-25)
- add Stream when getting next message from connection (cd3b255)
0.28.5 (2022-03-01)
0.28.4 (2022-03-01)
- p2p_node: 'polo' reply processing (aacedf4)
0.28.3 (2022-02-23)
0.28.2 (2022-02-13)
- add 'structopt' feature flag (7150c14)
0.28.1 (2022-02-13)
- add IncomingConnections::try_recv() (a7562e9)
0.28.0 (2022-01-31)
- moving to quinn 0.8
- moving to quinn 0.8 (a9c0bb2)
0.27.4 (2022-01-17)
0.27.3 (2022-01-11)
- add optional reason for closing a connection (8ba42b5)
0.27.2 (2021-11-04)
- implement
Debug
forConnection
(966567e)
0.27.1 (2021-11-03)
0.27.0 (2021-10-28)
- The
qp2p::config::DEFAULT_KEEP_ALIVE_INTERVAL
constant has been removed, and the default value forkeep_alive_interval
set forConfig::default()
is nowNone
, meaning keep-alives are disabled by default.
- add
Connection::id
to get a stable ID for a connection (a86e558)
0.26.1 (2021-10-28)
0.26.0 (2021-10-27)
- Setting
qp2p::Config::keep_alive_interval = None
will now disable keep-alives, rather than falling back to the default interval.
- support disabling keep-alives (dca54b3)
0.25.0 (2021-10-27)
-
- The
ConnId
trait has been removed.
- The
Endpoint
,IncomingConnections
,Connection
, andConnectionIncoming
no longer have a generic type parameter.Endpoint::disconnect_from
,Endpoint::get_connection_by_addr
, andEndpoint::get_connection_by_id
have been removed.Connection::id
has been removed.Endpoint::new
,Endpoint::connect_to
, andEndpoint::connect_to_any
now return(Connection, ConnectionIncoming)
, rather than(Connection, Option<ConnectionIncoming>)
.Connection::open_bi
no longer takes apriority
argument. This can be set withSendStream::set_priority
instead.- Semantically, all calls to
Endpoint::connect_to
andEndpoint::connect_to_any
will establish and return new connections. There is no connection reuse.
-
drop an unused field from
tests::quinn::Peer
(7b0fa53) -
fix incorrect log message (1a9261b)
-
remove connection pooling (fd19094)
0.24.0 (2021-10-20)
IncomingMessages
has been removed, and is no longer returned byEndpoint::new
orEndpoint::new_client
.
0.23.0 (2021-10-15)
DisconnectionEvents
has been removed, and is no longer returned fromEndpoint::new
orEndpoint::new_client
.
0.22.2 (2021-10-13)
- add a counter for opened connections to
Endpoint
(c6a9a42)
0.22.1 (2021-09-27)
0.22.0 (2021-09-27)
-
IncomingConnections::next
now returnsOption<Connection<I>>
.IncomingMessages::next
now returnsOption<(Connection<I>, Bytes)>
. -
Endpoint::try_send_message
andEndpoint::try_send_message_with
have been removed. UseEndpoint::get_connection_by_addr
andConnection::send_*
instead. -
remove
Endpoint::try_send_*
(3e1bff4) -
yield
Connection
s fromIncoming*
streams (60dd829)
0.21.0 (2021-09-24)
-
Endpoint::send_message
andEndpoint::send_message_with
have been removed. UseEndpoint::connect_to
in combination withConnection::send
orConnection::send_with
instead. -
The
Endpoint::send_message_with
andEndpoint::try_send_message_with
methods now takeretries
as anOption<&RetryConfig>
, rather thanOption<RetryConfig>
. -
move
Endpoint::send_*
toConnection
(0f95b8a) -
use
&RetryConfig
for retry overrides (70835ed)
0.20.0 (2021-09-21)
Endpoint::get_connection_id
andEndpoint::get_socket_addr_by_id
have been removed.Endpoint::get_connection_by_addr
andEndpoint::get_connection_by_id
can be used instead to get aConnection
, from which theid
orremote_address
can be retrieved.Endpoint::new
,Endpoint::connect_to
, andEndpoint::connect_to_any
now useConnection<I>
instead ofSocketAddr
in their return type.
0.19.0 (2021-09-14)
- retries: Removal of Eq and PartialEq derivations on config.
0.18.0 (2021-09-10)
-
The
port_forward
field onConfig
is only present with theigd
feature enabled (default). -
The
no-igd
feature has been removed. -
Make
Config::port_forward
depend onigd
feature (ce3e602) -
Remove
no-igd
feature (b5e2938)
0.17.4 (2021-09-07)
- Don't report an error on benign end of stream (d1b4e22)
0.17.3 (2021-09-02)
0.17.2 (2021-09-01)
- derive debug for public channels (4d262de)
0.17.1 (2021-08-31)
- Correctly mark
UpnpError
source (728d6b4)
0.17.0 (2021-08-31)
- The signature of
Endpoint::new_client
has changed to return a tuple of(Endpoint, IncomingMessages, DisconnectionEvents)
rather than just theEndpoint
.
- Client support for incoming messages and disconnections (cb945a9)
0.16.0 (2021-08-27)
- 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 returnsResult<(), Option<SendError>>
rather thanResult<(), Error>
. TheError::MissingConnection
variant has been removed.Endpoint::is_reachable
now returnsResult<(), RpcError>
, rather thanResult<(), Error>
.- The
Result
alias has been removed. It can be replaced bystd::result::Result<T, qp2p::Error>
. - The
QuicP2p
type has been removed. UseEndpoint::new
orEndpoint::new_client
instead. TheBootstrapFailure
,EmptyBootstrapNodesList
,Io
,Endpoint
,NoEchoServerEndpointDefined
,EchoServiceFailure
,CannotAssignPort
,IncorrectPublicAddress
, andUnresolvedPublicIp
Error
variants have been removed. - The
IgdAddPort
,IgdRenewPort
,IgdSearch
, andIgdNotSupported
variants have been removed fromError
. These variants would never have been returned, but may be referenced in matches againstError
values. - The
RecvNextError
andUnexpectedMessageType
types have been removed.RecvError
is used whereRecvNextError
was used previously. - The
SendError::TooLong
variant has been removed. The same condition (attempting to send a message longer thanu32::MAX
bytes) will now returnSendError::Serialization
. RecvStream::next
now returnsRecvNextError
as the error type. The followingError
variants have been removed:
Error::Serialisation
(this is now fully covered bySendError
andRecvError
).Error::InvalidMsgFlag
(this case is now covered byRecvError::Serialization
).Error::StreamRead
(this is now covered byRecvError
).Error::EmptyResponse
(this case is now covered byRecvError::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
toSendError
:
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
andEndpoint::open_bidirectional_stream
now useConnectionError
, rather thanError
, for error results.Endpoint::disconnect_from
now returns()
.-
- The
Error::UnknownStream
variant has been removed.
- The
SendStream::set_priority
is now infallible and returns()
.SendStream::priority
has been removed.
- The
Error::Connect
andError::ConnectionClosed
variants have been removed. Several additional variants have been added toConnectionError
. Endpoint::connect_to_any
now returnsOption<SocketAddr>
instead ofResult<SocketAddr>
.- The
ConnId::generate
method now returnsSelf
, and doesn't allow for errors. TheError::ConnectionIdGeneration
variant has been removed. Endpoint::socket_addr
has been renamed topublic_addr
.- The
Error::UnexpectedError
variant has been removed. - The
Error::DisconnectionNotification
andError::Configuration
variants have been removed. - There are several breaking changes:
QuicP2p::from_config
now returnsResult<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 renamedidle_timeout
and is now anOption<Duration>
.keep_alive_interval_msec
is renamedkeep_alive_interval
and is now anOption<Duration>
.upnp_lease_duration
is now anOption<Duration>
.retry_duration_msec
is renamedmin_retry_duration
and is now anOption<Duration>
.
QuicP2p::from_config
now takes aConfig
argument, rather thanOption<Config>
.Config::default()
(orOption::unwrap_or_default
) should be used instead.Config::hard_coded_contacts
andConfig::bootstrap_cache_dir
have been removed. Additionally,QuicP2p::with_config
no longer takesbootstrap_nodes
– these should instead be passed toQuicP2p::bootstrap
. Finally, theError::InvalidPath
andError::UserHomeDir
variants have been removed.Config::local_ip
andConfig::local_port
have been removed.QuicP2p::bootstrap
andQuicP2p::new_endpoint
now require a local address to bind to. TheError::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.
- 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)
-
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
inQuicP2p::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
topublic_addr
(91d8457) -
Return
Option
fromEndpoint::connect_to_any
(5d374fa) -
Return
RpcError
fromEndpoint::is_reachable
(674ad2d) -
Return
SendError
inEndpoint::try_send_message
(c43855b) -
Separate
ConfigError
fromError
(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)
- priority: allow setting priority of a stream (a0cf893)
0.15.1 (2021-08-11)
0.15.0 (2021-08-11)
-
The
Error::QuinnConnectionClosed
variant has been renamedError::ConnectionClosed
and now contains closure information. TheError::Connection
variant has been renamedError::ConnectionError
, and now contains aConnectionError
.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)
- quinn: config change
- 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)
- id: introduces generic type to Qp2p and Endpoint
- id: keep a track of connections using a connection ID within qp2p (10c8ea0)
- api: rename type parameter after rebase (8b2ad02)
0.12.11 (2021-07-28)
- 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)
0.12.9 (2021-07-13)
- increase channel size (fa581ae)
0.12.8 (2021-07-13)
0.12.7 (2021-07-12)
- use tracing for logging (d65285b)
0.12.6 (2021-07-02)
- igd: Fix the condition for terminating the IGD renewal loop (295626c)
0.12.5 (2021-07-01)
- error: add error variant when creating port binding fails (24b2bc5)
- 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)
- avoid re-connect attempts on existing connection (3cde437)
0.12.0 (2021-06-07)
- refactor: updates some apis to be async
- refactor: remove unnecessary mutex (8066b18)
- tests: minor test fixes (95ab0f7)
0.11.11 (2021-06-01)
0.11.10 (2021-05-25)
- api: create new try_send_message API and change send_message (1264246)
0.11.9 (2021-04-26)
- 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)
- api: add new api to check if endpoint is externally reachable (6305442)
- igd: run igd even if echo service succeedes (b2a2971)
0.11.7 (2021-04-08)
- boostrap: connect to peers concurrently when querying their echo service (bb6b7dd)
0.11.6 (2021-04-07)
- bootstrap: fix stalled connections w/multiple bootstrap contacts (cd02b6a)
0.11.5 (2021-04-06)
- endpoint_verification: add timeout for endpoint verification query (2fc7041)
0.11.4 (2021-04-05)
0.11.3 (2021-04-02)
- manual-port-forwarding: use the existing endpoint to validate (56e6626)
0.11.2 (2021-03-29)
- 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)
- add peer address to connection log messages (1130207)
0.11.0 (2021-03-25)
-
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)
- read multiple messages from a single stream (949fc4b)
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
).