All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Timeout changed to 5 seconds.
- Relay address change processed before message.
- Add ability to change relay node on a connection.
- Switched to using
Set
for banned IPs.
- Add IP banning methods in the ConnectionMultiplexer class.
- Check that an incoming packet is a SYN packet before creating a new connection. Prevents a connect/disconnect loop in some error cases.
- Add an optional encryption layer that uses
pynacl
to deliver baseline confidentiality. To take advantage of the new feature, just useCrypto-
classes instead of the casual ones. The cryptographic keys generated are meant to be used only during a single connection, for forward secrecy. However, one can also force usage of a specific private key; see the constructor ofCryptoConnection
for more details.
- Support for OSes other than Linux is currently limited because of
pynacl
's restricted availability. - Update and clarify specification of sequence numbers.
- Minor fixes affecting docstrings and memory usage.
- Improved packaging.
- Add protobuf specification and skeleton class.
Connection
now has anunregister
method that simplifies detaching the instance from the protocol. Note: The said method is not automatically invoked on connection shutdown.
- Replace JSON (de)serialization with protobuf (de)serialization; reap substantial speed boost.
- Support for Python 3 is dropped until protobuf supports it too.
- packet.Packet constructor signature is no longer suitable for obtaining instances;
use the new factory methods (
from_bytes
,from_data
).
- Corrected typos in dependency specification.
- More thorough unit tests.
- Simple benchmarks / functional tests.
- Switched to a 3-state model for simplicity. The
INITIAL
state was merged withCONNECTING
and theHALF-CONNECTED
state was merged withCONNECTED
. - Slightly lowered the
PACKET_TIMEOUT
; significantly loweredBARE_ACK_TIMEOUT
, it is almost instantaneous.
- No longer processing duplicate packets.
- Handler no longer receives out-of-order messages if packets are missed.
- Created a changelog to document changes.