Skip to content

Commit

Permalink
Don't return from read() if there's no data
Browse files Browse the repository at this point in the history
  • Loading branch information
AnthonyGrondin committed Sep 15, 2023
1 parent 1641f3c commit 70de1a2
Showing 1 changed file with 19 additions and 27 deletions.
46 changes: 19 additions & 27 deletions esp-mbedtls/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -534,21 +534,15 @@ where
T: Read + Write,
{
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
let res = self.session.internal_read(buf);
if res <= 0 {
if res == MBEDTLS_ERR_SSL_WANT_READ
|| res == MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET
{
Ok(0)
} else {
if res == 0 {
Err(TlsError::Eof)
} else {
Err(TlsError::MbedTlsError(res))
}
loop {
let res = self.session.internal_read(buf);
match res {
0 | MBEDTLS_ERR_SSL_WANT_READ | MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET => {
continue
} // no data
1_i32..=i32::MAX => return Ok(res as usize), // data
i32::MIN..=-1_i32 => return Err(TlsError::MbedTlsError(res)), // error
}
} else {
Ok(res as usize)
}
}
}
Expand Down Expand Up @@ -852,20 +846,18 @@ pub mod asynch {
{
async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
log::debug!("async read called");
if self.session.eof && self.session.rx_buffer.empty() {
return Err(TlsError::Eof);
}

let res = self.session.async_internal_read(buf).await?;
if res < 0 {
if res == MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET {
log::debug!("MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET");
Ok(0)
} else {
Err(TlsError::MbedTlsError(res))
loop {
if self.session.eof && self.session.rx_buffer.empty() {
return Err(TlsError::Eof);
}
let res = self.session.async_internal_read(buf).await?;
match res {
0 | MBEDTLS_ERR_SSL_WANT_READ | MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET => {
continue
} // no data
1_i32..=i32::MAX => return Ok(res as usize), // data
i32::MIN..=-1_i32 => return Err(TlsError::MbedTlsError(res)), // error
}
} else {
Ok(res as usize)
}
}
}
Expand Down

0 comments on commit 70de1a2

Please sign in to comment.