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;
+ use tokio_xmpp::Client;
edit in src/xmpp/xmpp_connection.rs at line 14
+ use xmpp_parsers::{jid, minidom};
+
edit in src/xmpp/xmpp_connection.rs at line 147
+ 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);
+ 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>,
+ send_queue: VecDeque<tokio_xmpp::Stanza>,
replacement in src/xmpp/xmpp_connection.rs at line 316
[2.6139]→[29.585:625](∅→∅) − client: SimpleClient<ServerConfig>,
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(
+ 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(()));
− }
− };
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 {
+ 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) => {
+ 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
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);
+ 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);
+ 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);
+ 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);
+ 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) {
+ 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](∅→∅) replacement in src/xmpp/xmpp_connection.rs at line 743
[2.20164]→[2.20164:20235](∅→∅) − return data.handler.result(self, opt_element);
+ return data.handler.result(self, payload);
replacement in src/xmpp/xmpp_connection.rs at line 747
[2.20364]→[2.20364:20399](∅→∅) 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))
+ 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
+ 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;
− }
+ {
+ 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) =
+ 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
− );
− }
− }
+ && !mailbox.is_empty()
+ {
+ error!(
+ "Removed {} undeliverable messages for {}",
+ mailbox.len(),
+ from
+ );
replacement in src/xmpp/xmpp_connection.rs at line 887
− if Self::compare_jid_to_full_jid(&message.to, &self.account.jid) {
− if let Some(room) = self
+ 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);
− }
+ {
+ 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
+ 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
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,
+ 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));
+ 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));
+ 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));
+ 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 }));
+ 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);
+ 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
+ } 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(),
− ));
− }
+ 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);
+ 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);
+ 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
+ } 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));
+ 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())),
+ 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
+ info!("Sending self discovery... {:?}", self_discovery);
replacement in src/xmpp/stanzas.rs at line 1
[2.32569]→[2.32570:32592](∅→∅) + 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};
+ use xmpp_parsers::message::{Message, MessageType};
edit in src/xmpp/stanzas.rs at line 10
+ 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 {
+ 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()
+ 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(
+ 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](∅→∅) 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(
+ 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](∅→∅) 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;
+ 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 {
+ 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](∅→∅) + 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 {
+ 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](∅→∅) + 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 {
+ 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));
+ 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](∅→∅) + Stanza::Message(message)
replacement in src/xmpp/stanzas.rs at line 89
[2.35032]→[2.35032:35047](∅→∅) replacement in src/xmpp/stanzas.rs at line 96
[2.35262]→[2.35262:35322](∅→∅) − presence.statuses.insert(String::from("en"), text);
+ 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](∅→∅) + 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()
+ 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 {
+ 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](∅→∅) 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;
+ 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;
+ )
+ .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;
+ )
+ .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;
+ )
+ .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;
+ )
+ .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;
+ )
+ .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()
+ 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> {
+ 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(
+ 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))
− })
+ |_| {
+ Ok(xmpp_parsers::presence::Show::Chat) // ToDo: convert argument
replacement in src/config.rs at line 11
[2.52645]→[29.4968:4995](∅→∅) + 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>,
+ 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>
+ 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>
+ 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](∅→∅) replacement in Cargo.toml at line 14
[2.69239]→[29.5248:5261](∅→∅) 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
+ xmpp-parsers = "0.22"
+ #jid = "=0.11.1" # xmpp-parsers
+ #minidom = "=0.16" # xmpp-parsers
edit in Cargo.lock at line 398
+ 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
+ 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
+ ]
+
+ [[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
+ 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](∅→∅) replacement in Cargo.lock at line 1025
[29.8421]→[29.8421:8499](∅→∅) − checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248"
+ checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
replacement in Cargo.lock at line 1037
[29.8664]→[36.8638:8653](∅→∅) replacement in Cargo.lock at line 1048
[29.8770]→[29.8770:8789](∅→∅) replacement in Cargo.lock at line 1050
[29.8854]→[29.8854:8932](∅→∅) − checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e"
+ checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a"
replacement in Cargo.lock at line 1056
[29.9008]→[29.9008:9022](∅→∅) replacement in Cargo.lock at line 1059
[29.9052]→[36.8654:8669](∅→∅) replacement in Cargo.lock at line 1268
[2.87393]→[29.9599:9618](∅→∅) replacement in Cargo.lock at line 1270
[2.87476]→[29.9619:9697](∅→∅) − checksum = "2cc0defda507f1e140ce2c1c670565c7c0b9bda8ae994a3c0478a53b5279b46b"
+ checksum = "81ca0d30cb97e4fabbfc06b6b0eeadc3f2e545160d6ca45054b2dd078ade79bc"
edit in Cargo.lock at line 1272
edit in Cargo.lock at line 1313
+ 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](∅→∅) replacement in Cargo.lock at line 1410
[16.5918]→[29.10485:10563](∅→∅) − checksum = "e394a0e3c7ccc2daea3dffabe82f09857b6b510cb25af87d54bf3e910ac1642d"
+ checksum = "040b4e38f8abd85ddf9ea00646accc716b9d15e283b0aacb16f697ddba432c97"
edit in Cargo.lock at line 1413
edit in Cargo.lock at line 1439
+ 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
+ dependencies = [
+ "critical-section",
+ "portable-atomic",
+ ]
edit in Cargo.lock at line 1496
+ 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](∅→∅) replacement in Cargo.lock at line 1654
[2.98735]→[36.14124:14202](∅→∅) − checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
+ checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
edit in Cargo.lock at line 1656
[16.8382]→[2.98844:98853](∅→∅),
[2.98844]→[2.98844:98853](∅→∅) replacement in Cargo.lock at line 1657
[36.14219]→[30.15747:15767](∅→∅),
[30.15747]→[30.15747:15767](∅→∅) replacement in Cargo.lock at line 1673
[16.8723]→[17.7061:7079](∅→∅) replacement in Cargo.lock at line 1675
[2.99280]→[17.7080:7158](∅→∅) − checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+ checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
replacement in Cargo.lock at line 1678
[16.8836]→[30.16030:16050](∅→∅) replacement in Cargo.lock at line 1683
[2.99429]→[28.18798:18816](∅→∅) replacement in Cargo.lock at line 1685
[2.99705]→[28.18817:18895](∅→∅) − checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
replacement in Cargo.lock at line 1687
[30.16317]→[36.14374:14395](∅→∅) replacement in Cargo.lock at line 1707
[2.101030]→[36.14594:14613](∅→∅) replacement in Cargo.lock at line 1709
[2.101113]→[36.14614:14692](∅→∅) − checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
+ checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
replacement in Cargo.lock at line 1736
[28.19364]→[36.14890:14909](∅→∅) replacement in Cargo.lock at line 1738
[2.101589]→[36.14910:14988](∅→∅) − checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
+ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
edit in Cargo.lock at line 1791
+ 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](∅→∅) replacement in Cargo.lock at line 1833
[22.7510]→[29.12691:12769](∅→∅) − checksum = "65bc94b580d0f5a6b7a2d604e597513d3c673154b52ddeccd1d5c32360d945ee"
+ checksum = "f288457ad3607c08953ca5604229ebb03878a0b4491d8f545d547281c2b3e0c5"
edit in Cargo.lock at line 1836
edit in Cargo.lock at line 1838
edit in Cargo.lock at line 1841
+ ]
+
+ [[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
+ ]
+
+ [[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
+ 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](∅→∅) edit in Cargo.lock at line 1938
[2.103596]→[2.103596:103608](∅→∅) replacement in Cargo.lock at line 1991
[29.13141]→[36.16643:16661](∅→∅) replacement in Cargo.lock at line 1993
[29.13224]→[36.16662:16740](∅→∅) − checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+ checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
replacement in Cargo.lock at line 1995
[30.17080]→[30.17080:17090](∅→∅) edit in Cargo.lock at line 2188
+ 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](∅→∅) replacement in Cargo.lock at line 2197
[2.109689]→[28.23748:23826](∅→∅) − checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
replacement in Cargo.lock at line 2204
[2.109842]→[28.23827:23846](∅→∅) replacement in Cargo.lock at line 2206
[2.109926]→[28.23847:23925](∅→∅) − checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
edit in Cargo.lock at line 2316
replacement in Cargo.lock at line 2334
[2.111979]→[29.13478:13496](∅→∅) replacement in Cargo.lock at line 2336
[16.13576]→[29.13497:13575](∅→∅) − checksum = "c8f8ac72971d5c993971490239c6fa7306bf5e699d39c6bc2775bdb98d590c7c"
+ checksum = "02e578261f0b29dd069638e34c4807ed5e029183cbb62bb9d7d374de7d2db628"
replacement in Cargo.lock at line 2343
[2.112156]→[22.11345:11357](∅→∅),
[22.11357]→[36.19441:19456](∅→∅) − "minidom",
− "rand 0.8.6",
+ "pin-project-lite",
+ "rand 0.9.4",
+ "rustls-native-certs",
edit in Cargo.lock at line 2348
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
replacement in Cargo.lock at line 2358
[2.112321]→[36.19457:19476](∅→∅) + version = "1.1.2+spec-1.1.0"
replacement in Cargo.lock at line 2360
[2.112404]→[36.19477:19555](∅→∅) − checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
+ checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
replacement in Cargo.lock at line 2362
[29.13758]→[29.13758:13768](∅→∅) + "indexmap",
+ "serde_core",
replacement in Cargo.lock at line 2366
[29.13804]→[29.13804:13818](∅→∅) + "toml_parser",
+ "toml_writer",
+ "winnow",
replacement in Cargo.lock at line 2373
[29.13856]→[36.19556:19575](∅→∅) + version = "1.1.1+spec-1.1.0"
replacement in Cargo.lock at line 2375
[29.13939]→[36.19576:19654](∅→∅) − checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
+ checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
replacement in Cargo.lock at line 2377
[2.112499]→[2.112499:112509](∅→∅) replacement in Cargo.lock at line 2381
[29.14033]→[29.14033:14052](∅→∅),
[29.14052]→[36.19655:19675](∅→∅) − name = "toml_edit"
− version = "0.22.27"
+ 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"
+ 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"
+ 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"
+ checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
edit in Cargo.lock at line 2503
+ 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
+ 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](∅→∅) replacement in Cargo.lock at line 2749
[28.31906]→[36.23983:24091](∅→∅) − checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
− dependencies = [
− "memchr",
− ]
+ checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
replacement in Cargo.lock at line 2853
[2.119334]→[29.15185:15204](∅→∅) replacement in Cargo.lock at line 2855
[16.14818]→[29.15205:15283](∅→∅) − checksum = "ab9890d7a3df540a6a8a7384fa3db58be3a4685799e0271756b26213d3f67903"
+ checksum = "3d3fbca6d2a48e263c53479ba7cc198724a52fcac066f63f08ec2084b4455b9b"
edit in Cargo.lock at line 2862
edit in Cargo.lock at line 2864
edit in Cargo.lock at line 2868
replacement in Cargo.lock at line 2874
[29.15332]→[29.15332:15350](∅→∅) replacement in Cargo.lock at line 2876
[29.15415]→[29.15415:15493](∅→∅) − checksum = "4c1e554e5e6689a0ec1b62a3b5ed450a1bb45118553a9665f4ee2277d135ba83"
+ checksum = "71699b74d769a35bd2b1dad02a3861bb4fe907d510b86230230d5d2bb1aac7c3"
edit in Cargo.lock at line 2879
edit in Cargo.lock at line 2883
replacement in Cargo.lock at line 2890
[29.15582]→[29.15582:15600](∅→∅) replacement in Cargo.lock at line 2892
[29.15665]→[29.15665:15743](∅→∅) − checksum = "ef695815a751e37fc0d78b4b1c1d8b669db7cf826f39d5a8c95df396a54f09d6"
+ checksum = "3500ced69bcf662565b866595ad4a64773906a339f554ab834cfb2e10c527df9"
replacement in Cargo.lock at line 2925
[28.34001]→[36.26022:26041](∅→∅) replacement in Cargo.lock at line 2927
[28.34085]→[36.26042:26120](∅→∅) − checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
+ checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
replacement in Cargo.lock at line 2934
[28.34240]→[36.26121:26140](∅→∅) replacement in Cargo.lock at line 2936
[28.34324]→[36.26141:26219](∅→∅) − checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
+ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"