tokio-xmpp: clippy run
skip-changelog Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
1b635854ad
commit
23c947d081
14 changed files with 54 additions and 73 deletions
|
|
@ -57,7 +57,7 @@ pub async fn auth<S: AsyncBufRead + AsyncWrite + Unpin>(
|
|||
Nonza::Challenge(challenge) => {
|
||||
let response = mechanism
|
||||
.response(&challenge.data)
|
||||
.map_err(|e| AuthError::Sasl(e))?;
|
||||
.map_err(AuthError::Sasl)?;
|
||||
|
||||
// Send response and loop
|
||||
stream
|
||||
|
|
@ -110,7 +110,6 @@ pub async fn client_auth<C: ServerConnector>(
|
|||
timeouts: Timeouts,
|
||||
) -> Result<(StreamFeatures, XmppStream<C::Stream>), Error> {
|
||||
let username = jid.node().unwrap().as_str();
|
||||
let password = password;
|
||||
|
||||
let (xmpp_stream, channel_binding) = server.connect(&jid, ns::JABBER_CLIENT, timeouts).await?;
|
||||
let (features, xmpp_stream) = xmpp_stream.recv_features().await?;
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ impl Client {
|
|||
/// and yield events.
|
||||
pub fn new<J: Into<Jid>, P: Into<String>>(jid: J, password: P) -> Self {
|
||||
let jid = jid.into();
|
||||
let dns_config = DnsConfig::srv(&jid.domain().to_string(), "_xmpp-client._tcp", 5222);
|
||||
let dns_config = DnsConfig::srv(jid.domain().as_ref(), "_xmpp-client._tcp", 5222);
|
||||
Self::new_starttls(jid, password, dns_config, Timeouts::default())
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ impl DnsConfig {
|
|||
|
||||
#[cfg(feature = "dns")]
|
||||
async fn resolve_srv(host: &str, srv: &str, fallback_port: u16) -> Result<TcpStream, Error> {
|
||||
let ascii_domain = idna::domain_to_ascii(&host)?;
|
||||
let ascii_domain = idna::domain_to_ascii(host)?;
|
||||
|
||||
if let Ok(ip) = ascii_domain.parse() {
|
||||
debug!("Attempting connection to {ip}:{fallback_port}");
|
||||
|
|
@ -148,7 +148,7 @@ impl DnsConfig {
|
|||
|
||||
#[cfg(feature = "dns")]
|
||||
async fn resolve_no_srv(host: &str, port: u16) -> Result<TcpStream, Error> {
|
||||
let ascii_domain = idna::domain_to_ascii(&host)?;
|
||||
let ascii_domain = idna::domain_to_ascii(host)?;
|
||||
|
||||
if let Ok(ip) = ascii_domain.parse() {
|
||||
return Ok(TcpStream::connect(&SocketAddr::new(ip, port)).await?);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ impl ServerConnector for StartTlsServerConnector {
|
|||
channel_binding,
|
||||
))
|
||||
} else {
|
||||
Err(crate::Error::Protocol(ProtocolError::NoTls).into())
|
||||
Err(crate::Error::Protocol(ProtocolError::NoTls))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -168,7 +168,7 @@ async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin + AsRawFd>(
|
|||
let tls_stream = TlsConnector::from(Arc::new(config))
|
||||
.connect(domain, stream)
|
||||
.await
|
||||
.map_err(|e| Error::from(crate::Error::Io(e)))?;
|
||||
.map_err(crate::Error::Io)?;
|
||||
|
||||
// Extract the channel-binding information before we hand the stream over to ktls.
|
||||
let (_, connection) = tls_stream.get_ref();
|
||||
|
|
@ -178,7 +178,7 @@ async fn get_tls_stream<S: AsyncRead + AsyncWrite + Unpin + AsRawFd>(
|
|||
let data = vec![0u8; 32];
|
||||
let data = connection
|
||||
.export_keying_material(data, b"EXPORTER-Channel-Binding", None)
|
||||
.map_err(|e| StartTlsError::Tls(e))?;
|
||||
.map_err(StartTlsError::Tls)?;
|
||||
ChannelBinding::TlsExporter(data)
|
||||
}
|
||||
_ => ChannelBinding::None,
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ impl Stanza {
|
|||
pub fn ensure_id(&mut self) -> &str {
|
||||
match self {
|
||||
Self::Iq(iq) => {
|
||||
if iq.id.len() == 0 {
|
||||
if iq.id.is_empty() {
|
||||
iq.id = make_id();
|
||||
}
|
||||
&iq.id
|
||||
|
|
@ -136,10 +136,7 @@ pub enum Event {
|
|||
impl Event {
|
||||
/// `Online` event?
|
||||
pub fn is_online(&self) -> bool {
|
||||
match *self {
|
||||
Event::Online { .. } => true,
|
||||
_ => false,
|
||||
}
|
||||
matches!(&self, Event::Online { .. })
|
||||
}
|
||||
|
||||
/// Get the server-assigned JID for the `Online` event
|
||||
|
|
|
|||
|
|
@ -214,10 +214,7 @@ impl ConnectedState {
|
|||
// from the peer when everything has been transmitted, which may be
|
||||
// longer than the stream timeout.
|
||||
ready!(Self::poll_write_sm_req(
|
||||
match sm_state {
|
||||
None => None,
|
||||
Some(ref mut v) => Some(v),
|
||||
},
|
||||
sm_state.as_mut().map(|x| x as &mut SmState),
|
||||
stream.as_mut(),
|
||||
cx
|
||||
))?;
|
||||
|
|
@ -558,7 +555,7 @@ impl ConnectedState {
|
|||
"Failed to process <sm:a/> sent by the server: {e}",
|
||||
);
|
||||
self.to_stream_error_state(e.into());
|
||||
return Poll::Ready(None);
|
||||
Poll::Ready(None)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -823,13 +820,12 @@ impl ConnectedState {
|
|||
|
||||
pub fn queue_sm_request(&mut self) -> bool {
|
||||
match self {
|
||||
Self::Ready { sm_state, .. } => {
|
||||
if let Some(sm_state) = sm_state {
|
||||
sm_state.pending_req = true;
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
Self::Ready {
|
||||
sm_state: Some(sm_state),
|
||||
..
|
||||
} => {
|
||||
sm_state.pending_req = true;
|
||||
true
|
||||
}
|
||||
_ => false,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ impl StanzaStream {
|
|||
// TODO: auth errors should probably be fatal??
|
||||
log::error!("Failed to connect: {}. Retrying in {:?}.", e, delay);
|
||||
tokio::time::sleep(delay).await;
|
||||
delay = delay * 2;
|
||||
delay *= 2;
|
||||
if delay > MAX_DELAY {
|
||||
delay = MAX_DELAY;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,18 +101,15 @@ pub(super) enum NegotiationResult {
|
|||
|
||||
impl NegotiationState {
|
||||
pub fn new(features: &StreamFeatures, sm_state: Option<SmState>) -> io::Result<Self> {
|
||||
match sm_state {
|
||||
Some(sm_state) => {
|
||||
if features.stream_management.is_some() {
|
||||
return Ok(Self::SendSmRequest {
|
||||
sm_state: Some(sm_state),
|
||||
bound_jid: None,
|
||||
});
|
||||
} else {
|
||||
log::warn!("Peer is not offering stream management anymore. Dropping state.");
|
||||
}
|
||||
if let Some(sm_state) = sm_state {
|
||||
if features.stream_management.is_some() {
|
||||
return Ok(Self::SendSmRequest {
|
||||
sm_state: Some(sm_state),
|
||||
bound_jid: None,
|
||||
});
|
||||
} else {
|
||||
log::warn!("Peer is not offering stream management anymore. Dropping state.");
|
||||
}
|
||||
None => (),
|
||||
}
|
||||
|
||||
if !features.can_bind() {
|
||||
|
|
@ -247,7 +244,7 @@ impl NegotiationState {
|
|||
|
||||
Ok(XmppStreamElement::StreamError(error)) => {
|
||||
log::debug!("Received stream:error, failing stream and discarding any stream management state.");
|
||||
let error = io::Error::new(io::ErrorKind::Other, error);
|
||||
let error = io::Error::other(error);
|
||||
transmit_queue.fail(&(&error).into());
|
||||
Poll::Ready(Break(NegotiationResult::Disconnect {
|
||||
error,
|
||||
|
|
@ -472,7 +469,7 @@ impl NegotiationState {
|
|||
|
||||
Ok(XmppStreamElement::StreamError(error)) => {
|
||||
log::debug!("Received stream error, failing stream and discarding any stream management state.");
|
||||
let error = io::Error::new(io::ErrorKind::Other, error);
|
||||
let error = io::Error::other(error);
|
||||
transmit_queue.fail(&(&error).into());
|
||||
Poll::Ready(Break(NegotiationResult::Disconnect {
|
||||
error,
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ pub(super) struct TransmitQueueRef<'x, T> {
|
|||
q: &'x mut VecDeque<T>,
|
||||
}
|
||||
|
||||
impl<'x, T> TransmitQueueRef<'x, T> {
|
||||
impl<T> TransmitQueueRef<'_, T> {
|
||||
/// Take the item out of the queue.
|
||||
pub fn take(self) -> T {
|
||||
// Unwrap: when this type is created, a check is made that the queue
|
||||
|
|
@ -265,7 +265,7 @@ impl<T: Unpin> TransmitQueue<T> {
|
|||
|
||||
/// Poll the queue for the next item to transmit.
|
||||
pub fn poll_next(&mut self, cx: &mut Context) -> Poll<Option<TransmitQueueRef<'_, T>>> {
|
||||
if self.peek.len() > 0 {
|
||||
if !self.peek.is_empty() {
|
||||
// Cannot use `if let Some(.) = .` here because of a borrowchecker
|
||||
// restriction. If the reference is created before the branch is
|
||||
// entered, it will think it needs to be borrowed until the end
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ impl SmState {
|
|||
let to_drop = h.wrapping_sub(self.outbound_base) as usize;
|
||||
if to_drop > 0 {
|
||||
log::trace!("remote_acked: need to drop {to_drop} stanzas");
|
||||
if to_drop as usize > self.unacked_stanzas.len() {
|
||||
if to_drop > self.unacked_stanzas.len() {
|
||||
if to_drop as u32 > u32::MAX / 2 {
|
||||
// If we look at the stanza counter values as RFC 1982
|
||||
// values, a wrapping difference greater than half the
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ impl WorkerStream {
|
|||
match ready!(substate.poll(
|
||||
Pin::new(stream),
|
||||
identity,
|
||||
&features,
|
||||
features,
|
||||
transmit_queue,
|
||||
cx
|
||||
)) {
|
||||
|
|
@ -205,13 +205,9 @@ impl WorkerStream {
|
|||
|
||||
// produced an event to emit.
|
||||
Some(ConnectedEvent::Worker(v)) => {
|
||||
match v {
|
||||
// Capture the JID from a stream reset to
|
||||
// update our state.
|
||||
WorkerEvent::Reset { ref bound_jid, .. } => {
|
||||
*identity = bound_jid.clone();
|
||||
}
|
||||
_ => (),
|
||||
// Capture the JID from a stream reset to update our state.
|
||||
if let WorkerEvent::Reset { ref bound_jid, .. } = v {
|
||||
*identity = bound_jid.clone();
|
||||
}
|
||||
return Poll::Ready(Some(v));
|
||||
}
|
||||
|
|
@ -364,7 +360,7 @@ struct DriveDuplex<'x> {
|
|||
queue: &'x mut TransmitQueue<QueueEntry>,
|
||||
}
|
||||
|
||||
impl<'x> Future for DriveDuplex<'x> {
|
||||
impl Future for DriveDuplex<'_> {
|
||||
type Output = Option<WorkerEvent>;
|
||||
|
||||
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
|
||||
|
|
@ -378,7 +374,7 @@ struct DriveWrites<'x> {
|
|||
queue: &'x mut TransmitQueue<QueueEntry>,
|
||||
}
|
||||
|
||||
impl<'x> Future for DriveWrites<'x> {
|
||||
impl Future for DriveWrites<'_> {
|
||||
type Output = Never;
|
||||
|
||||
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
|
||||
|
|
@ -391,7 +387,7 @@ struct Close<'x> {
|
|||
stream: Pin<&'x mut WorkerStream>,
|
||||
}
|
||||
|
||||
impl<'x> Future for Close<'x> {
|
||||
impl Future for Close<'_> {
|
||||
type Output = io::Result<()>;
|
||||
|
||||
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ impl<T: AsyncBufRead> AsyncBufRead for CaptureBufRead<T> {
|
|||
this.inner.consume(amt);
|
||||
if let Some((_, consumed_up_to)) = this.buf.as_mut() {
|
||||
// Increase the amount of data to preserve.
|
||||
*consumed_up_to = *consumed_up_to + amt;
|
||||
*consumed_up_to += amt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -186,12 +186,11 @@ pub(super) fn log_recv(err: Option<&xmpp_parsers::Error>, capture: Option<Vec<u8
|
|||
log::trace!("RECV (error: {}) [data capture disabled]", err);
|
||||
}
|
||||
},
|
||||
None => match capture {
|
||||
Some(capture) => {
|
||||
None => {
|
||||
if let Some(capture) = capture {
|
||||
log::trace!("RECV (ok) {}", LogXsoBuf(&capture));
|
||||
}
|
||||
None => (),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ impl TimeoutState {
|
|||
self.level = TimeoutLevel::Soft;
|
||||
self.deadline
|
||||
.as_mut()
|
||||
.reset((Instant::now() + self.timeouts.data_to_soft()).into());
|
||||
.reset(Instant::now() + self.timeouts.data_to_soft());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -380,10 +380,10 @@ impl<Io: AsyncBufRead> Stream for RawXmlStream<Io> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'x, Io: AsyncWrite> RawXmlStreamProj<'x, Io> {
|
||||
impl<Io: AsyncWrite> RawXmlStreamProj<'_, Io> {
|
||||
fn flush_tx_log(&mut self) {
|
||||
let range = &self.tx_buffer[*self.tx_buffer_logged..];
|
||||
if range.len() == 0 {
|
||||
if range.is_empty() {
|
||||
return;
|
||||
}
|
||||
log_send(range);
|
||||
|
|
@ -413,12 +413,12 @@ impl<'x, Io: AsyncWrite> RawXmlStreamProj<'x, Io> {
|
|||
|
||||
fn progress_write(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
|
||||
self.flush_tx_log();
|
||||
while self.tx_buffer.len() > 0 {
|
||||
while !self.tx_buffer.is_empty() {
|
||||
let written = match ready!(self
|
||||
.parser
|
||||
.as_mut()
|
||||
.inner_pinned()
|
||||
.poll_write(cx, &self.tx_buffer))
|
||||
.poll_write(cx, self.tx_buffer))
|
||||
{
|
||||
Ok(v) => v,
|
||||
Err(e) => return Poll::Ready(Err(e)),
|
||||
|
|
@ -461,7 +461,7 @@ impl<'x, Io: AsyncWrite> Sink<xso::Item<'x>> for RawXmlStream<Io> {
|
|||
// Some progress and it went fine, move on.
|
||||
Poll::Ready(Ok(())) => (),
|
||||
// Something went wrong -> return the error.
|
||||
Poll::Ready(Err(e)) => return Poll::Ready(Err(e.into())),
|
||||
Poll::Ready(Err(e)) => return Poll::Ready(Err(e)),
|
||||
}
|
||||
if this.tx_buffer.len() < *this.tx_buffer_high_water_mark {
|
||||
Poll::Ready(Ok(()))
|
||||
|
|
@ -608,10 +608,7 @@ impl<T: FromXml> ReadXsoState<T> {
|
|||
// whitespace keepalives.
|
||||
// (And also, we'll know faster when the remote side sends
|
||||
// non-whitespace garbage.)
|
||||
let text_buffering = match self {
|
||||
ReadXsoState::PreData => false,
|
||||
_ => true,
|
||||
};
|
||||
let text_buffering = !matches!(self, ReadXsoState::PreData);
|
||||
source
|
||||
.as_mut()
|
||||
.parser_pinned()
|
||||
|
|
@ -745,7 +742,7 @@ impl<'x, Io: AsyncBufRead, T: FromXml> ReadXso<'x, Io, T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'x, Io: AsyncBufRead, T: FromXml> Future for ReadXso<'x, Io, T>
|
||||
impl<Io: AsyncBufRead, T: FromXml> Future for ReadXso<'_, Io, T>
|
||||
where
|
||||
T::Builder: Unpin,
|
||||
{
|
||||
|
|
@ -770,7 +767,7 @@ pub struct StreamHeader<'x> {
|
|||
pub id: Option<Cow<'x, str>>,
|
||||
}
|
||||
|
||||
impl<'x> StreamHeader<'x> {
|
||||
impl StreamHeader<'_> {
|
||||
/// Take the contents and return them as new object.
|
||||
///
|
||||
/// `self` will be left with all its parts set to `None`.
|
||||
|
|
|
|||
|
|
@ -111,10 +111,10 @@ fn highlight_xml(xml: &str) -> String {
|
|||
|
||||
struct LogXsoBuf<'x>(&'x [u8]);
|
||||
|
||||
impl<'x> fmt::Display for LogXsoBuf<'x> {
|
||||
impl fmt::Display for LogXsoBuf<'_> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
// We always generate UTF-8, so this should be good... I think.
|
||||
let text = core::str::from_utf8(&self.0).unwrap();
|
||||
let text = core::str::from_utf8(self.0).unwrap();
|
||||
#[cfg(feature = "syntax-highlighting")]
|
||||
let text = highlight_xml(text);
|
||||
f.write_str(&text)
|
||||
|
|
@ -493,7 +493,7 @@ pub struct Shutdown<'a, Io: AsyncWrite, T: FromXml + AsXml> {
|
|||
stream: Pin<&'a mut XmlStream<Io, T>>,
|
||||
}
|
||||
|
||||
impl<'a, Io: AsyncWrite, T: FromXml + AsXml> Future for Shutdown<'a, Io, T> {
|
||||
impl<Io: AsyncWrite, T: FromXml + AsXml> Future for Shutdown<'_, Io, T> {
|
||||
type Output = io::Result<()>;
|
||||
|
||||
fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
|
||||
|
|
|
|||
Loading…
Reference in a new issue