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]
name = "rust-mqtt"
version = "0.1.2"
version = "0.1.3"
authors = ["Ondrej Babec <ond.babec@gmail.com>"]
edition = "2021"
resolver = "2"
@ -29,3 +29,4 @@ serial_test = "0.6.0"
default = ["std"]
std = ["tokio", "log"]
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() {
return Err(ReasonCode::NetworkError);
}
@ -513,6 +513,7 @@ where
}
}
#[cfg(not(feature = "tls"))]
async fn receive_packet<'c, T: NetworkConnection>(
buffer: &mut [u8],
buffer_len: usize,
@ -548,7 +549,7 @@ async fn receive_packet<'c, T: NetworkConnection>(
}
}
}
trace!("Lenght done!");
let rem_len_len = i;
i = 0;
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
Self: 'm;
type CloseFuture<'m>: Future<Output = Result<(), ReasonCode>>
where
Self: 'm;
type CloseFuture<'m>: Future<Output = Result<(), ReasonCode>>;
fn send<'m>(&'m mut self, buffer: &'m [u8]) -> Self::SendFuture<'m>;