Skip to content

Commit 994a536

Browse files
2 parents 9b92319 + 2d03e33 commit 994a536

File tree

16 files changed

+24
-25
lines changed

16 files changed

+24
-25
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.sh text eol=lf

build_mbedtls/build_all.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ rm -rf tmpsrc
55
mkdir target
66
mkdir tmpsrc
77
cp -r ../mbedtls tmpsrc
8+
9+
# Remove "-Wdocumentation" since Clang will complain
10+
sed -i "s/-Wdocumentation//g" tmpsrc/mbedtls/library/CMakeLists.txt
11+
812
cp config.h tmpsrc/mbedtls/include/mbedtls/mbedtls_config.h
913
cd target
1014

@@ -24,7 +28,7 @@ rm -rf target
2428
mkdir target
2529
cd target
2630

27-
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-esp32.cmake ../tmpsrc/mbedtls
31+
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-clang-esp32.cmake ../tmpsrc/mbedtls
2832
make
2933

3034
cp library/libmbedcrypto.a ../../libs/xtensa-esp32-none-elf/libmbedcrypto.a
@@ -36,7 +40,7 @@ rm -rf target
3640
mkdir target
3741
cd target
3842

39-
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-esp32s2.cmake ../tmpsrc/mbedtls
43+
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-clang-esp32s2.cmake ../tmpsrc/mbedtls
4044
make
4145

4246
cp library/libmbedcrypto.a ../../libs/xtensa-esp32s2-none-elf/libmbedcrypto.a
@@ -48,7 +52,7 @@ rm -rf target
4852
mkdir target
4953
cd target
5054

51-
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-esp32s3.cmake ../tmpsrc/mbedtls
55+
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=$IDF_PATH/tools/cmake/toolchain-clang-esp32s3.cmake ../tmpsrc/mbedtls
5256
make
5357

5458
cp library/libmbedcrypto.a ../../libs/xtensa-esp32s3-none-elf/libmbedcrypto.a

esp-mbedtls/src/lib.rs

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ where
207207
if res < 0 && res != MBEDTLS_ERR_SSL_WANT_READ && res != MBEDTLS_ERR_SSL_WANT_WRITE
208208
{
209209
// real error
210-
break;
210+
return Err(TlsError::MbedTlsError(res));
211211
}
212212

213213
// try again immediately
@@ -487,7 +487,6 @@ pub mod asynch {
487487

488488
mbedtls_ssl_conf_own_cert(ssl_config, client_crt, private_key);
489489

490-
#[cfg(feature = "async")]
491490
return Ok(Self {
492491
stream,
493492
ssl_context,
@@ -499,14 +498,6 @@ pub mod asynch {
499498
tx_buffer: Default::default(),
500499
rx_buffer: Default::default(),
501500
});
502-
503-
#[cfg(not(feature = "async"))]
504-
return Ok(Self {
505-
stream,
506-
ssl_context,
507-
ssl_config,
508-
crt,
509-
});
510501
}
511502
}
512503
}
@@ -610,6 +601,7 @@ pub mod asynch {
610601
.await
611602
.map_err(|_| TlsError::Unknown)?;
612603
log::debug!("wrote {res} bytes to stream");
604+
self.stream.flush().await.map_err(|_| TlsError::Unknown)?;
613605
}
614606
}
615607

@@ -628,15 +620,7 @@ pub mod asynch {
628620
self.drain_tx_buffer().await?;
629621

630622
let len = mbedtls_ssl_write(self.ssl_context, buf.as_ptr(), buf.len() as u32);
631-
log::debug!(">>> wrote {} of {} bytes to mbedtls", len, buf.len());
632-
633-
let encrypted = self.tx_buffer.pull(len as usize);
634-
log::debug!(
635-
">>> got {} bytes from tx_buffer, send to stream",
636-
encrypted.len()
637-
);
638-
let res = self.stream.write(encrypted).await;
639-
log::debug!(">>> stream write result {:?}", res);
623+
self.drain_tx_buffer().await?;
640624

641625
Ok(len)
642626
}
@@ -678,6 +662,9 @@ pub mod asynch {
678662
if res == MBEDTLS_ERR_SSL_WANT_READ {
679663
log::debug!("<<< return 0 as read");
680664
return Ok(0); // we need another read
665+
} else if res == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY {
666+
self.eof = true;
667+
return Ok(0);
681668
}
682669
Ok(res)
683670
} else {
@@ -776,6 +763,11 @@ pub mod asynch {
776763
}
777764

778765
async fn flush(&mut self) -> Result<(), Self::Error> {
766+
self.session
767+
.drain_tx_buffer()
768+
.await
769+
.map_err(|_| TlsError::Unknown)?;
770+
779771
self.session
780772
.stream
781773
.flush()

examples-esp32/.cargo/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ rustflags = [
66
"-C", "link-arg=-Tlinkall.x",
77
"-C", "link-arg=-nostartfiles",
88
"-C", "link-arg=-Trom_functions.x",
9+
"-C", "target-feature=-loop",
910
]
1011

1112
target = "xtensa-esp32-none-elf"

examples-esp32/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ license = "MIT OR Apache-2.0"
77

88
[profile.release]
99
debug = true
10+
lto = "off"
1011

1112
[dependencies]
1213
hal = { package = "esp32-hal", version = "0.11.0" }
@@ -17,7 +18,7 @@ embassy-time = { version = "0.1.0", features = ["nightly"], optional = true }
1718
embassy-executor = { package = "embassy-executor", git = "https://github.com/embassy-rs/embassy/", rev = "cd9a65b", features = ["nightly", "integrated-timers"], optional = true }
1819
embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a", features = ["nightly", "tcp", "udp", "dhcpv4", "medium-ethernet"], optional = true }
1920

20-
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32", "embedded-svc", "wifi"], rev = "cce6738220f4f12ab4db92f74295e762f5425e99" }
21+
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32", "embedded-svc", "wifi"], rev = "a01d075c64ddf777920344936f8bdaaddf7de288" }
2122
smoltcp = { version = "0.9.1", default-features=false, features = ["proto-igmp", "proto-ipv4", "socket-tcp", "socket-icmp", "socket-udp", "medium-ethernet", "proto-dhcpv4", "socket-raw", "socket-dhcpv4"] }
2223
embedded-svc = { version = "0.23.1", default-features = false}
2324
log = "0.4.16"

examples-esp32c3/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ embassy-time = { version = "0.1.0", features = ["nightly"], optional = true }
1717
embassy-executor = { package = "embassy-executor", git = "https://github.com/embassy-rs/embassy/", rev = "cd9a65b", features = ["nightly", "integrated-timers"], optional = true }
1818
embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a", features = ["nightly", "tcp", "udp", "dhcpv4", "medium-ethernet"], optional = true }
1919

20-
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32c3", "embedded-svc", "wifi"], rev = "cce6738220f4f12ab4db92f74295e762f5425e99" }
20+
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32c3", "embedded-svc", "wifi"], rev = "a01d075c64ddf777920344936f8bdaaddf7de288" }
2121
smoltcp = { version = "0.9.1", default-features=false, features = ["proto-igmp", "proto-ipv4", "socket-tcp", "socket-icmp", "socket-udp", "medium-ethernet", "proto-dhcpv4", "socket-raw", "socket-dhcpv4"] }
2222
embedded-svc = { version = "0.23.1", default-features = false}
2323
log = "0.4.16"

examples-esp32s3/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ embassy-time = { version = "0.1.0", features = ["nightly"], optional = true }
1717
embassy-executor = { package = "embassy-executor", git = "https://github.com/embassy-rs/embassy/", rev = "cd9a65b", features = ["nightly", "integrated-timers"], optional = true }
1818
embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "26474ce6eb759e5add1c137f3417845e0797df3a", features = ["nightly", "tcp", "udp", "dhcpv4", "medium-ethernet"], optional = true }
1919

20-
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32s3", "embedded-svc", "wifi"], rev = "cce6738220f4f12ab4db92f74295e762f5425e99" }
20+
esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", features = ["big-heap", "phy-enable-usb", "esp32s3", "embedded-svc", "wifi"], rev = "a01d075c64ddf777920344936f8bdaaddf7de288" }
2121
smoltcp = { version = "0.9.1", default-features=false, features = ["proto-igmp", "proto-ipv4", "socket-tcp", "socket-icmp", "socket-udp", "medium-ethernet", "proto-dhcpv4", "socket-raw", "socket-dhcpv4"] }
2222
embedded-svc = { version = "0.23.1", default-features = false}
2323
log = "0.4.16"
-450 KB
Binary file not shown.
-164 KB
Binary file not shown.
-64.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)