Up to now, the xmpp-rs projects have been very strict about incoming
data. This has served us, as developers of the libraries, well,
uncovering bugs in our and remote implementations which we could then
get fixed.
However, this behaviour is unexpected to users of the library. In the
XMPP world, unexpected child elements and attributes are generally
expected to be ignored. While this could be opted-into previously, the
feature flag for that sounded more dangerous than it was
("disable-validation"). In addition, the tribal knowledge needed to know
about that feature flag may not have reached some people who tried the
library and gave up because of that.
With this change, we make the non-pedantic behaviour the default. For
development and debugging purposes, users can always opt into the
pedantic behaviour as needed, using the newly-introduced `pedantic`
feature flags on all affected crates.
140 lines
7.2 KiB
Text
140 lines
7.2 KiB
Text
Version NEXT:
|
||
0000-00-00 RELEASER <releaser@domain>
|
||
* Breaking:
|
||
- Removed the `disable-validation` feature and made the behaviour the
|
||
new default. The newly-introduced `pedantic` feature can be used to
|
||
opt into the previous default behaviour of rejecting all unknown
|
||
child elements and attributes.
|
||
* Added:
|
||
- Expose `client_auth` method to allow manual stream setups for advanced
|
||
use cases.
|
||
- Add feature flag to disable validation in xmpp_parsers
|
||
* Fixed:
|
||
- Ignore missing "version" stream attribute for 0114 components.
|
||
- Gate `AsRawFd` behind `ktls` feature to make Windows build work again.
|
||
- Implicitly use the `Client`'s bound JID on empty `from` and `to` in
|
||
tokio-xmpp's `IqResponseTracker`.
|
||
- Actually count inbound stream management stanzas (!657) instead of
|
||
always sending h='0' in our `<a/>`.
|
||
|
||
Version 5.0.0:
|
||
2025-10-28 pep <pep@bouah.net>
|
||
* Breaking:
|
||
- Remove `tokio_xmpp::ParseError` and `tokio_xmpp::starttls::ParseError`
|
||
which were never used
|
||
- Remove StreamFeatures from this crate, replaced with
|
||
`xmpp_parsers::stream_features::StreamFeatures` (!400)
|
||
- `starttls::error::ConnectorError` variants have been merged with
|
||
`starttls::error::Error`, except `ConnectorError::AllFailed` which was
|
||
not used and has been completely removed (!418)
|
||
- Remove `ProtocolError` and `AuthError` from crate root; access them
|
||
from `error` module (!423)
|
||
- Remove `connect::ServerConnector`'s `Error` associated type, the
|
||
methods return tokio_xmpp::Error directly, where Connection variant
|
||
contains any error type that implements connect::ServerConnectorError
|
||
(!421)
|
||
- Remove `starttls::Error`'s `TokioXMPP` variant ; only
|
||
tokio_xmpp::Error can contain starttls::Error, not the other way around
|
||
(!421)
|
||
- `AsyncClient::new` automatically reconnects by default (!436)
|
||
- `AsyncClient::poll_next` properly closes stream with
|
||
`Poll::Ready(None)` when disconnecting without auto reconnect (!436)
|
||
- Remove `tokio_xmpp::SimpleClient` because it was not widely used, and
|
||
not well documented ; if you need it, please let us know and it will be
|
||
reintegrated (!428)
|
||
- Change `Component::new` and `Client::new` interface ; only require
|
||
jid/password argument (!428)
|
||
- Remove `ServerConfig` and `Client::new_with_config` (!428)
|
||
- Add `new_plaintext`, `new_starttls` and `new_with_connector` method to
|
||
`Client` (!428)
|
||
`new_plaintext` and `new_starttls` take a DnsConfig struct for SRV/DNS
|
||
resolution strategy, while `new_with_connector` takes anything that
|
||
implements ServerConnector
|
||
- Add `new_plaintext` and `new_with_connector` constructors to
|
||
`Component`, just like `Client` but without StartTLS (!428)
|
||
- Rename `tokio_xmpp::AsyncClient` to `tokio_xmpp::Client` (!428)
|
||
- Gate `Component` behind `insecure-tcp` feature flag
|
||
- Remove `XMPPStream` and `XmppCodec` in favour of the newly implemented
|
||
`tokio_xmpp::xmlstream module.
|
||
- The TLS-related feature flags have been completely reworked to make
|
||
them easier to use. The `tls-rust-*`, `tls-native` and `starttls-*`
|
||
feature flags have been removed in favour of more concise flag names
|
||
identifying the TLS backends directly (`aws_lc_rs`, `ring`,
|
||
`native-tls`). The `starttls` feature is now independent of the
|
||
specific backend (but a backend still needs to be enabled for
|
||
compilation to succeed).
|
||
|
||
Please refer to the crate docs for details. (!581)
|
||
* Added:
|
||
- Add new `direct-tls` connection method to the `Client`. (!585)
|
||
- Support sending IQ requests while tracking their responses in a Future.
|
||
- `rustls` is now re-exported if it is enabled, to allow applications to
|
||
set the default crypto provider if needed. (!581)
|
||
- Derive Debug on Client and associated structs
|
||
- Add ktls support. On Linux, once the TLS session is established, we
|
||
can delegate the actual encryption and decryption to the kernel, which
|
||
in turn can delegate it to a hardware implementations if available.
|
||
This depends on the `tls-rust-ktls` feature. (!458, !490)
|
||
* Changes:
|
||
- Update rxml dependency to 0.13.
|
||
- Remove warnings for elided lifetimes (rustc 1.90)
|
||
- Use thiserror for the error types. (!616)
|
||
- Fix building with 'insecure-tcp' only.
|
||
- Remove warning when 'rustls-any-backend' feature isn't enabled
|
||
|
||
Version 4.0.0:
|
||
2024-07-26 Maxime “pep” Buquet <pep@bouah.net>
|
||
* Breaking:
|
||
- Add ServerConnector API to be able to change transports for the
|
||
stream and the consumer.
|
||
- DNS/TLS deps are now optional and available behind the `starttls-rust` and
|
||
the `starttls-native` features.
|
||
- Connectors for insecure tcp are now behind the `insecure-tcp` feature
|
||
and are disabled by default.
|
||
* Changes:
|
||
- Add support for channel binding (RFC 9266) on TLS 1.3 (TLS 1.2
|
||
pending) (faabc2984)
|
||
- Prevent tokio-xmpp from crashing when the server closes the stream
|
||
under our feet (aabd19f7).
|
||
- New public `AsyncClient::get_stream_features` and
|
||
`SimpleClient::get_stream_features` methods. (060088be)
|
||
- Add `serde` feature to proxy jid feature. (034976748)
|
||
- Add XmppCodec public. (6d449e9a)
|
||
- Remove workaround for Debian oldoldstable. (372234b9)
|
||
- Update to edition 2021. Remove TryFrom/Into as they're included in the
|
||
prelude. (4089891)
|
||
- Happy eyeballs: Connect to all records in parallel. The happy eyeballs
|
||
implementation used not to query AAAA if it got an answer for the A
|
||
record. (598ffdb, 6c3081d)
|
||
- Allow building docs with --all-features. It used to fail because it's
|
||
not possible to build with both the `tls-native` and `tls-rust`.
|
||
features. (0298caf9)
|
||
- Bump all dependencies.
|
||
- Change trust-dns to hickory-dns. (115edf6f)
|
||
- Remove unnecessary features from dependencies. (2d11ada30)
|
||
- Fix typos with codespell
|
||
- Various performance optimisations
|
||
|
||
Version 3.5.0:
|
||
2023-10-24 Maxime “pep” Buquet <pep@bouah.net>
|
||
* Changes:
|
||
- Require one and only one of tls-native and tls-rust to be enabled.
|
||
Technically a breaking change, but enabling both wasn't working in the
|
||
previous release anyway.
|
||
- Various fixes that were guarded under the tls-rust feature. All
|
||
updates from dependencies.
|
||
- Add serde feature, passed to jid crate
|
||
|
||
Version 3.4.0:
|
||
2023-08-17 Maxime “pep” Buquet <pep@bouah.net>
|
||
* Breaking changes:
|
||
- AsyncClient::new takes a parsed Jid instead of string (#72)
|
||
- Properly add @id to every stanza, and also add support for components.
|
||
* Changes:
|
||
- env_logger is now included in dev_dependencies for examples debugging with RUST_LOG=debug
|
||
- Fix debug prints to include all XML being sent and received
|
||
- Add chosen DNS method to debug logs
|
||
- Add syntax highlighting to debug logs
|
||
- Update dependencies
|
||
- Fix a deadlock when packets were being ignored. (6ccc5cc)
|
||
- Re-export jid structs, minidom::Element, and parsers module
|