Tls support (#16)

* TLS support
This commit is contained in:
obabec 2022-05-02 10:43:42 +02:00 committed by GitHub
parent 37bf023dbf
commit 63314fc867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 7 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "rust-mqtt" name = "rust-mqtt"
version = "0.1.2" version = "0.1.3"
authors = ["Ondrej Babec <ond.babec@gmail.com>"] authors = ["Ondrej Babec <ond.babec@gmail.com>"]
edition = "2021" edition = "2021"
resolver = "2" resolver = "2"
@ -28,4 +28,5 @@ serial_test = "0.6.0"
[features] [features]
default = ["std"] default = ["std"]
std = ["tokio", "log"] std = ["tokio", "log"]
no_std = ["defmt"] no_std = ["defmt"]
tls = []

View File

@ -478,7 +478,7 @@ where
} }
} }
pub async fn send_ping_v5<'b>(&'b mut self) -> Result<(), ReasonCode> { async fn send_ping_v5<'b>(&'b mut self) -> Result<(), ReasonCode> {
if self.connection.is_none() { if self.connection.is_none() {
return Err(ReasonCode::NetworkError); return Err(ReasonCode::NetworkError);
} }
@ -513,6 +513,7 @@ where
} }
} }
#[cfg(not(feature = "tls"))]
async fn receive_packet<'c, T: NetworkConnection>( async fn receive_packet<'c, T: NetworkConnection>(
buffer: &mut [u8], buffer: &mut [u8],
buffer_len: usize, buffer_len: usize,
@ -548,7 +549,7 @@ async fn receive_packet<'c, T: NetworkConnection>(
} }
} }
} }
trace!("Lenght done!");
let rem_len_len = i; let rem_len_len = i;
i = 0; i = 0;
if let Ok(l) = VariableByteIntegerDecoder::decode(rem_len.unwrap()) { if let Ok(l) = VariableByteIntegerDecoder::decode(rem_len.unwrap()) {
@ -575,3 +576,23 @@ async fn receive_packet<'c, T: NetworkConnection>(
} }
} }
} }
#[cfg(feature = "tls")]
async fn receive_packet<'c, T: NetworkConnection>(
buffer: &mut [u8],
buffer_len: usize,
recv_buffer: &mut [u8],
conn: &'c mut T,
) -> Result<usize, ReasonCode> {
trace!("Reading packet");
let mut writer = BuffWriter::new(buffer, buffer_len);
let len = conn
.receive(recv_buffer)
.await?;
if let Err(_e) = writer.insert_ref(len, &recv_buffer[writer.position..(writer.position + len)])
{
error!("Error occurred during write to buffer!");
return Err(BuffError);
}
Ok(len)
}

View File

@ -54,9 +54,7 @@ pub trait NetworkConnection {
where where
Self: 'm; Self: 'm;
type CloseFuture<'m>: Future<Output = Result<(), ReasonCode>> type CloseFuture<'m>: Future<Output = Result<(), ReasonCode>>;
where
Self: 'm;
fn send<'m>(&'m mut self, buffer: &'m [u8]) -> Self::SendFuture<'m>; fn send<'m>(&'m mut self, buffer: &'m [u8]) -> Self::SendFuture<'m>;