Commit graph

1,632 commits

Author SHA1 Message Date
Emmanuel Gil Peyrot
cf25bd3fee jid: Refactor all three JID types
The main reason for this refactor was to make common operations simpler,
for instance formatting a JID is now a simple clone of a String.

Instead of having three different String for each of node, domain and
resource, we now have a single String with offsets pointing to where the
at and slash are (if they are present).

This also reduces the size of a FullJid from 72 bytes to 32 bytes on
64-bit platforms (less so on 32-bit), and BareJid from 48 bytes to
32 bytes.  Jid is still 40 bytes instead of 32, but that can be improved
in a future version where InnerJid has been inlined into each struct.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
187e156b0b jid: Move JidParseError into its own module 2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
d867d8d7a1 jid: Replace icu with stringprep
This dependency is unmaintained, but it is written in pure Rust unlike
ICU, and doesn’t require a roundtrip through UTF-16, improving both
performances (perhaps?) and ease of compilation.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
a7dee0bef4 jid: Test for the size of our structs
This shows how big JIDs are represented on the stack and in other
structs.
2023-06-20 18:59:26 +02:00
Emmanuel Gil Peyrot
17335136fe tokio-xmpp: Add syntax highlighting to debug logs
This uses syntect, and has been checked to have zero overhead when it is
disabled.
2023-06-19 19:52:38 +02:00
Maxime “pep” Buquet
99f3811c71 tokio-xmpp: Add debug for chosen DNS method
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-18 17:04:23 +02:00
Maxime “pep” Buquet
f9d4419513
parsers: Document new MucUser helpers
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:17:06 +02:00
Maxime “pep” Buquet
9fa8a9f6ba
parsers: Rename MucUser::with_status to with_statuses
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:16:55 +02:00
Maxime “pep” Buquet
552848b3ed
xmpp: Revert part of 9c39e3 and fix code at the right place
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 19:10:45 +02:00
Maxime “pep” Buquet
d52ace59a9
xmpp: add MucUser payload in send_room_private_message Messages
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 18:54:23 +02:00
Maxime “pep” Buquet
b8ba74e336
parser: Add helpers on MucUser
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 18:44:37 +02:00
9c39e3c195 Event::RoomPrivateMessage does not expose sender FullJid ; add Agent::send_room_private_message method 2023-06-07 15:32:42 +00:00
6144a4c8b0 Event::RoomPrivateMessage for MUC PMs (#85) 2023-06-07 15:32:42 +00:00
Maxime “pep” Buquet
4701f6bb69 jid: Rename Error::IcuError into Error::Stringprep
Avoir the "Error Error" pattern, and also use Stringprep instead of ICU

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 17:29:05 +02:00
2cafecb004 JID stringprep errors return a JidParseError instead of panic (#84) 2023-06-07 17:29:00 +02:00
Maxime “pep” Buquet
d0ec8739d5 parsers: impl MessagePayload for MucUser
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 16:54:20 +02:00
Maxime “pep” Buquet
6cd4addc1a parsers: Add with_payload/with_payloads helpers on Message
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-07 16:49:19 +02:00
c8dcf5e7a7 Fix expected struct sizes for nightly optimizations (no more CI warnings) 2023-06-06 09:37:16 +00:00
099b7356a6 Include libicu-dev in CI images 2023-06-06 01:07:19 +02:00
Maxime “pep” Buquet
a74eeb2910 CI: Lighter docker images
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-05 18:01:51 +00:00
3ac741d666 RUST_LOG=debug can now be used in tokio-xmpp examples to see XMPP network traffic 2023-06-05 15:02:35 +00:00
Maxime “pep” Buquet
ae67949e7a
tokio-xmpp: Ensure id is added only to stanza
The previous commit didn't fix a bug where @id would be added to
elements that didn't need it / where it was invalid (e.g., stream
management).

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-05 16:34:13 +02:00
Maxime “pep” Buquet
bc73af1e5e
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>
2023-06-04 19:07:56 +02:00
6fa6deddcb Message now has constructors for each type, and a with_body builder method (#78) 2023-06-03 12:39:55 +02:00
512c1d1aae Presence now has constructors for each type variant, and a with_payload builder method (closes #79) 2023-06-03 08:59:19 +00:00
Maxime “pep” Buquet
72ddb8b851
xmpp: Update Changelog to mention ClientBuilder::new signature change
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-02 17:59:44 +02:00
209bab1441 tokio_xmpp::AsyncClient and xmpp::Agent take a fully parsed Jid (#72) 2023-06-01 16:55:53 +02:00
Maxime “pep” Buquet
7064ef5c17 minidom/examples: silence warning on unused property in struct
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-06-01 16:25:38 +02:00
aafe341b25 Agent is now Send (closes #64) 2023-06-01 12:00:59 +02:00
Maxime “pep” Buquet
1870a83424 tokio-xmpp: cleaner outgoing debug logs
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-31 00:51:58 +02:00
Maxime “pep” Buquet
5256575512 tokio-xmpp: Add debug prints for incoming packets
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-31 00:51:58 +02:00
Maxime “pep” Buquet
e8a7d909c1 parsers: derive PartialEq on Iq too
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-30 19:04:33 +02:00
8d9288ffd7 Implement From<&Jid> for String (close #69) 2023-05-28 22:27:40 +02:00
ce255d9602 Jid (de)serialization now uses untagged representation (close #66) 2023-05-28 19:54:51 +02:00
Maxime “pep” Buquet
8c18eeecd1 Bump version to 0.4.0
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 17:05:20 +02:00
Maxime “pep” Buquet
943a0afe9d tokio-xmpp: Bump version to 3.3.0
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 17:05:20 +02:00
Maxime “pep” Buquet
5d62fc25ae
xmpp: Update homepage url
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 16:30:03 +02:00
Maxime “pep” Buquet
48d5e19e9d
xmpp: Update changelog
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 16:25:45 +02:00
Maxime “pep” Buquet
663b73f676
xmpp: Remove more useless features
They can be added directly via tokio-xmpp

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 16:25:22 +02:00
Maxime “pep” Buquet
ad5806a358
xmpp: ensure cargo fetches 3.x updates for tokio-xmpp
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-05-18 16:12:52 +02:00
Doggo
209c5b779a Fix bug where ContactAdded event was not firing due to a bad if statement. 2023-05-18 16:06:43 +02:00
Paul Fariello
88ab74c92f Set tokio_xmpp::client::async_client::Config as public 2023-05-17 16:56:42 +00:00
Emmanuel Gil Peyrot
0d0335898d minidom: Release 0.15.2
This finally fixes the memory corruption on closing tag for elements
with a name longer than 24 bytes.
2023-05-13 12:28:11 +02:00
Emmanuel Gil Peyrot
58f6d5494a Bump tokio-xmpp and xmpp dependencies
It still builds and tests pass without any other change.
2023-04-03 12:13:37 +02:00
Emmanuel Gil Peyrot
2955a0fe60 parsers: Bump base64
Version 0.21 replaced base64::decode() with an Engine trait and multiple
structs implementing it for various alphabets, various performance
profiles, etc.  It is slightly longer to import but in the end does the
very same thing.
2023-04-03 11:28:41 +02:00
Emmanuel Gil Peyrot
3ad616945a parsers: Replace sha-1 with sha1
It is the same crate now.
2023-04-03 11:28:41 +02:00
Emmanuel Gil Peyrot
eb628704c0 minidom: Bump rxml
This was causing a memory corruption on closing tags for elements with a
name longer than 24 bytes.  I haven’t investigated why smartstring < 1
had this bug, but it got fixed in 1.0.0 so let’s use that.
2023-04-03 11:28:41 +02:00
Maxime “pep” Buquet
216d9c4a8d
xmpp: rustfmt Message events commits
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-02-27 00:07:57 +01:00
Maxime “pep” Buquet
f2a599325e
xmpp: Update changelog
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-02-26 20:14:35 +01:00
Maxime “pep” Buquet
c759516508
xmpp: *Message events now include an optional id
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2023-02-26 20:09:20 +01:00