aboutsummaryrefslogtreecommitdiffstats
path: root/src/jabber.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2024-11-29 17:07:16 +0000
committerLibravatar cel 🌸 <cel@bunny.garden>2024-11-29 17:07:16 +0000
commit859a19820d69eca5fca87fc01acad72a6355f97e (patch)
treecf3736c44d93377a16a09d9eaa95851c23aaff80 /src/jabber.rs
parentb6593389069903cc4c85e40611296d8a240f718d (diff)
downloadluz-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.rs16
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)),
}
}
}