diff options
author | 2024-11-29 17:07:16 +0000 | |
---|---|---|
committer | 2024-11-29 17:07:16 +0000 | |
commit | 859a19820d69eca5fca87fc01acad72a6355f97e (patch) | |
tree | cf3736c44d93377a16a09d9eaa95851c23aaff80 /src/jabber.rs | |
parent | b6593389069903cc4c85e40611296d8a240f718d (diff) | |
download | luz-859a19820d69eca5fca87fc01acad72a6355f97e.tar.gz luz-859a19820d69eca5fca87fc01acad72a6355f97e.tar.bz2 luz-859a19820d69eca5fca87fc01acad72a6355f97e.zip |
add sasl failure type
Diffstat (limited to 'src/jabber.rs')
-rw-r--r-- | src/jabber.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/jabber.rs b/src/jabber.rs index 9e7f9d8..599879d 100644 --- a/src/jabber.rs +++ b/src/jabber.rs @@ -5,7 +5,7 @@ use async_recursion::async_recursion; use peanuts::element::{FromElement, IntoElement}; use peanuts::{Reader, Writer}; use rsasl::prelude::{Mechname, SASLClient, SASLConfig}; -use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, BufReader, ReadHalf, WriteHalf}; +use tokio::io::{AsyncRead, AsyncWrite, AsyncWriteExt, BufReader, BufWriter, ReadHalf, WriteHalf}; use tokio::time::timeout; use tokio_native_tls::native_tls::TlsConnector; use tracing::{debug, info, instrument, trace}; @@ -102,7 +102,10 @@ where ServerResponse::Challenge(challenge) => { data = Some((*challenge).as_bytes().to_vec()) } - ServerResponse::Success(success) => data = Some((*success).as_bytes().to_vec()), + ServerResponse::Success(success) => { + data = success.clone().map(|success| success.as_bytes().to_vec()) + } + ServerResponse::Failure(failure) => return Err(Error::Authentication(failure)), } debug!("we went first"); } @@ -121,7 +124,11 @@ where // While we aren't finished, receive more data from the other party let response = Response::new(str::from_utf8(&sasl_data)?.to_string()); debug!("response: {:?}", response); + let stdout = tokio::io::stdout(); + let mut writer = Writer::new(stdout); + writer.write_full(&response).await?; self.writer.write_full(&response).await?; + debug!("response written"); let server_response: ServerResponse = self.reader.read().await?; debug!("server_response: {:#?}", server_response); @@ -129,7 +136,10 @@ where ServerResponse::Challenge(challenge) => { data = Some((*challenge).as_bytes().to_vec()) } - ServerResponse::Success(success) => data = Some((*success).as_bytes().to_vec()), + ServerResponse::Success(success) => { + data = success.clone().map(|success| success.as_bytes().to_vec()) + } + ServerResponse::Failure(failure) => return Err(Error::Authentication(failure)), } } } |