Skip to content

Releases: bytebeamio/rumqtt

rumqttc-0.24.1

21 May 05:42
Compare
Choose a tag to compare

Patch that exposes rumqttc::v5::DisconnectProperties

Full Changelog: rumqttc-0.24.0...rumqttc-0.24.1

rumqttc-0.24.0

21 May 05:41
Compare
Choose a tag to compare

What's New?

  • 🧾 Expose EventLoop::clean to allow triggering shutdown and subsequent storage of pending requests by @de-sh in #741

You can now shutdown the Eventloop and drain Requests, which weren't received from the channel and keep them in pending while doing cleanup to prevent any data loss. Example usage in bytebeamio/uplink.

  • πŸ” Support for all TLS key formats currently supported by Rustls: PKCS#1, PKCS#8, RFC5915 and new TLS Error variants: NoValidClientCertInChain, NoValidKeyInChain by @ijager in #752 and #752

With this, we now practically support all RSA and ECC keys in DER/SEC1 encoding.

  • A websocket request modifier for v4 client by @swanandx in #772

  • Surfaced AsyncClient's from_senders method to the Client as from_sender by @BKDaugherty in #779


Changes

MqttOptions::new now accepts empty client_id and MqttOptions::set_clean_session panics if client_id is empty and clean_session flag is set to false.

Users do not need to specify the TLS key variant in the TlsConfiguration anymore, this is inferred automatically. To update your code simply remove Key::ECC() or Key::RSA() from the initialization.

  • Certificate for client authentication is optional in native-tls variant by @swanandx in #758

With this, the der & password fields are replaced by client_auth.

  • Make v5 RetainForwardRule public, in order to allow setting it when constructing Filter values by @brianmay in #767

  • Use VecDeque instead of IntoIter to fix unintentional drop of pending requests on EventLoop::clean by @de-sh in #780

  • Fix typo - StateError::IncommingPacketTooLarge => StateError::IncomingPacketTooLarge by @swanandx in #786

  • Update rustls and friends by @qwandor in #790

Update tokio-rustls to 0.25.0, rustls-native-certs to 0.7.0, rustls-webpki to 0.102.1, rusttls-pemfile to 2.0.0, async-tungstenite to 0.24.0, ws_stream_tungstenite to 0.12.0 and http to 1.0.0. This is a breaking change as types from some of these crates are part of the public API in

Fixes

  • Lowered the MSRV to 1.64.0 by @RoastVeg in #762
  • Request modifier function should be Send and Sync and removed unnecessary Box by @swanandx in #770

New Contributors πŸŽ‰


Full Changelog: rumqttd-0.19.0...rumqttc-0.24.0

rumqttd-0.19.0

12 Dec 10:21
Compare
Choose a tag to compare

What's New?

You can hook custom function for authentication using client id, username and password. This custom function can be extended as per need, for e.g. fetching credentials from DB, using tokens or spawning processes, etc. see example for setup.

Previously only RSA keys were accepted, but now you can specify any TLS key formats currently supported by rustls, like ECC, PKCS8 to name a few.


Changes

Configuration related

user can specify v4 and/or v5 config. Specifying [v4.x] in rumqttd.toml is no longer mandatory, those who wish to only use v5 can now only include [v5.x] in config.

specifying [console] in rumqttd.toml is now optional and can be safely removed if you don't wish to use console.

  • CA certificate is optional if client auth is disabled

capath in tls config is only required is client authentication will be used ( see "verify-client-cert" feature below to know more ). Warning will be logged if the feature is disabled and capath is being ignored.

Feature related

rumqttd will log a warning if [ws.x] is specified in config but getting ignored due to websocket feature is disabled.

  • "websockets" feature is removed in favour of "websocket"

  • client auth is featured gated behind "verify-client-cert" by @de-sh in #756

mutual TLS ( mTLS ) or client authentication, which is done verifying by certificates provided client is now optional with use-rustls. capath specifying CA certificate must be present in config file if client auth is enabled.
To enable client auth, you need to enable verify-client-cert features ( disabled by default to match behavior of use-native-tls )

Others

  • Console endpoint /config prints Router Config instead of returning console settings by @swanandx in #727
  • Update tungstenite and dependencies to fix CVE by @swanandx in #730
Maintainance

New Contributors πŸŽ‰


Full Changelog: rumqttd-0.18.0...rumqttd-0.19.0

rumqttc 0.23.0

10 Oct 12:22
Compare
Choose a tag to compare

Added

  • Added bind_device to NetworkOptions to enable TCPSocket.bind_device()
  • Added MqttOptions::set_request_modifier for setting a handler for modifying a websocket request before sending it.

Fixed

  • Allow keep alive values <= 5 seconds (#643)
  • Verify "mqtt" is present in websocket subprotocol header.

Security

  • Remove dependency on webpki. CVE
  • Removed dependency vulnerability, see rustsec. Update of tungstenite dependency.

Other Changes

New Contributors πŸŽ‰

rumqttd 0.18.0

13 Sep 10:15
Compare
Choose a tag to compare

What's Changed

This release fixes retained and will messages and adds support for will delay interval in MQTTv5. Rumqttd now have an enhanced release profile in Cargo.toml which would improve performance while reducing the binary size! Here are some of the other changes:

⚑ Added

🚨 Changed

  • Non-consuming builder pattern for constructing Connection by @swanandx in #708
  • Removed Link and its implementation which were deprecated by @swanandx in #684

πŸ› οΈ Fixed

πŸ”’ Security

  • Remove dependency on webpki to fix CVE

🚧 Maintenance changes

Full Changelog: rumqttd-0.17.0...rumqttd-0.18.0

rumqttd-0.17.0

15 Aug 12:30
Compare
Choose a tag to compare

Whats New? 🀯

  • πŸ†” Subscription IDs support in broker by @swanandx in #632
  • πŸ”₯ Shared subscriptions with configurable strategy by @Nickztar in #668

We can configure strategy for shared subscriptions using rumqttd.toml The available strategies are as follows:
round_robin (Default): select clients in turns as per the order of their subscription.
random: randomly choose a client and sent it. ( note: once a client is chosen, we try to send as many msg as we can )
sticky: stick to a subscriber and keep sending it all the messages until its gone.

Maintenance changes 🚧

New Contributors πŸŽ‰

  • @Dirreke made their first contribution in #666
  • @neruyzo made their first contribution in #681

Full Changelog: rumqttd-0.16.0...rumqttd-0.17.0

rumqttd 0.16.0

24 Jul 13:39
Compare
Choose a tag to compare

Blog Post discussing this release - https://bytebeam.io/blog/qos2-and-websockets-support-rumqttd/

Significant Changes

  • QoS2 support (#604) πŸš€
  • Support for Websocket connections (#633) πŸ•ΈοΈ

Changed

  • Ability to configure segment size individually (#602)
  • LinkBuilder for constructing LinkRx/LinkTx (#659)

Deprecated

  • Link and its implementation, use LinkBuilder instead

Fixed

  • Include reason code for UnsubAck in v5

New Contributors πŸŽ‰

rumqttc 0.22.0

16 Jun 12:07
Compare
Choose a tag to compare

Added

  • Added outgoing_inflight_upper_limit to MQTT5 MqttOptions. This sets the upper bound for the number of outgoing publish messages (#615)
  • Added support for HTTP(s) proxy (#608)
    • Added proxy feature gate
    • Refactored eventloop::network_connect to allow setting proxy
    • Added proxy options to MqttOptions
  • Update rustls to 0.21 and tokio-rustls to 0.24 (#606)
    • Adds support for TLS certificates containing IP addresses
    • Adds support for RFC8446 C.4 client tracking prevention

Changed

  • MqttState::new takes max_outgoing_packet_size which was set in MqttOptions but not used (#622)

rumqttd 0.15.0

30 May 12:37
Compare
Choose a tag to compare

Significant Changes

  • Support for topic alias and message expiry in MQTTv5 (#616)

Changed

  • Certificate paths configured in config file are checked during startup and throws a panic if it is not valid. (#610)

Fixed

  • MQTTv5: Read the Unsubscribe package in match arms (#625)

rumqttc 0.21.0

01 May 12:55
Compare
Choose a tag to compare

Significant Changes

  • Added support for MQTT5 features to v5 client
  • MQTT5: Remove Box on Event::Incoming