diff options
Diffstat (limited to 'crates/managesieve/src')
-rw-r--r-- | crates/managesieve/src/core/client.rs | 45 | ||||
-rw-r--r-- | crates/managesieve/src/core/session.rs | 36 |
2 files changed, 40 insertions, 41 deletions
diff --git a/crates/managesieve/src/core/client.rs b/crates/managesieve/src/core/client.rs index 53bb95a0..3d99cb53 100644 --- a/crates/managesieve/src/core/client.rs +++ b/crates/managesieve/src/core/client.rs @@ -15,11 +15,6 @@ use super::{Command, ResponseCode, SerializeResponse, Session, State}; impl<T: SessionStream> Session<T> { pub async fn ingest(&mut self, bytes: &[u8]) -> SessionResult { - /*let tmp = "dd"; - for line in String::from_utf8_lossy(bytes).split("\r\n") { - println!("<- {:?}", &line[..std::cmp::min(line.len(), 100)]); - }*/ - let mut bytes = bytes.iter(); let mut requests = Vec::with_capacity(2); let mut needs_literal = None; @@ -34,7 +29,7 @@ impl<T: SessionStream> Session<T> { let mut disconnect = err.must_disconnect(); if let Err(err) = self.write_error(err).await { - tracing::error!( event = "error", error = ?err); + trc::error!(err.session_id(self.session_id)); disconnect = true; } @@ -52,7 +47,7 @@ impl<T: SessionStream> Session<T> { } Err(receiver::Error::Error { response }) => { if let Err(err) = self.write_error(response).await { - tracing::error!( event = "error", error = ?err); + trc::error!(err.session_id(self.session_id)); return SessionResult::Close; } break; @@ -80,7 +75,7 @@ impl<T: SessionStream> Session<T> { } { Ok(response) => { if let Err(err) = self.write(&response).await { - tracing::error!( event = "error", error = ?err); + trc::error!(err.session_id(self.session_id)); return SessionResult::Close; } @@ -94,7 +89,7 @@ impl<T: SessionStream> Session<T> { let mut disconnect = err.must_disconnect(); if let Err(err) = self.write_error(err).await { - tracing::error!( event = "error", error = ?err); + trc::error!(err.session_id(self.session_id)); disconnect = true; } @@ -110,7 +105,7 @@ impl<T: SessionStream> Session<T> { .write(format!("OK Ready for {} bytes.\r\n", needs_literal).as_bytes()) .await { - tracing::error!( event = "error", error = ?err); + trc::error!(err.session_id(self.session_id)); return SessionResult::Close; } } @@ -193,6 +188,13 @@ impl<T: SessionStream> Session<T> { impl<T: AsyncWrite + AsyncRead + Unpin> Session<T> { #[inline(always)] pub async fn write(&mut self, bytes: &[u8]) -> trc::Result<()> { + trc::event!( + Imap(trc::ManageSieveEvent::RawOutput), + SessionId = self.session_id, + Size = bytes.len(), + Contents = String::from_utf8_lossy(bytes).into_owned(), + ); + self.stream.write_all(bytes).await.map_err(|err| { trc::NetworkEvent::WriteError .into_err() @@ -206,18 +208,13 @@ impl<T: AsyncWrite + AsyncRead + Unpin> Session<T> { .caused_by(trc::location!()) })?; - tracing::trace!( - event = "write", - data = std::str::from_utf8(bytes).unwrap_or_default(), - size = bytes.len() - ); - Ok(()) } pub async fn write_error(&mut self, error: trc::Error) -> trc::Result<()> { - tracing::error!( event = "error", error = ?error); - self.write(&error.serialize()).await + let bytes = err.serialize(); + trc::error!(error.session_id(self.session_id)); + self.write(&bytes).await } #[inline(always)] @@ -229,13 +226,11 @@ impl<T: AsyncWrite + AsyncRead + Unpin> Session<T> { .caused_by(trc::location!()) })?; - tracing::trace!( - event = "read", - data = bytes - .get(0..len) - .and_then(|bytes| std::str::from_utf8(bytes).ok()) - .unwrap_or("[invalid UTF8]"), - size = len + trc::event!( + Imap(trc::ManageSieveEvent::RawInput), + SessionId = self.session_id, + Size = len, + Contents = String::from_utf8_lossy(bytes.get(0..len).unwrap_or_default()).into_owned(), ); Ok(len) diff --git a/crates/managesieve/src/core/session.rs b/crates/managesieve/src/core/session.rs index f1b0012f..1c2b5a54 100644 --- a/crates/managesieve/src/core/session.rs +++ b/crates/managesieve/src/core/session.rs @@ -85,24 +85,28 @@ impl<T: SessionStream> Session<T> { } } } else { - tracing::debug!( - - event = "disconnect", - reason = "peer", - "Connection closed by peer." + trc::event!( + Network(trc::NetworkEvent::Closed), + SessionId = self.session_id, + CausedBy = trc::location!() ); break; } } - Ok(Err(_)) => { + Ok(Err(err)) => { + trc::event!( + Network(trc::NetworkEvent::ReadError), + SessionId = self.session_id, + Reason = err, + CausedBy = trc::location!() + ); break; } Err(_) => { - tracing::debug!( - - event = "disconnect", - reason = "timeout", - "Connection timed out." + trc::event!( + Network(trc::NetworkEvent::Timeout), + SessionId = self.session_id, + CausedBy = trc::location!() ); self .write(b"BYE \"Connection timed out.\"\r\n") @@ -113,11 +117,11 @@ impl<T: SessionStream> Session<T> { } }, _ = shutdown_rx.changed() => { - tracing::debug!( - - event = "disconnect", - reason = "shutdown", - "Server shutting down." + trc::event!( + Network(trc::NetworkEvent::Closed), + SessionId = self.session_id, + Reason = "Server shutting down", + CausedBy = trc::location!() ); self.write(b"BYE \"Server shutting down.\"\r\n").await.ok(); break; |