Skip to content

Latest commit

 

History

History
747 lines (379 loc) · 15.2 KB

CHANGES.md

File metadata and controls

747 lines (379 loc) · 15.2 KB

Changes

[4.4.0] - 2024-11-10

  • Check service readiness once per decoded item

  • Run un-readiness check in separate task

[4.3.1] - 2024-11-05

  • Do not rely on not_ready(), always check service readiness

[4.3.0] - 2024-11-04

  • Use updated Service trait

[4.2.1] - 2024-11-01

  • Better rediness error handling

[4.2.0] - 2024-10-31

  • Call control service on readiness error

[4.1.1] - 2024-10-15

  • Disconnect on error from service readiness check

[4.1.0] - 2024-10-10

  • Do not check readiness for call

  • Handle service readiness errors during shutdown

[4.0.0] - 2024-10-05

  • Middlewares support for mqtt server

[3.1.0] - 2024-08-23

  • Derive Hash for the QoS enum #175

[3.0.0] - 2024-05-28

  • Switch to individual ntex_* crates

  • Use ntex-service 3.0

[2.0.2] - 2024-05-15

  • Remove non_exhaustive marker

[2.0.1] - 2024-05-14

  • Better naming

[2.0.0] - 2024-05-1x

  • Mark Control type as non exhaustive

  • Rename ControlMessage to Control

  • Remove protocol variant services

  • Disable keep-alive timer if not configured

  • Add write back-pressure to io dispatcher

[1.1.0] - 2024-03-07

  • Use MqttService::connect_timeout() only for reading protocol version

[1.0.0] - 2024-01-09

  • Release

[1.0.0-b.0] - 2024-01-07

  • Use "async fn" in trait for Service definition

[0.12.16] - 2023-12-25

  • Handle QoS 0 messages when the client disconnect #164

  • Use io tags

[0.12.15] - 2023-12-10

  • Fix KEEP-ALIVE timer handling

[0.12.14] - 2023-12-03

  • Optimize KEEP-ALIVE timer

[0.12.13] - 2023-11-29

  • Refactor io timers

[0.12.12] - 2023-11-25

  • Fix keep-alive timeout handling

[0.12.11] - 2023-11-23

  • Refactor slow frame timeout handling

[0.12.10] - 2023-11-21

  • Remove slow frame timer if service is not ready

[0.12.9] - 2023-11-17

  • Do not process data in read buffer after disconnect

[0.12.8] - 2023-11-12

  • Use new ntex-io apis

[0.12.7] - 2023-11-04

  • Fix v5::Subscribe/Unsubscribe packet properties encoding

[0.12.6] - 2023-10-31

  • Send server ConnectAck without io flushing

[0.12.5] - 2023-10-23

  • Fix typo

[0.12.4] - 2023-10-03

  • Fix nested error handling for control service

[0.12.3] - 2023-10-01

  • Fix Publish and Control error type

[0.12.2] - 2023-09-25

  • Drop unneeded HandshakeError::Server

[0.12.1] - 2023-09-25

  • Change handshake timeout behavior (renamed to connect timeout). Timeout handles slow client's Control frame.

[0.12.0] - 2023-09-18

  • Refactor MqttError type

[0.11.4] - 2023-08-10

  • Update ntex deps

[0.11.3] - 2023-06-26

  • Update BufferService usage

[0.11.2] - 2023-06-23

  • Fix client connector usage, fixes lifetime constraint

[0.11.1] - 2023-06-23

  • PipelineCall is static

[0.11.0] - 2023-06-22

  • Release v0.11.0

[0.11.0-beta.3] - 2023-06-21

  • Use ContainerCall, remove unsafe

[0.11.0-beta.2] - 2023-06-19

  • Fix Dispatcher impl, poll Container instead of S

[0.11.0-beta.1] - 2023-06-19

  • Use ServiceCtx instead of Ctx

[0.11.0-beta.0] - 2023-06-17

  • Migrate to ntex-0.7

[0.10.4] - 2023-05-12

  • Expose size of prepared packet

  • Return packet and packet size from decoder

[0.10.3] - 2023-04-06

  • Adds non-blocking qos1 publish sender

  • Adds validation of topic filters in SUBSCRIBE and UNSUBSCRIBE (#136)

[0.10.2] - 2023-03-15

  • Sink readiness depends on write back-pressure

[0.10.1] - 2023-01-31

  • Fix missing ready wakes up from InFlightService

  • Register Dispatcher waker when service is not ready

[0.10.0] - 2023-01-24

  • Change ConnectAck session_expiry_interval_secs type to Option

  • Introduce EncodeError::OverMaxPacketSize to differentiate failure to encode due to going over peer's Maximum packet size

[0.10.0-beta.3] - 2023-01-20

  • Revert builders refactoring

[0.10.0-beta.2] - 2023-01-20

  • Fix dispatcher leak during stop process

  • Refactor client error

  • Drop derive_more dep

  • Exposed QoS at crate's level, disbanded types module

  • Added v5::Sink::force_close()

  • Added v5::Client::into_inner()

  • packet properties with clear defaults per spec are represented without Option, use default when absent; for example, Session Expiry Interval, Maximum QoS, Retain Available, etc. in Connect and ConnectAck

  • server-level settings for Maximum QoS, Topic Alias Maximum and Receive Maximum are now applied at ConnectAck construction. Any changes to ConnectAck in Handshake service are honored on connection level.

  • Setting RETAIN on PUBLISH when CONNACK stated Retain Available: 0 triggers Protocol Error

  • Setting Subscription Identifier on SUBSCRIBE when CONNACK stated Subscription Identifier Available: 0 triggers Protocol Error

  • Topic name with + or # in it will trigger Protocol Error

  • Protocol violation errors are now grouped under opaque ProtocolViolationError

  • Removed Client re-export under v3 module. Use v3::client::Client instead.

[0.10.0-beta.1] - 2023-01-04

  • Migrate to ntex-0.6

  • Use thiserror::Error for error definitions

[0.10.0-beta.0] - 2022-12-28

  • Migrate to ntex-service 1.0

[0.9.2] - 2022-12-16

  • v5: Fix topic alias handling #122

  • v3: Allow to change outgoing in-flight limit

  • v3/v5: Fix sink inflight messages handling after local codec error #123

[0.9.1] - 2022-11-17

  • v5: allow omitting properties length if it is 0 in packets without payload regardless of reason code or its presence.

[0.9.0] - 2022-11-01

  • Rename Level to TopicFilterLevel for better spec compliance

  • v5: Use correct reason code for MaxQosViolated error #117

[0.9.0-b.2] - 2022-10-28

  • v3/v5: MqttSink::ready() is not ready until CONNACK get sent to peer

[0.9.0-b.1] - 2022-10-17

  • Remove deprecated methods

[0.9.0-b.0] - 2022-10-10

  • Renamed Topic into TopicFilter, TopicError into TopicFilterError
  • Changes to topic filter validation: levels starting with $ are allowed at any level and are recognized as system only at first position
  • Changes to topic matching logic: when topic filter is matched against another topic filter via TopicFilter.match_filter(), left hand side topic filter must be strict superset of all topics allowed with topic filter on right hand side
  • Changes to topic matching logic: having +/# in the end of topic filter does not wrongly recover failed match on + level
  • Validation is now part of TopicFilter instantiation, e.g. it is impossible to create non-validated topic filter from set of Levels.
  • Level API is removed completely as level itself is not a valuable concept.

[0.8.11] - 2022-10-07

  • v3/v5: Allow to create PublishBuilder with predefined Publish packet

  • v3: Allow to specify max allowed qos for server publishes

  • v5: Check max qos violations in server dispatcher

[0.8.10] - 2022-09-25

  • Add .into_inner() client's helper for publish control message

[0.8.9] - 2022-09-16

  • v3: Send disconnect packet on sink close

  • v3: Treat disconnect packet as error on client side

[0.8.8] - 2022-08-22

  • Allow to get inner io stream and codec for negotiated clients

  • Remove inflight limit for client's control service

  • v3: Add Debug trait for client's ControlMessage

[0.8.7] - 2022-06-09

  • v5: Encoding missing will properties: will_delay_interval_sec, is_utf8_payload, message_expiry_interval, content_type, response_topic, correlation_data, user_properties

[0.8.6] - 2022-05-05

  • v5: Account for property type byte in property length when encoding Subscribe packet

  • v5: Add Router::finish() helper method, it converts router to service factory

  • v3/v3: Clearify session type for Router

[0.8.5] - 2022-04-20

  • v3: Make topic generic type for MqttSink::publish() method

  • v5: Correct receive max value for v5 connector when broker omits value #100

[0.8.4] - 2022-03-14

  • Add support in-flight messages size back-pressure

  • Refactor handshake timeout handling

  • Add serializer and deserializer derive (#89)

  • Correct spelling of SubscribeAckReason::SharedSubsriptionNotSupported and DisconnectReasonCode::SharedSubsriptionNotSupported (#93)

  • Removed PubAckReason::ReceiveMaximumExceeded as this error code is only valid for DISCONNECT packets (#95)

  • Update subs.rs example to use confirm instead of subscribe (#97)

[0.8.3] - 2022-01-10

  • Cleanup v3/v5 client connectors

[0.8.2] - 2022-01-04

  • Optimize compilation times

[0.8.1] - 2022-01-03

  • Cleanup MqttError types

[0.8.0] - 2021-12-30

  • Upgrade to ntex 0.5.0

[0.8.0-b.6] - 2021-12-30

  • Update to ntex-io 0.1.0-b.10

[0.8.0-b.5] - 2021-12-28

  • Shutdown io stream after failed handshake

[0.8.0-b.4] - 2021-12-27

  • Use IoBoxed for all server interfaces

[0.8.0-b.3] - 2021-12-27

  • Upgrade to ntex 0.5 b4

[0.8.0-b.2] - 2021-12-24

  • Upgrade to ntex-service 0.3.0

[0.8.0-b.1] - 2021-12-22

  • Better handling for io::Error

  • Upgrade to ntex 0.5.0-b.2

[0.8.0-b.0] - 2021-12-21

  • Upgrade to ntex 0.5

[0.7.7] - 2021-12-17

  • Wait for close control message and inner services on dispatcher shutdown #78

  • Use default keepalive from Connect packet. #75

[0.7.6] - 2021-12-02

  • Add memory pools support

[0.7.5] - 2021-11-04

  • v5: Use variable length byte to encode the subscription ID #73

[0.7.4] - 2021-10-29

  • Expose some control plane type constructors

[0.7.3] - 2021-10-20

  • Do not poll service for readiness if it failed before

[0.7.2] - 2021-10-01

  • Serialize control message handling

[0.7.1] - 2021-09-18

  • Allow to extract error from control message

[0.7.0] - 2021-09-17

  • Update ntex to 0.4

[0.7.0-b.10] - 2021-09-07

  • v3: add ControlMessage::Error and ControlMessage::ProtocolError

[0.7.0-b.9] - 2021-09-07

  • v5: add helper methods to client control publish message

[0.7.0-b.8] - 2021-08-28

  • use new ntex's timer api

[0.7.0-b.7] - 2021-08-16

  • v3: Boxed Packet::Connect to trim down Packet size
  • v5: Boxed Packet::Connect and Packet::ConnAck variants to trim down Packet size

[0.7.0-b.6] - 2021-07-28

  • v3/v5: Fixed nested with_queues calls in sink impl

[0.7.0-b.5] - 2021-07-15

  • v3/v5: PublishBuilder::send_at_least_once initiates publish synchronously

  • v3/v5: Publish::take_payload() replaces payload with empty bytes, returns existing

[0.7.0-b.4] - 2021-07-12

  • v3: avoid nested borrow_mut() calls in sink on puback mismatch

[0.7.0-b.3] - 2021-07-04

  • Re-export ClientRouter, SubscribeBuilder, UnsubscribeBuilder

[0.7.0-b.2] - 2021-06-30

  • v3: Remove special treatment for "?" in publish's topic

[0.7.0-b.1] - 2021-06-27

  • Upgrade to ntex-0.4

[0.6.9] - 2021-06-17

  • Use Handshake<Io> instead of codec::Connect for selector

[0.6.8] - 2021-06-17

  • Add coonditional mqtt server selector

[0.6.7] - 2021-05-17

  • Process unhandled data on disconnect #51

  • Fix for panic while parsing MQTT version #52

[0.6.6] - 2021-04-29

  • v5: Fix reason string encoding

  • v5: Allow to set reason and properties to SUBACK

[0.6.5] - 2021-04-03

  • v5: Add a packet() function to Subscribe and Unsubscribe

  • upgrade ntex, drop direct futures dependency

[0.6.4] - 2021-03-15

  • HandshakeAck::buffer_params() replaces individual methods for buffer sizes

[0.6.2] - 2021-03-04

  • Allow to override io buffer params

[0.6.1] - 2021-02-25

  • Cleanup dependencies

[0.6.0] - 2021-02-24

  • Upgrade to ntex v0.3

[0.5.0] - 2021-02-21

  • Upgrade to ntex v0.2

[0.5.0-b.5] - 2021-01-25

  • Upgrade to ntex v0.2-b.7

[0.5.0-b.4] - 2021-01-23

  • Use ntex v0.2-b.5 framed types

[0.5.0-b.3] - 2021-01-21

  • v5: Flush io stream before disconnect

[0.5.0-b.2] - 2021-01-20

  • v5: Restore set_properties sink method

[0.5.0-b.1] - 2021-01-19

  • Use ntex 0.2

[0.4.7] - 2021-01-13

  • v5: Add ping and disconnect support to default control service

[0.4.6] - 2021-01-12

  • Use pin-project-lite instead of pin-project

[0.4.5] - 2021-01-12

  • v5: Check publish service readiness error

  • io: Fix potential BorrowMut error in io dispatcher

[0.4.4] - 2021-01-09

  • Fix public re-exports

[0.4.3] - 2021-01-09

  • Fix out of bounds panic

[0.4.2] - 2021-01-05

  • Better read back-pressure support

[0.4.1] - 2021-01-04

  • Use ashash instead on fxhash

  • Drop unneeded InOrder service usage

[0.4.0] - 2021-01-03

  • Refactor io dispatcher

  • Rename Connect/ConnectAck to Handshake/HandshakeAck

[0.3.17] - 2020-11-04

  • v5: Allow to configure ConnectAck::max_qos value

[0.3.16] - 2020-10-28

  • Do not print publish payload in debug fmt

  • v5: Create topic handlers on firse use

[0.3.15] - 2020-10-20

  • v5: Handle "Request Problem Information" flag

[0.3.14] - 2020-10-07

  • v3: Fix borrow error in sink impl

[0.3.13] - 2020-10-07

  • Allow to set packet id for sink operations

[0.3.12] - 2020-10-05

  • v5: Add helper method Connect::fail_with()

  • v5: Better name SubscribeIter::confirm()

[0.3.11] - 2020-09-29

  • v5: Fix borrow error in MqttSink::close_with_reason()

[0.3.10] - 2020-09-22

  • Add async fn MqttSink::ready() returns when there is available client credit.

[0.3.9] - 2020-09-18

  • ControlMessage (v3/v5) and referenced types have #[derive(Debug)] added

  • Add Deref impl for Session<_>

  • v5: Do not override max_packet_size, receive_max and topic_alias_max

[0.3.8] - 2020-09-03

  • Fix packet ordering

  • Check default router service readiness

  • v5: Fix in/out bound frame size checks in codec

[0.3.7] - 2020-09-02

  • v5: Add PublishBuilder::set_properties() helper method

  • v3: Fix PublishBuilder methods

[0.3.6] - 2020-09-02

  • v5: Add Error::ack_with() helper method

[0.3.5] - 2020-08-31

  • v3: New client api

  • v5: New client api

  • v5: Send publish packet returns ack or publish error

[0.3.4] - 2020-08-14

  • v5: set max_qos to AtLeastOnce for server ConnectAck response

  • v5: do not set session_expiry_interval_secs prop

[0.3.3] - 2020-08-13

  • v5: do not convert publish error to ack for QoS0 packets

[0.3.2] - 2020-08-13

  • v5: Handle packet id in use for publish, subscribe and unsubscribe packets

  • v5: Handle 16 concurrent control service requests

  • v3: Handle packet id in use for subscribe and unsubscribe packets

  • v3: Handle 16 concurrent control service requests

  • Removed ProtocolError::DuplicatedPacketId error

[0.3.1] - 2020-08-12

  • v5: Fix max inflight check

[0.3.0] - 2020-08-12

  • v5: Add topic aliases support

  • v5: Forward publish errors to control service

  • Move keep-alive timeout to Framed dispatcher

  • Rename PublishBuilder::at_most_once/at_least_once into send_at_most_once/send_at_least_once

  • Replace ConnectAck::properties with ConnectAck::with

[0.2.1] - 2020-08-03

  • Fix v5 decoding for properties going beyond properties boundary

[0.2.0] - 2020-07-28

  • Fix v5 server constraints

  • Add v3::Connect::service_unavailable()

  • Refactor Topics matching

[0.2.0-beta.2] - 2020-07-22

  • Add Publish::packet_mut() method

[0.2.0-beta.1] - 2020-07-06

  • Add mqtt v5 protocol support

  • Refactor control packets handling

[0.1.3] - 2020-05-26

  • Check for duplicated in-flight packet ids

[0.1.2] - 2020-04-20

  • Update ntex

[0.1.1] - 2020-04-07

  • Add disconnect timeout

[0.1.0] - 2020-04-01

  • For to ntex namespace

[0.2.3] - 2020-03-10

  • Add server handshake timeout

[0.2.2] - 2020-02-04

  • Fix server keep-alive impl

[0.2.1] - 2019-12-25

  • Allow to specify multi-pattern for topics

[0.2.0] - 2019-12-11

  • Migrate to std::future

  • Support publish with QoS 1

[0.1.0] - 2019-09-25

  • Initial release