tokio-xmpp: @id wasn't correctly added to every stanza

This commit moves the code adding @id to AsyncClient and SimpleClient,
instead of on the lower level send_stanza helper, which seemed to only
be used internally.

Support is also added for Component.

This removes the addition of @id on elements like <auth/> or <bind/>,
which probably weren't required anyway?

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2023-06-04 19:01:45 +02:00
commit bc73af1e5e
No known key found for this signature in database
GPG key ID: DEDA74AEECA9D0F2
4 changed files with 20 additions and 11 deletions

View file

@ -17,7 +17,7 @@ use super::bind::bind;
use crate::happy_eyeballs::connect_with_srv;
use crate::starttls::starttls;
use crate::xmpp_codec::Packet;
use crate::xmpp_stream;
use crate::xmpp_stream::{self, make_id};
use crate::{Error, ProtocolError};
/// A simple XMPP client connection
@ -98,7 +98,11 @@ impl Client {
where
E: Into<Element>,
{
self.send(Packet::Stanza(stanza.into())).await
let mut el: Element = stanza.into();
if el.attr("id").is_none() {
el.set_attr("id", make_id());
}
self.send(Packet::Stanza(el.into())).await
}
/// End connection by sending `</stream:stream>`