Update xmpp-rs libraries

O01eg
Jun 22, 2026, 2:34 PM
YNP42F6WJ42IDXPDJBRPRPEKXXZE6DBJQZFQKVWV575MOAQBMTOQC

Dependencies

  • [2] TGO4TIWU Fix README
  • [3] HTJ7H7Z6 Update dependencies and format
  • [4] K7XUYBRZ Update dependencies and format
  • [5] UL67RM6X Re-implement sending message
  • [6] 3RMEABMU Prepare to add HTTP API to ping cutom jids
  • [7] FZBPGF6X Describe ping
  • [8] 55VVNPHU Log presence errors as errors
  • [9] EKBSFYEF Make mailbox based on bare jid because of roster
  • [10] GSSXO6ZH Remove undelivireable messages
  • [11] Y3Z3KYIF Don't clean messages on offline
  • [12] 6G4QYIBF Update and try to send messages if recipient doesn't answer
  • [13] 5YFY3WZ3 Trying to send messages and ask subscription
  • [14] ZDGCVSXJ Send id and receipts with message
  • [15] C6VGR2RW Ping other domains to test s2s
  • [16] OX5ZPQRF Update tokio to 1.*
  • [17] WXPEN4YC Update dependencies
  • [18] TRSLPEEJ Checks for self XEP-0163 support
  • [19] VXJOXN2O Update dependencies
  • [20] PO3H34B6 Update dependencies
  • [21] ADKJN3JU Try to reconnect to MUC
  • [22] YCYYN7MF Update dependencies
  • [23] D23F5T6Q Apply clippy suggestion
  • [24] MEXG7XQM Update dependencies
  • [25] Z2AFKHWF Add separate check for presence error from MUC
  • [26] 3H5SVMVH Reconnect to MUC later after error
  • [27] FGCLY6FP Distinguish difference MUC enter presence
  • [28] 4XX74XB3 Update xmpp-parsers to 0.20
  • [29] OJ4HP746 Update dependencies
  • [30] UTMFRRHQ Use actix-web instead of hyper
  • [31] T465VCVO Update clap and other dependencies
  • [32] DYZPZWNH Wait for self presence in MUC and re-try if no one received
  • [33] IZTI2NWX Update dependencies
  • [34] U6SBZ7SD Send MUC message id
  • [35] 666UVISN Mark MUC to reconnect on error message from it
  • [36] LWDNNXDZ Update dependencies
  • [37] 727YJ2SL Send message and presence to MUC
  • [38] EVIOKGS2 Don''t break threads and channel after disconnection
  • [39] T5VMNBHR Fix other warnings
  • [40] BBX3ELGV Update dependencies

Change contents

  • replacement in src/xmpp/xmpp_connection.rs at line 4
    [29.40][16.0:30](),[2.150][16.0:30](),[16.30][34.0:40]()
    use tokio_xmpp::SimpleClient;
    use tokio_xmpp::starttls::ServerConfig;
    [2.150]
    [2.196]
    use tokio_xmpp::Client;
  • edit in src/xmpp/xmpp_connection.rs at line 14
    [2.300]
    [2.300]
    use xmpp_parsers::{jid, minidom};
  • edit in src/xmpp/xmpp_connection.rs at line 147
    [2.3677]
    [2.3716]
    let mut buff: Vec<u8> = Vec::new();
    result.write_to(&mut buff);
  • replacement in src/xmpp/xmpp_connection.rs at line 164
    [2.4343][2.4343:4401]()
    error!("Cann't parse roster: {}", e);
    [2.4343]
    [2.4401]
    error!(
    "Cann't parse roster: {}\n{}",
    e,
    String::from_utf8_lossy(&buff)
    );
  • replacement in src/xmpp/xmpp_connection.rs at line 300
    [2.5815][2.5815:5859]()
    send_queue: VecDeque<minidom::Element>,
    [2.5815]
    [28.171]
    send_queue: VecDeque<tokio_xmpp::Stanza>,
  • replacement in src/xmpp/xmpp_connection.rs at line 316
    [2.6139][29.585:625]()
    client: SimpleClient<ServerConfig>,
    [2.6139]
    [2.6164]
    client: Client,
  • edit in src/xmpp/xmpp_connection.rs at line 441
    [2.9324][29.922:1020](),[29.1020][2.9427:9824](),[2.9427][2.9427:9824]()
    static ref INCOMING: element_processor::Processor<XmppConnection, bool, minidom::Element> = {
    let mut incoming = element_processor::Processor::new(&|_, e| {
    warn!("Unknown stanza {}", String::from(&e));
    true
    });
    incoming.register(&XmppConnection::incoming_iq_processing);
    incoming.register(&XmppConnection::incoming_presence_processing);
    incoming.register(&XmppConnection::incoming_message_processing);
    incoming
    };
  • replacement in src/xmpp/xmpp_connection.rs at line 523
    [2.12714][19.15:86]()
    let client = match SimpleClient::new_with_jid(
    [2.12714]
    [29.1275]
    let client = Client::new(
  • replacement in src/xmpp/xmpp_connection.rs at line 526
    [2.12885][16.134:517]()
    )
    .await
    {
    Ok(client) => client,
    Err(e) => {
    error!("Initialization error: {}", e);
    return (Err(account.clone()), Either::Right(()));
    }
    };
    [2.12885]
    [2.12965]
    );
  • replacement in src/xmpp/xmpp_connection.rs at line 589
    [2.15333][29.1341:1438]()
    fn xmpp_processing(&mut self, event: &Result<minidom::Element, tokio_xmpp::Error>) -> bool {
    [2.15333]
    [2.15392]
    fn xmpp_processing(&mut self, event: &tokio_xmpp::Event) -> bool {
  • replacement in src/xmpp/xmpp_connection.rs at line 591
    [2.15414][16.708:802]()
    Ok(stanza) => INCOMING.process(self, stanza.clone()),
    Err(error) => {
    [2.15414]
    [2.15577]
    tokio_xmpp::Event::Stanza(tokio_xmpp::Stanza::Iq(stanza)) => {
    self.incoming_iq_processing(stanza.clone())
    }
    tokio_xmpp::Event::Stanza(tokio_xmpp::Stanza::Message(stanza)) => {
    self.incoming_message_processing(stanza.clone())
    }
    tokio_xmpp::Event::Stanza(tokio_xmpp::Stanza::Presence(stanza)) => {
    self.incoming_presence_processing(stanza.clone())
    }
    tokio_xmpp::Event::Disconnected(error) => {
  • edit in src/xmpp/xmpp_connection.rs at line 604
    [2.15669]
    [2.15669]
    _ => true,
  • replacement in src/xmpp/xmpp_connection.rs at line 711
    [2.18861][2.18861:19034]()
    match iq.payload {
    xmpp_parsers::iq::IqType::Set(element) => {
    let iq_answer = self.incoming_iq_processing_set(iq.id, iq.from, element);
    [2.18861]
    [2.19034]
    match iq {
    xmpp_parsers::iq::Iq::Set {
    id, from, payload, ..
    } => {
    let iq_answer = self.incoming_iq_processing_set(id, from, payload);
  • replacement in src/xmpp/xmpp_connection.rs at line 718
    [2.19120][2.19120:19320]()
    xmpp_parsers::iq::IqType::Error(e) => {
    if let Some((_, data)) = self.state.data.pending_ids.remove_entry(&iq.id) {
    return data.handler.error(self, e);
    [2.19120]
    [2.19320]
    xmpp_parsers::iq::Iq::Error { id, error, .. } => {
    if let Some((_, data)) = self.state.data.pending_ids.remove_entry(&id) {
    return data.handler.error(self, error);
  • replacement in src/xmpp/xmpp_connection.rs at line 722
    [2.19338][2.19338:19383]()
    error!("iq error: {:?}", e);
    [2.19338]
    [2.19383]
    error!("iq error: {:?}", error);
  • replacement in src/xmpp/xmpp_connection.rs at line 725
    [2.19427][2.19427:19573]()
    xmpp_parsers::iq::IqType::Get(element) => {
    let iq_answer = self.incoming_iq_processing_get(iq.id, iq.from, element);
    [2.19427]
    [2.19573]
    xmpp_parsers::iq::Iq::Get {
    id, from, payload, ..
    } => {
    let iq_answer = self.incoming_iq_processing_get(id, from, payload);
  • replacement in src/xmpp/xmpp_connection.rs at line 731
    [2.19659][2.19659:19814]()
    xmpp_parsers::iq::IqType::Result(opt_element) => {
    if let Some((_, data)) = self.state.data.pending_ids.remove_entry(&iq.id) {
    [2.19659]
    [2.19814]
    xmpp_parsers::iq::Iq::Result {
    id, from, payload, ..
    } => {
    if let Some((_, data)) = self.state.data.pending_ids.remove_entry(&id) {
  • replacement in src/xmpp/xmpp_connection.rs at line 739
    [2.20016][2.20016:20051]()
    iq.id,
    [2.20016]
    [2.20051]
    id,
  • replacement in src/xmpp/xmpp_connection.rs at line 743
    [2.20164][2.20164:20235]()
    return data.handler.result(self, opt_element);
    [2.20164]
    [2.20235]
    return data.handler.result(self, payload);
  • replacement in src/xmpp/xmpp_connection.rs at line 747
    [2.20364][2.20364:20399]()
    iq.id,
    [2.20364]
    [2.20399]
    id,
  • replacement in src/xmpp/xmpp_connection.rs at line 756
    [2.20698][2.20698:20812]()
    iq.id,
    iq.from,
    opt_element.map(|e| String::from(&e))
    [2.20698]
    [2.20812]
    id,
    from,
    payload.map(|e| String::from(&e))
  • replacement in src/xmpp/xmpp_connection.rs at line 776
    [11.57][28.860:948](),[28.948][29.1638:1687]()
    if Self::compare_jid_to_full_jid(&presence.to, &self.account.jid) {
    if let Some(room) = self
    [11.57]
    [29.1687]
    if Self::compare_jid_to_full_jid(&presence.to, &self.account.jid)
    && let Some(room) = self
  • replacement in src/xmpp/xmpp_connection.rs at line 782
    [28.1324][25.310:530](),[29.1891][25.310:530](),[25.310][25.310:530](),[25.530][26.85:162](),[26.162][25.530:597](),[25.530][25.530:597]()
    {
    error!(
    "Got error from MUC {}. Try again later: {:?}",
    room, presence
    );
    self.state.data.error_mucs.insert(room.clone());
    return true;
    }
    [29.1891]
    [25.597]
    {
    error!(
    "Got error from MUC {}. Try again later: {:?}",
    room, presence
    );
    self.state.data.error_mucs.insert(room.clone());
    return true;
  • replacement in src/xmpp/xmpp_connection.rs at line 791
    [8.214][10.0:56](),[10.56][28.1325:1380]()
    if let Some(from) = presence.from {
    if let Some(ref mut mailbox) =
    [8.214]
    [28.1380]
    if let Some(from) = presence.from
    && let Some(ref mut mailbox) =
  • replacement in src/xmpp/xmpp_connection.rs at line 794
    [28.1465][10.289:368](),[10.289][10.289:368](),[10.368][21.0:40](),[21.40][10.407:670](),[10.407][10.407:670]()
    {
    if !mailbox.is_empty() {
    error!(
    "Removed {} undeliverable messages for {}",
    mailbox.len(),
    from
    );
    }
    }
    [28.1465]
    [10.670]
    && !mailbox.is_empty()
    {
    error!(
    "Removed {} undeliverable messages for {}",
    mailbox.len(),
    from
    );
  • replacement in src/xmpp/xmpp_connection.rs at line 887
    [35.89][35.89:217]()
    if Self::compare_jid_to_full_jid(&message.to, &self.account.jid) {
    if let Some(room) = self
    [35.89]
    [35.217]
    if Self::compare_jid_to_full_jid(&message.to, &self.account.jid)
    && let Some(room) = self
  • replacement in src/xmpp/xmpp_connection.rs at line 893
    [35.404][35.404:822]()
    {
    let mut errors = Vec::new();
    for payload in message.payloads.iter() {
    if let Some(_error) = payload.clone().try_into().ok()
    as Option<xmpp_parsers::stanza_error::StanzaError>
    {
    errors.push(_error);
    }
    [35.404]
    [35.822]
    {
    let mut errors = Vec::new();
    for payload in message.payloads.iter() {
    if let Some(_error) = payload.clone().try_into().ok()
    as Option<xmpp_parsers::stanza_error::StanzaError>
    {
    errors.push(_error);
  • edit in src/xmpp/xmpp_connection.rs at line 901
    [35.848][35.848:1156]()
    error!(
    "Got error from MUC {}: errors {:?}. Try again later: {:?}",
    room, errors, message
    );
    self.state.data.error_mucs.insert(room.clone());
    return true;
  • edit in src/xmpp/xmpp_connection.rs at line 902
    [35.1178]
    [35.1178]
    error!(
    "Got error from MUC {}: errors {:?}. Try again later: {:?}",
    room, errors, message
    );
    self.state.data.error_mucs.insert(room.clone());
    return true;
  • edit in src/xmpp/xmpp_connection.rs at line 909
    [35.1196]
    [35.1196]
  • replacement in src/xmpp/xmpp_connection.rs at line 926
    [2.22057][29.2146:2239](),[29.2239][16.901:924](),[16.901][16.901:924]()
    S: FnMut(&mut Self, Result<minidom::Element, tokio_xmpp::Error>) -> Result<bool, ()>
    + 'static,
    [2.22057]
    [2.22123]
    S: FnMut(&mut Self, tokio_xmpp::Event) -> Result<bool, ()> + 'static,
  • replacement in src/xmpp/xmpp_connection.rs at line 932
    [2.22364][2.22364:22430]()
    info!("Sending {}", String::from(&send_element));
    [2.22364]
    [2.22430]
    info!("Sending {:?}", send_element);
  • replacement in src/xmpp/xmpp_connection.rs at line 1002
    [2.26206][2.26206:26272]()
    info!("Quering roster... {}", String::from(&get_roster));
    [2.26206]
    [2.26272]
    info!("Quering roster... {:?}", get_roster);
  • replacement in src/xmpp/xmpp_connection.rs at line 1042
    [2.27707][2.27707:27773]()
    info!("Sending presence... {}", String::from(&presence));
    [2.27707]
    [2.27773]
    info!("Sending presence... {:?}", presence);
  • replacement in src/xmpp/xmpp_connection.rs at line 1079
    [6.249][7.95:150](),[7.150][2.29180:29380](),[6.249][2.29180:29380](),[2.29180][2.29180:29380](),[2.29380][16.925:984](),[16.984][28.1931:1994](),[15.206][2.29562:29727](),[6.283][2.29562:29727](),[28.1994][2.29562:29727](),[2.29562][2.29562:29727](),[2.29727][7.151:235](),[7.235][15.207:549](),[15.549][16.985:1052](),[16.1052][29.2240:2315](),[28.2079][15.925:1228](),[29.2315][15.925:1228](),[15.925][15.925:1228]()
    let ignorable = opt_xmpp_to.is_some();
    self.state.data.counter += 1;
    let id_ping = format!("id_ping{}", self.state.data.counter);
    let ping = stanzas::make_ping(
    &id_ping,
    self.state.client.bound_jid().clone(),
    opt_xmpp_to.as_ref().map(|j| j.to_bare()),
    );
    self.state.data.send_queue.push_back(ping);
    self.state
    .data
    .pending_ids
    .insert(id_ping, IqWait::new(30, PingIqHandler { ignorable }));
    if opt_xmpp_to.is_none() {
    for domains in &self.state.data.used_domains {
    self.state.data.counter += 1;
    let id_ping = format!("id_ping{}", self.state.data.counter);
    let ping = stanzas::make_ping(
    &id_ping,
    self.state.client.bound_jid().clone(),
    Some(jid::BareJid::from_parts(None, domains)),
    );
    self.state.data.send_queue.push_back(ping);
    self.state
    .data
    .pending_ids
    .insert(id_ping, IqWait::new(30, PingIqHandler { ignorable: true }));
    [6.249]
    [15.1228]
    if let Some(bound_jid) = self.state.client.bound_jid() {
    let ignorable = opt_xmpp_to.is_some();
    self.state.data.counter += 1;
    let id_ping = format!("id_ping{}", self.state.data.counter);
    let ping = stanzas::make_ping(
    &id_ping,
    bound_jid.clone(),
    opt_xmpp_to.as_ref().map(|j| j.to_bare()),
    );
    self.state.data.send_queue.push_back(ping);
    self.state
    .data
    .pending_ids
    .insert(id_ping, IqWait::new(30, PingIqHandler { ignorable }));
    if opt_xmpp_to.is_none() {
    for domains in &self.state.data.used_domains {
    self.state.data.counter += 1;
    let id_ping = format!("id_ping{}", self.state.data.counter);
    let ping = stanzas::make_ping(
    &id_ping,
    bound_jid.clone(),
    Some(jid::BareJid::from_parts(None, domains)),
    );
    self.state.data.send_queue.push_back(ping);
    self.state.data.pending_ids.insert(
    id_ping,
    IqWait::new(30, PingIqHandler { ignorable: true }),
    );
    }
    for muc in self.state.data.error_mucs.drain() {
    self.state.data.counter += 1;
    let id_muc_presence =
    format!("id_muc_presence_error_mucs{}", self.state.data.counter);
    let muc_presence = stanzas::make_muc_presence(
    &id_muc_presence,
    self.account.jid.clone(),
    muc,
    None,
    None,
    );
    self.state.data.send_queue.push_back(muc_presence);
    }
  • replacement in src/xmpp/xmpp_connection.rs at line 1122
    [15.1250][26.163:285](),[26.285][28.2080:2220](),[27.210][26.386:761](),[28.2220][26.386:761](),[26.386][26.386:761]()
    for muc in self.state.data.error_mucs.drain() {
    self.state.data.counter += 1;
    let id_muc_presence =
    format!("id_muc_presence_error_mucs{}", self.state.data.counter);
    let muc_presence = stanzas::make_muc_presence(
    &id_muc_presence,
    self.account.jid.clone(),
    muc,
    None,
    None,
    );
    self.state.data.send_queue.push_back(muc_presence);
    [15.1250]
    [26.761]
    if let Some(xmpp_to) = opt_xmpp_to {
    self.add_domain_to_ping(xmpp_to.domain().into());
  • edit in src/xmpp/xmpp_connection.rs at line 1125
    [26.783]
    [15.1250]
    } else {
    error!("Missing bound JID to ping")
  • edit in src/xmpp/xmpp_connection.rs at line 1128
    [15.1268][15.1268:1321](),[15.1321][29.2316:2386](),[28.2284][15.1382:1400](),[29.2386][15.1382:1400](),[15.1382][15.1382:1400]()
    if let Some(xmpp_to) = opt_xmpp_to {
    self.add_domain_to_ping(xmpp_to.domain().into());
    }
  • replacement in src/xmpp/xmpp_connection.rs at line 1257
    [9.434][5.388:516](),[29.2583][5.388:516](),[5.388][5.388:516](),[5.516][9.435:522](),[9.522][5.635:691](),[5.635][5.635:691](),[5.691][23.0:233](),[23.233][5.945:1037](),[5.945][5.945:1037](),[5.1037][14.361:665](),[14.665][5.1302:1853](),[5.1302][5.1302:1853](),[5.1853][9.701:757](),[9.757][5.1902:1934](),[5.1902][5.1902:1934](),[5.1934][12.0:198](),[12.198][13.0:27](),[13.27][14.666:970](),[14.970][13.264:449](),[12.225][13.264:449](),[13.449][12.225:334](),[12.225][12.225:334](),[12.334][13.450:656](),[12.531][5.1934:1956](),[13.656][5.1934:1956](),[5.1934][5.1934:1956](),[5.1956][23.234:471](),[23.471][5.2214:2737](),[5.2214][5.2214:2737](),[5.2737][9.758:814](),[9.814][5.2786:2840](),[5.2786][5.2786:2840]()
    if let Some(ref mut mailbox) = self.state.data.outgoing_mailbox.get_mut(xmpp_to) {
    if !mailbox.is_empty() {
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(xmpp_to) {
    info!("Jid {} in roster", xmpp_to);
    let sub_to = matches!(
    rdata.0,
    xmpp_parsers::roster::Subscription::To
    | xmpp_parsers::roster::Subscription::Both
    );
    if sub_to {
    info!("Subscribed to {}", xmpp_to);
    self.state
    .data
    .send_queue
    .extend(mailbox.drain(..).map(|message| {
    stanzas::make_chat_message(message.2, message.1, message.0)
    }));
    } else if rdata.1 == xmpp_parsers::roster::Ask::None {
    info!("Not subscribed to {}", xmpp_to);
    self.state.data.counter += 1;
    let id_ask_subscribe =
    format!("id_ask_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(
    id_ask_subscribe,
    xmpp_to.clone().into(),
    ));
    } else {
    warn!(
    "Unsupported subscription state {:?} to {}. Try to send messages",
    rdata, xmpp_to
    );
    self.state
    .data
    .send_queue
    .extend(mailbox.drain(..).map(|message| {
    stanzas::make_chat_message(message.2, message.1, message.0)
    }));
    self.state.data.counter += 1;
    let id_ask_subscribe =
    format!("id_ask_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(
    id_ask_subscribe,
    xmpp_to.clone().into(),
    ));
    }
    let sub_from = matches!(
    rdata.0,
    xmpp_parsers::roster::Subscription::From
    | xmpp_parsers::roster::Subscription::Both
    );
    if !sub_from {
    info!("Not subscription from {}", xmpp_to);
    self.state.data.counter += 1;
    let id_allow_subscribe =
    format!("id_allow_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_allow_subscribe(
    id_allow_subscribe,
    xmpp_to.clone().into(),
    ));
    }
    [29.2583]
    [5.2840]
    if let Some(ref mut mailbox) = self.state.data.outgoing_mailbox.get_mut(xmpp_to)
    && !mailbox.is_empty()
    {
    if let Some(ref mut rdata) = self.state.data.roster.get_mut(xmpp_to) {
    info!("Jid {} in roster", xmpp_to);
    let sub_to = matches!(
    rdata.0,
    xmpp_parsers::roster::Subscription::To
    | xmpp_parsers::roster::Subscription::Both
    );
    if sub_to {
    info!("Subscribed to {}", xmpp_to);
    self.state
    .data
    .send_queue
    .extend(mailbox.drain(..).map(|message| {
    stanzas::make_chat_message(message.2, message.1, message.0)
    }));
    } else if rdata.1 == xmpp_parsers::roster::Ask::None {
    info!("Not subscribed to {}", xmpp_to);
    self.state.data.counter += 1;
    let id_ask_subscribe = format!("id_ask_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(
    id_ask_subscribe,
    xmpp_to.clone().into(),
    ));
  • replacement in src/xmpp/xmpp_connection.rs at line 1287
    [5.2865][5.2865:2925]()
    info!("Jid {} not in roster", xmpp_to);
    [5.2865]
    [5.2925]
    warn!(
    "Unsupported subscription state {:?} to {}. Try to send messages",
    rdata, xmpp_to
    );
    self.state
    .data
    .send_queue
    .extend(mailbox.drain(..).map(|message| {
    stanzas::make_chat_message(message.2, message.1, message.0)
    }));
    self.state.data.counter += 1;
    let id_ask_subscribe = format!("id_ask_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_ask_subscribe(
    id_ask_subscribe,
    xmpp_to.clone().into(),
    ));
    }
    let sub_from = matches!(
    rdata.0,
    xmpp_parsers::roster::Subscription::From
    | xmpp_parsers::roster::Subscription::Both
    );
    if !sub_from {
    info!("Not subscription from {}", xmpp_to);
  • replacement in src/xmpp/xmpp_connection.rs at line 1315
    [5.2975][5.2975:3068](),[5.3068][9.815:911](),[9.911][5.3195:3492](),[5.3195][5.3195:3492](),[5.3492][9.912:966](),[9.966][5.3553:3704](),[5.3553][5.3553:3704]()
    let id_add_roster = format!("id_add_roster{}", self.state.data.counter);
    let add_roster = stanzas::make_add_roster(&id_add_roster, xmpp_to.clone());
    info!("Adding jid {} to roster id {}", xmpp_to, id_add_roster);
    self.state.data.pending_ids.insert(
    id_add_roster,
    IqWait::new(
    60,
    AddRosterIqHandler {
    jid: xmpp_to.clone(),
    },
    ),
    );
    self.state.data.send_queue.push_back(add_roster);
    [5.2975]
    [5.3704]
    let id_allow_subscribe =
    format!("id_allow_subscribe{}", self.state.data.counter);
    self.state
    .data
    .send_queue
    .push_back(stanzas::make_allow_subscribe(
    id_allow_subscribe,
    xmpp_to.clone().into(),
    ));
  • edit in src/xmpp/xmpp_connection.rs at line 1325
    [5.3722]
    [5.3722]
    } else {
    info!("Jid {} not in roster", xmpp_to);
    self.state.data.counter += 1;
    let id_add_roster = format!("id_add_roster{}", self.state.data.counter);
    let add_roster = stanzas::make_add_roster(&id_add_roster, xmpp_to.clone());
    info!("Adding jid {} to roster id {}", xmpp_to, id_add_roster);
    self.state.data.pending_ids.insert(
    id_add_roster,
    IqWait::new(
    60,
    AddRosterIqHandler {
    jid: xmpp_to.clone(),
    },
    ),
    );
    self.state.data.send_queue.push_back(add_roster);
  • replacement in src/xmpp/xmpp_connection.rs at line 1367
    [32.4123][2.31623:31701](),[2.31623][2.31623:31701]()
    info!("Sending muc presence... {}", String::from(&muc_presence));
    [32.4123]
    [2.31701]
    info!("Sending muc presence... {:?}", muc_presence);
  • replacement in src/xmpp/xmpp_connection.rs at line 1408
    [18.2649][29.2653:2775]()
    Some(jid::Jid::from(self.account.jid.clone())),
    Some(jid::Jid::from(self.account.jid.to_bare())),
    [18.2649]
    [18.2773]
    jid::Jid::from(self.account.jid.clone()),
    jid::Jid::from(self.account.jid.to_bare()),
  • edit in src/xmpp/xmpp_connection.rs at line 1414
    [18.2915][18.2915:3027]()
    );
    info!(
    "Sending self discovery... {}",
    String::from(&self_discovery)
  • edit in src/xmpp/xmpp_connection.rs at line 1415
    [18.3038]
    [18.3038]
    info!("Sending self discovery... {:?}", self_discovery);
  • replacement in src/xmpp/stanzas.rs at line 1
    [2.32569][2.32570:32592]()
    use minidom::Element;
    [2.32569]
    [18.3810]
    use tokio_xmpp::Stanza;
  • replacement in src/xmpp/stanzas.rs at line 4
    [2.32699][2.32699:32756]()
    use xmpp_parsers::message::{Body, Message, MessageType};
    [2.32699]
    [2.32756]
    use xmpp_parsers::message::{Message, MessageType};
  • edit in src/xmpp/stanzas.rs at line 10
    [2.33030]
    [2.33064]
    use xmpp_parsers::{jid, minidom::Element};
  • replacement in src/xmpp/stanzas.rs at line 12
    [2.33065][2.33065:33153]()
    pub fn make_presence(id: String, show: Option<PresenceShow>, text: String) -> Element {
    [2.33065]
    [2.33153]
    pub fn make_presence(id: String, show: Option<PresenceShow>, text: String) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 16
    [2.33265][2.33265:33341]()
    presence.statuses.insert(String::from("en"), text);
    presence.into()
    [2.33265]
    [2.33341]
    presence
    .statuses
    .insert(xmpp_parsers::message::Lang(String::from("en")), text);
    Stanza::Presence(presence)
  • replacement in src/xmpp/stanzas.rs at line 22
    [2.33344][2.33344:33408]()
    pub fn make_get_roster(id: &str) -> Element {
    Iq::from_get(
    [2.33344]
    [2.33408]
    pub fn make_get_roster(id: &str) -> Stanza {
    Stanza::Iq(Iq::from_get(
  • replacement in src/xmpp/stanzas.rs at line 29
    [2.33498][2.33498:33516]()
    )
    .into()
    [2.33498]
    [2.33516]
    ))
  • replacement in src/xmpp/stanzas.rs at line 32
    [2.33519][29.2860:2925](),[29.2925][2.33593:33611](),[2.33593][2.33593:33611]()
    pub fn make_add_roster(id: &str, jid: jid::BareJid) -> Element {
    Iq::from_set(
    [2.33519]
    [2.33611]
    pub fn make_add_roster(id: &str, jid: jid::BareJid) -> Stanza {
    Stanza::Iq(Iq::from_set(
  • replacement in src/xmpp/stanzas.rs at line 45
    [2.33928][2.33928:33946]()
    )
    .into()
    [2.33928]
    [2.33946]
    ))
  • replacement in src/xmpp/stanzas.rs at line 49
    [29.3019][2.34071:34137](),[2.34071][2.34071:34137](),[2.34137][29.3020:3066](),[28.2959][2.34167:34187](),[29.3066][2.34167:34187](),[2.34167][2.34167:34187]()
    let mut answer = Iq::from_result(id, None as Option<Roster>);
    answer.from = Some(jid::Jid::from(from));
    answer.to = to;
    [29.3019]
    [2.34187]
    let mut answer = Iq::from_result(id, None as Option<Roster>).with_from(jid::Jid::from(from));
    if let Some(to) = to {
    answer = answer.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 56
    [2.34201][29.3067:3133]()
    pub fn make_ask_subscribe(id: String, jid: jid::Jid) -> Element {
    [2.34201]
    [2.34276]
    pub fn make_ask_subscribe(id: String, jid: jid::Jid) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 60
    [2.34396][2.34396:34416]()
    presence.into()
    [2.34396]
    [2.34416]
    Stanza::Presence(presence)
  • replacement in src/xmpp/stanzas.rs at line 63
    [2.34419][29.3134:3202]()
    pub fn make_allow_subscribe(id: String, jid: jid::Jid) -> Element {
    [2.34419]
    [2.34496]
    pub fn make_allow_subscribe(id: String, jid: jid::Jid) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 67
    [2.34617][2.34617:34637]()
    presence.into()
    [2.34617]
    [2.34637]
    Stanza::Presence(presence)
  • replacement in src/xmpp/stanzas.rs at line 70
    [2.34640][29.3203:3282]()
    pub fn make_chat_message(id: String, jid: jid::Jid, text: String) -> Element {
    [2.34640]
    [2.34716]
    pub fn make_chat_message(id: String, jid: jid::Jid, text: String) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 72
    [2.34763][14.1060:1087](),[14.1087][2.34763:34817](),[2.34763][2.34763:34817]()
    message.id = Some(id);
    message.bodies.insert(String::new(), Body(text));
    [2.34763]
    [2.34817]
    message.id = Some(xmpp_parsers::message::Id(id));
    message
    .bodies
    .insert(xmpp_parsers::message::Lang::new(), text);
  • replacement in src/xmpp/stanzas.rs at line 80
    [14.1176][2.34856:34875](),[2.34856][2.34856:34875]()
    message.into()
    [14.1176]
    [2.34875]
    Stanza::Message(message)
  • replacement in src/xmpp/stanzas.rs at line 89
    [2.35032][2.35032:35047]()
    ) -> Element {
    [2.35032]
    [2.35047]
    ) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 96
    [2.35262][2.35262:35322]()
    presence.statuses.insert(String::from("en"), text);
    [2.35262]
    [2.35322]
    presence
    .statuses
    .insert(xmpp_parsers::message::Lang(String::from("en")), text);
  • replacement in src/xmpp/stanzas.rs at line 101
    [2.35385][2.35385:35405]()
    presence.into()
    [2.35385]
    [2.35405]
    Stanza::Presence(presence)
  • replacement in src/xmpp/stanzas.rs at line 104
    [2.35408][34.465:546](),[34.546][29.3492:3554](),[29.3492][29.3492:3554](),[29.3554][34.547:574](),[34.574][2.35546:35663](),[28.3285][2.35546:35663](),[29.3554][2.35546:35663](),[2.35546][2.35546:35663]()
    pub fn make_muc_message(id: String, to: jid::FullJid, text: String) -> Element {
    let mut message = Message::new(Some(jid::Jid::from(to)));
    message.id = Some(id);
    message.bodies.insert(String::new(), Body(text));
    message.type_ = MessageType::Groupchat;
    message.into()
    [2.35408]
    [2.35663]
    pub fn make_muc_message(id: String, to: jid::FullJid, text: String) -> Stanza {
    let mut message =
    Message::groupchat(jid::Jid::from(to)).with_body(xmpp_parsers::message::Lang::new(), text);
    message.id = Some(xmpp_parsers::message::Id(id));
    Stanza::Message(message)
  • replacement in src/xmpp/stanzas.rs at line 118
    [2.35906][29.3630:3712]()
    pub fn make_ping(id: &str, from: jid::Jid, to: Option<jid::BareJid>) -> Element {
    [2.35906]
    [2.35971]
    pub fn make_ping(id: &str, from: jid::Jid, to: Option<jid::BareJid>) -> Stanza {
  • replacement in src/xmpp/stanzas.rs at line 124
    [2.36103][2.36103:36119]()
    ping.into()
    [2.36103]
    [2.36119]
    Stanza::Iq(ping)
  • replacement in src/xmpp/stanzas.rs at line 128
    [28.3630][2.36215:36279](),[29.3906][2.36215:36279](),[2.36215][2.36215:36279](),[2.36279][29.3907:3951](),[28.3684][2.36307:36325](),[29.3951][2.36307:36325](),[2.36307][2.36307:36325]()
    let mut pong = Iq::from_result(id, None as Option<Roster>);
    pong.from = Some(jid::Jid::from(from));
    pong.to = to;
    [29.3906]
    [2.36325]
    let mut pong = Iq::from_result(id, None as Option<Roster>).with_from(jid::Jid::from(from));
    if let Some(to) = to {
    pong = pong.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 143
    [2.36636][2.36636:36643](),[2.36643][29.4035:4082](),[28.3842][2.36674:36695](),[29.4082][2.36674:36695](),[2.36674][2.36674:36695]()
    );
    version.from = Some(jid::Jid::from(from));
    version.to = to;
    [2.36636]
    [2.36695]
    )
    .with_from(jid::Jid::from(from));
    if let Some(to) = to {
    version = version.with_to(to);
    }
  • edit in src/xmpp/stanzas.rs at line 160
    [2.37126][29.4232:4269]()
    alternate_address: None,
  • replacement in src/xmpp/stanzas.rs at line 161
    [2.37137][2.37137:37144](),[2.37144][29.4270:4315](),[28.3993][2.37173:37192](),[29.4315][2.37173:37192](),[2.37173][2.37173:37192]()
    );
    error.from = Some(jid::Jid::from(from));
    error.to = to;
    [2.37137]
    [2.37192]
    )
    .with_from(jid::Jid::from(from));
    if let Some(to) = to {
    error = error.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 193
    [2.38063][2.38063:38070](),[2.38070][29.4409:4455](),[28.4083][2.38100:38120](),[29.4455][2.38100:38120](),[2.38100][2.38100:38120]()
    );
    result.from = Some(jid::Jid::from(from));
    result.to = to;
    [2.38063]
    [2.38120]
    )
    .with_from(jid::Jid::from(from));
    if let Some(to) = to {
    result = result.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 209
    [2.38401][2.38401:38408](),[2.38408][29.4574:4620](),[28.4173][2.38438:38458](),[29.4620][2.38438:38458](),[2.38438][2.38438:38458]()
    );
    result.from = Some(jid::Jid::from(from));
    result.to = to;
    [2.38401]
    [2.38458]
    )
    .with_from(jid::Jid::from(from));
    if let Some(to) = to {
    result = result.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 225
    [2.38792][2.38792:38799](),[2.38799][29.4741:4787](),[28.4263][2.38829:38849](),[29.4787][2.38829:38849](),[2.38829][2.38829:38849]()
    );
    result.from = Some(jid::Jid::from(from));
    result.to = to;
    [2.38792]
    [2.38849]
    )
    .with_from(jid::Jid::from(from));
    if let Some(to) = to {
    result = result.with_to(to);
    }
  • replacement in src/xmpp/stanzas.rs at line 233
    [18.3909][29.4788:4881](),[29.4881][18.4035:4155](),[18.4035][18.4035:4155]()
    pub fn make_disco_get(id: String, from: Option<jid::Jid>, to: Option<jid::Jid>) -> Element {
    let mut get = Iq::from_get(id, DiscoInfoQuery { node: None });
    get.from = from;
    get.to = to;
    get.into()
    [18.3909]
    [18.4155]
    pub fn make_disco_get(id: String, from: jid::Jid, to: jid::Jid) -> Stanza {
    let get = Iq::from_get(id, DiscoInfoQuery { node: None })
    .with_to(to)
    .with_from(from);
    Stanza::Iq(get)
  • replacement in src/main.rs at line 34
    [2.44028][30.525:597]()
    fn req_xmpp_to(req: &HttpRequest) -> Result<jid::Jid, failure::Error> {
    [2.44028]
    [30.597]
    fn req_xmpp_to(req: &HttpRequest) -> Result<xmpp_parsers::jid::Jid, failure::Error> {
  • replacement in src/main.rs at line 36
    [30.651][30.651:732]()
    let xmpp_to_res: Result<jid::Jid, failure::Error> = xmpp_to_opt.map_or_else(
    [30.651]
    [30.732]
    let xmpp_to_res: Result<xmpp_parsers::jid::Jid, failure::Error> = xmpp_to_opt.map_or_else(
  • replacement in src/main.rs at line 90
    [30.2442][30.2442:2516](),[30.2516][2.44897:44952](),[2.44897][2.44897:44952](),[2.44952][30.2517:2722]()
    |show| {
    std::str::from_utf8(show.as_bytes())
    .map_err(std::convert::Into::into)
    .and_then(|s| {
    std::str::FromStr::from_str(s)
    .map_err(|e| failure::format_err!("Incorrect presence {}", e))
    })
    [30.2442]
    [2.45052]
    |_| {
    Ok(xmpp_parsers::presence::Show::Chat) // ToDo: convert argument
  • replacement in src/config.rs at line 11
    [2.52645][29.4968:4995]()
    pub jid: jid::FullJid,
    [2.52645]
    [2.52677]
    pub jid: xmpp_parsers::jid::FullJid,
  • replacement in src/config.rs at line 14
    [2.52767][29.4996:5046]()
    pub chatrooms: HashMap<String, jid::FullJid>,
    [2.52767]
    [2.52822]
    pub chatrooms: HashMap<String, xmpp_parsers::jid::FullJid>,
  • replacement in src/config.rs at line 35
    [2.53245][29.5047:5125]()
    fn deserialize_jid<'de, D>(deserializer: D) -> Result<jid::FullJid, D::Error>
    [2.53245]
    [2.53328]
    fn deserialize_jid<'de, D>(deserializer: D) -> Result<xmpp_parsers::jid::FullJid, D::Error>
  • replacement in src/config.rs at line 44
    [2.53518][29.5126:5225]()
    fn deserialize_jid_map<'de, D>(deserializer: D) -> Result<HashMap<String, jid::FullJid>, D::Error>
    [2.53518]
    [2.53629]
    fn deserialize_jid_map<'de, D>(
    deserializer: D,
    ) -> Result<HashMap<String, xmpp_parsers::jid::FullJid>, D::Error>
  • replacement in Cargo.toml at line 12
    [16.1267][29.5226:5247]()
    tokio-xmpp = "4.0.0"
    [16.1267]
    [2.69221]
    tokio-xmpp = "5.0.0"
  • replacement in Cargo.toml at line 14
    [2.69239][29.5248:5261]()
    toml = "0.8"
    [2.69239]
    [2.69267]
    toml = "1"
  • replacement in Cargo.toml at line 20
    [31.333][29.5262:5350](),[18.4299][29.5262:5350]()
    xmpp-parsers = "0.21.0"
    jid = "=0.11.1" # xmpp-parsers
    minidom = "=0.16" # xmpp-parsers
    [31.333]
    [2.69404]
    xmpp-parsers = "0.22"
    #jid = "=0.11.1" # xmpp-parsers
    #minidom = "=0.16" # xmpp-parsers
  • edit in Cargo.lock at line 398
    [30.11414]
    [2.74196]
    name = "bumpalo"
    version = "3.20.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
    [[package]]
  • edit in Cargo.lock at line 547
    [30.11897]
    [17.1484]
    name = "core-foundation"
    version = "0.10.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
    dependencies = [
    "core-foundation-sys",
    "libc",
    ]
    [[package]]
    name = "core-foundation-sys"
    version = "0.8.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
    [[package]]
  • edit in Cargo.lock at line 587
    [30.12106]
    [30.12106]
    ]
    [[package]]
    name = "critical-section"
    version = "1.2.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
    [[package]]
    name = "crossbeam-channel"
    version = "0.5.15"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
    dependencies = [
    "crossbeam-utils",
  • edit in Cargo.lock at line 605
    [30.12121]
    [22.1365]
    name = "crossbeam-epoch"
    version = "0.9.18"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
    dependencies = [
    "crossbeam-utils",
    ]
    [[package]]
    name = "crossbeam-utils"
    version = "0.8.21"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
    [[package]]
  • replacement in Cargo.lock at line 1023
    [29.8337][29.8337:8356]()
    version = "0.24.4"
    [29.8337]
    [29.8356]
    version = "0.25.2"
  • replacement in Cargo.lock at line 1025
    [29.8421][29.8421:8499]()
    checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248"
    [29.8421]
    [29.8499]
    checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
  • replacement in Cargo.lock at line 1037
    [29.8664][36.8638:8653]()
    "rand 0.8.6",
    [29.8664]
    [29.8673]
    "rand 0.9.4",
    "ring",
  • replacement in Cargo.lock at line 1048
    [29.8770][29.8770:8789]()
    version = "0.24.4"
    [29.8770]
    [29.8789]
    version = "0.25.2"
  • replacement in Cargo.lock at line 1050
    [29.8854][29.8854:8932]()
    checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e"
    [29.8854]
    [29.8932]
    checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a"
  • replacement in Cargo.lock at line 1056
    [29.9008][29.9008:9022]()
    "lru-cache",
    [29.9008]
    [29.9022]
    "moka",
  • replacement in Cargo.lock at line 1059
    [29.9052][36.8654:8669]()
    "rand 0.8.6",
    [29.9052]
    [29.9061]
    "rand 0.9.4",
  • replacement in Cargo.lock at line 1268
    [2.87393][29.9599:9618]()
    version = "0.11.1"
    [2.87393]
    [2.87411]
    version = "0.12.2"
  • replacement in Cargo.lock at line 1270
    [2.87476][29.9619:9697]()
    checksum = "2cc0defda507f1e140ce2c1c670565c7c0b9bda8ae994a3c0478a53b5279b46b"
    [2.87476]
    [2.87554]
    checksum = "81ca0d30cb97e4fabbfc06b6b0eeadc3f2e545160d6ca45054b2dd078ade79bc"
  • edit in Cargo.lock at line 1272
    [2.87571]
    [28.14991]
    "idna",
  • edit in Cargo.lock at line 1313
    [29.9920]
    [2.87598]
    name = "js-sys"
    version = "0.3.100"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162"
    dependencies = [
    "cfg-if",
    "futures-util",
    "wasm-bindgen",
    ]
    [[package]]
  • edit in Cargo.lock at line 1355
    [4.1794][2.88408:88446](),[24.1798][2.88408:88446](),[20.2863][2.88408:88446](),[3.3734][2.88408:88446](),[22.4430][2.88408:88446](),[17.4621][2.88408:88446](),[16.5398][2.88408:88446](),[29.10365][2.88408:88446](),[36.11321][2.88408:88446](),[28.15349][2.88408:88446](),[2.88408][2.88408:88446](),[2.88446][22.4431:4449](),[22.4449][2.88464:88529](),[16.5417][2.88464:88529](),[2.88464][2.88464:88529](),[2.88529][22.4450:4528]()
    [[package]]
    name = "linked-hash-map"
    version = "0.5.6"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
  • edit in Cargo.lock at line 1393
    [36.11617][2.88825:89057](),[28.15936][2.88825:89057](),[2.88825][2.88825:89057]()
    [[package]]
    name = "lru-cache"
    version = "0.1.2"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
    dependencies = [
    "linked-hash-map",
    ]
  • replacement in Cargo.lock at line 1408
    [2.90191][29.10465:10484]()
    version = "0.16.0"
    [2.90191]
    [16.5853]
    version = "0.18.0"
  • replacement in Cargo.lock at line 1410
    [16.5918][29.10485:10563]()
    checksum = "e394a0e3c7ccc2daea3dffabe82f09857b6b510cb25af87d54bf3e910ac1642d"
    [16.5918]
    [2.90313]
    checksum = "040b4e38f8abd85ddf9ea00646accc716b9d15e283b0aacb16f697ddba432c97"
  • edit in Cargo.lock at line 1413
    [22.4945]
    [2.90344]
    "thiserror",
  • edit in Cargo.lock at line 1439
    [30.14967]
    [30.14967]
    name = "moka"
    version = "0.12.15"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046"
    dependencies = [
    "crossbeam-channel",
    "crossbeam-epoch",
    "crossbeam-utils",
    "equivalent",
    "parking_lot",
    "portable-atomic",
    "smallvec",
    "tagptr",
    "uuid",
    ]
    [[package]]
  • edit in Cargo.lock at line 1484
    [36.12258]
    [36.12258]
    dependencies = [
    "critical-section",
    "portable-atomic",
    ]
  • edit in Cargo.lock at line 1496
    [2.94235]
    [16.6934]
    name = "openssl-probe"
    version = "0.2.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
    [[package]]
  • replacement in Cargo.lock at line 1652
    [2.98652][36.14105:14123]()
    version = "0.8.6"
    [2.98652]
    [2.98670]
    version = "0.9.4"
  • replacement in Cargo.lock at line 1654
    [2.98735][36.14124:14202]()
    checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
    [2.98735]
    [2.98813]
    checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
  • edit in Cargo.lock at line 1656
    [16.8382][2.98844:98853](),[2.98844][2.98844:98853]()
    "libc",
  • replacement in Cargo.lock at line 1657
    [36.14219][30.15747:15767](),[30.15747][30.15747:15767]()
    "rand_core 0.6.4",
    [36.14219]
    [30.15767]
    "rand_core 0.9.5",
  • replacement in Cargo.lock at line 1673
    [16.8723][17.7061:7079]()
    version = "0.3.1"
    [2.98950]
    [2.99215]
    version = "0.9.0"
  • replacement in Cargo.lock at line 1675
    [2.99280][17.7080:7158]()
    checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
    [2.99280]
    [2.99358]
    checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
  • replacement in Cargo.lock at line 1678
    [16.8836][30.16030:16050]()
    "rand_core 0.6.4",
    [16.8836]
    [2.99395]
    "rand_core 0.9.5",
  • replacement in Cargo.lock at line 1683
    [2.99429][28.18798:18816]()
    version = "0.6.4"
    [2.99429]
    [2.99640]
    version = "0.9.5"
  • replacement in Cargo.lock at line 1685
    [2.99705][28.18817:18895]()
    checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
    [2.99705]
    [30.16300]
    checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
  • replacement in Cargo.lock at line 1687
    [30.16317][36.14374:14395]()
    "getrandom 0.2.17",
    [30.16317]
    [30.16338]
    "getrandom 0.3.4",
  • replacement in Cargo.lock at line 1707
    [2.101030][36.14594:14613]()
    version = "1.12.3"
    [2.101030]
    [2.101048]
    version = "1.12.4"
  • replacement in Cargo.lock at line 1709
    [2.101113][36.14614:14692]()
    checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
    [2.101113]
    [2.101191]
    checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
  • replacement in Cargo.lock at line 1736
    [28.19364][36.14890:14909]()
    version = "0.8.10"
    [28.19364]
    [2.101524]
    version = "0.8.11"
  • replacement in Cargo.lock at line 1738
    [2.101589][36.14910:14988]()
    checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
    [2.101589]
    [2.101703]
    checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
  • edit in Cargo.lock at line 1791
    [29.12011]
    [29.12011]
    name = "rustls-native-certs"
    version = "0.8.4"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"
    dependencies = [
    "openssl-probe",
    "rustls-pki-types",
    "schannel",
    "security-framework",
    ]
    [[package]]
  • replacement in Cargo.lock at line 1831
    [22.7427][29.12671:12690]()
    version = "0.11.1"
    [22.7427]
    [22.7445]
    version = "0.13.3"
  • replacement in Cargo.lock at line 1833
    [22.7510][29.12691:12769]()
    checksum = "65bc94b580d0f5a6b7a2d604e597513d3c673154b52ddeccd1d5c32360d945ee"
    [22.7510]
    [22.7588]
    checksum = "f288457ad3607c08953ca5604229ebb03878a0b4491d8f545d547281c2b3e0c5"
  • edit in Cargo.lock at line 1836
    [22.7615]
    [22.7615]
    "futures-core",
  • edit in Cargo.lock at line 1838
    [22.7636]
    [22.7636]
    "rxml_proc",
  • edit in Cargo.lock at line 1841
    [22.7682]
    [22.7682]
    ]
    [[package]]
    name = "rxml_proc"
    version = "0.12.1"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "d46a2e263a1beb8b39e69bffee9f2395f479cc02472c247af00e065006970ca7"
    dependencies = [
    "quote",
    "rxml_validation",
    "syn 2.0.117",
  • edit in Cargo.lock at line 1881
    [28.20398]
    [2.102863]
    ]
    [[package]]
    name = "schannel"
    version = "0.1.29"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
    dependencies = [
    "windows-sys 0.61.2",
  • edit in Cargo.lock at line 1899
    [16.10524]
    [36.15878]
    name = "security-framework"
    version = "3.7.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
    dependencies = [
    "bitflags",
    "core-foundation",
    "core-foundation-sys",
    "libc",
    "security-framework-sys",
    ]
    [[package]]
    name = "security-framework-sys"
    version = "2.17.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
    dependencies = [
    "core-foundation-sys",
    "libc",
    ]
    [[package]]
  • edit in Cargo.lock at line 1936
    [2.103572][28.20937:20945]()
    "jid",
  • edit in Cargo.lock at line 1938
    [2.103596][2.103596:103608]()
    "minidom",
  • replacement in Cargo.lock at line 1991
    [29.13141][36.16643:16661]()
    version = "0.6.9"
    [29.13141]
    [29.13159]
    version = "1.1.1"
  • replacement in Cargo.lock at line 1993
    [29.13224][36.16662:16740]()
    checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
    [29.13224]
    [30.17063]
    checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
  • replacement in Cargo.lock at line 1995
    [30.17080][30.17080:17090]()
    "serde",
    [30.17080]
    [30.17090]
    "serde_core",
  • edit in Cargo.lock at line 2188
    [28.23362]
    [2.109586]
    name = "tagptr"
    version = "0.2.0"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
    [[package]]
  • replacement in Cargo.lock at line 2195
    [2.109605][28.23728:23747]()
    version = "1.0.69"
    [2.109605]
    [2.109624]
    version = "2.0.18"
  • replacement in Cargo.lock at line 2197
    [2.109689][28.23748:23826]()
    checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
    [2.109689]
    [2.109767]
    checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
  • replacement in Cargo.lock at line 2204
    [2.109842][28.23827:23846]()
    version = "1.0.69"
    [2.109842]
    [2.109861]
    version = "2.0.18"
  • replacement in Cargo.lock at line 2206
    [2.109926][28.23847:23925]()
    checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
    [2.109926]
    [2.110004]
    checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
  • edit in Cargo.lock at line 2316
    [2.111648]
    [2.111648]
    "tokio-util",
  • replacement in Cargo.lock at line 2334
    [2.111979][29.13478:13496]()
    version = "4.0.0"
    [2.111979]
    [16.13511]
    version = "5.0.0"
  • replacement in Cargo.lock at line 2336
    [16.13576][29.13497:13575]()
    checksum = "c8f8ac72971d5c993971490239c6fa7306bf5e699d39c6bc2775bdb98d590c7c"
    [16.13576]
    [2.112100]
    checksum = "02e578261f0b29dd069638e34c4807ed5e029183cbb62bb9d7d374de7d2db628"
  • replacement in Cargo.lock at line 2343
    [2.112156][22.11345:11357](),[22.11357][36.19441:19456]()
    "minidom",
    "rand 0.8.6",
    [2.112156]
    [22.11358]
    "pin-project-lite",
    "rand 0.9.4",
    "rustls-native-certs",
  • edit in Cargo.lock at line 2348
    [2.112180]
    [2.112180]
    "thiserror",
  • edit in Cargo.lock at line 2352
    [16.13712][28.25062:25077](),[28.25077][33.5387:5412]()
    "tokio-util",
    "webpki-roots 0.26.11",
  • edit in Cargo.lock at line 2353
    [2.112292]
    [2.112292]
    "xso",
  • replacement in Cargo.lock at line 2358
    [2.112321][36.19457:19476]()
    version = "0.8.23"
    [2.112321]
    [2.112339]
    version = "1.1.2+spec-1.1.0"
  • replacement in Cargo.lock at line 2360
    [2.112404][36.19477:19555]()
    checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
    [2.112404]
    [29.13741]
    checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
  • replacement in Cargo.lock at line 2362
    [29.13758][29.13758:13768]()
    "serde",
    [29.13758]
    [29.13768]
    "indexmap",
    "serde_core",
  • replacement in Cargo.lock at line 2366
    [29.13804][29.13804:13818]()
    "toml_edit",
    [29.13804]
    [29.13818]
    "toml_parser",
    "toml_writer",
    "winnow",
  • replacement in Cargo.lock at line 2373
    [29.13856][36.19556:19575]()
    version = "0.6.11"
    [29.13856]
    [29.13874]
    version = "1.1.1+spec-1.1.0"
  • replacement in Cargo.lock at line 2375
    [29.13939][36.19576:19654]()
    checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
    [29.13939]
    [2.112482]
    checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
  • replacement in Cargo.lock at line 2377
    [2.112499][2.112499:112509]()
    "serde",
    [2.112499]
    [29.14018]
    "serde_core",
  • replacement in Cargo.lock at line 2381
    [29.14033][29.14033:14052](),[29.14052][36.19655:19675]()
    name = "toml_edit"
    version = "0.22.27"
    [29.14033]
    [29.14072]
    name = "toml_parser"
    version = "1.1.2+spec-1.1.0"
  • replacement in Cargo.lock at line 2384
    [29.14137][36.19676:19754]()
    checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
    [29.14137]
    [29.14215]
    checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
  • edit in Cargo.lock at line 2386
    [29.14232][31.4031:4044](),[31.4044][29.14251:14297](),[29.14251][29.14251:14297](),[29.14297][33.5710:5725]()
    "indexmap",
    "serde",
    "serde_spanned",
    "toml_datetime",
    "toml_write",
  • replacement in Cargo.lock at line 2390
    [33.5739][33.5739:5759](),[33.5759][36.19755:19773]()
    name = "toml_write"
    version = "0.1.2"
    [33.5739]
    [33.5777]
    name = "toml_writer"
    version = "1.1.1+spec-1.1.0"
  • replacement in Cargo.lock at line 2393
    [33.5842][36.19774:19852]()
    checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
    [33.5842]
    [2.112511]
    checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
  • edit in Cargo.lock at line 2503
    [31.4238]
    [2.116232]
    name = "uuid"
    version = "1.23.3"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
    dependencies = [
    "getrandom 0.4.2",
    "js-sys",
    "wasm-bindgen",
    ]
    [[package]]
  • edit in Cargo.lock at line 2544
    [36.21418]
    [36.21418]
    name = "wasm-bindgen"
    version = "0.2.123"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563"
    dependencies = [
    "cfg-if",
    "once_cell",
    "rustversion",
    "wasm-bindgen-macro",
    "wasm-bindgen-shared",
    ]
    [[package]]
    name = "wasm-bindgen-macro"
    version = "0.2.123"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc"
    dependencies = [
    "quote",
    "wasm-bindgen-macro-support",
    ]
    [[package]]
    name = "wasm-bindgen-macro-support"
    version = "0.2.123"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b"
    dependencies = [
    "bumpalo",
    "proc-macro2",
    "quote",
    "syn 2.0.117",
    "wasm-bindgen-shared",
    ]
    [[package]]
    name = "wasm-bindgen-shared"
    version = "0.2.123"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92"
    dependencies = [
    "unicode-ident",
    ]
    [[package]]
  • edit in Cargo.lock at line 2620
    [36.22196][30.18386:18388](),[30.18386][30.18386:18388](),[22.12567][2.117067:117080](),[16.14709][2.117067:117080](),[30.18388][2.117067:117080](),[2.117067][2.117067:117080](),[2.117080][29.14513:14535](),[29.14535][33.5938:6118](),[33.6118][36.22197:22220]()
    ]
    [[package]]
    name = "webpki-roots"
    version = "0.26.11"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
    dependencies = [
    "webpki-roots 1.0.7",
  • edit in Cargo.lock at line 2623
    [33.6156][33.6156:6178](),[33.6178][36.22221:22239](),[33.6196][28.27523:27588](),[29.14554][28.27523:27588](),[36.22239][28.27523:27588](),[28.27523][28.27523:27588](),[28.27588][36.22240:22318](),[33.6275][28.27666:27683](),[29.14633][28.27666:27683](),[36.22318][28.27666:27683](),[28.27666][28.27666:27683](),[28.27683][29.14634:14657](),[29.14657][36.22319:22332]()
    name = "webpki-roots"
    version = "1.0.7"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d"
    dependencies = [
    "rustls-pki-types",
    ]
    [[package]]
  • replacement in Cargo.lock at line 2747
    [36.23963][36.23963:23982]()
    version = "0.7.15"
    [36.23963]
    [28.31841]
    version = "1.0.3"
  • replacement in Cargo.lock at line 2749
    [28.31906][36.23983:24091]()
    checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
    dependencies = [
    "memchr",
    ]
    [28.31906]
    [22.13538]
    checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
  • replacement in Cargo.lock at line 2853
    [2.119334][29.15185:15204]()
    version = "0.21.0"
    [2.119334]
    [16.14753]
    version = "0.22.0"
  • replacement in Cargo.lock at line 2855
    [16.14818][29.15205:15283]()
    checksum = "ab9890d7a3df540a6a8a7384fa3db58be3a4685799e0271756b26213d3f67903"
    [16.14818]
    [2.119456]
    checksum = "3d3fbca6d2a48e263c53479ba7cc198724a52fcac066f63f08ec2084b4455b9b"
  • edit in Cargo.lock at line 2862
    [2.119538]
    [2.119538]
    "log",
  • edit in Cargo.lock at line 2864
    [2.119550]
    [36.25775]
    "serde_json",
  • edit in Cargo.lock at line 2868
    [2.119590]
    [29.15296]
    "uuid",
  • replacement in Cargo.lock at line 2874
    [29.15332][29.15332:15350]()
    version = "0.1.2"
    [29.15332]
    [29.15350]
    version = "0.3.0"
  • replacement in Cargo.lock at line 2876
    [29.15415][29.15415:15493]()
    checksum = "4c1e554e5e6689a0ec1b62a3b5ed450a1bb45118553a9665f4ee2277d135ba83"
    [29.15415]
    [29.15493]
    checksum = "71699b74d769a35bd2b1dad02a3861bb4fe907d510b86230230d5d2bb1aac7c3"
  • edit in Cargo.lock at line 2879
    [29.15521]
    [29.15521]
    "bytes",
  • edit in Cargo.lock at line 2883
    [29.15550]
    [29.15550]
    "serde_json",
    "uuid",
  • replacement in Cargo.lock at line 2890
    [29.15582][29.15582:15600]()
    version = "0.1.0"
    [29.15582]
    [29.15600]
    version = "0.2.0"
  • replacement in Cargo.lock at line 2892
    [29.15665][29.15665:15743]()
    checksum = "ef695815a751e37fc0d78b4b1c1d8b669db7cf826f39d5a8c95df396a54f09d6"
    [29.15665]
    [29.15743]
    checksum = "3500ced69bcf662565b866595ad4a64773906a339f554ab834cfb2e10c527df9"
  • replacement in Cargo.lock at line 2925
    [28.34001][36.26022:26041]()
    version = "0.8.50"
    [28.34001]
    [28.34020]
    version = "0.8.52"
  • replacement in Cargo.lock at line 2927
    [28.34085][36.26042:26120]()
    checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
    [28.34085]
    [28.34163]
    checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
  • replacement in Cargo.lock at line 2934
    [28.34240][36.26121:26140]()
    version = "0.8.50"
    [28.34240]
    [28.34259]
    version = "0.8.52"
  • replacement in Cargo.lock at line 2936
    [28.34324][36.26141:26219]()
    checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
    [28.34324]
    [28.34402]
    checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"