Skip to content

Commit 9151be6

Browse files
committed
Upgrade to tokio 0.3
1 parent 7a0767e commit 9151be6

File tree

5 files changed

+47
-36
lines changed

5 files changed

+47
-36
lines changed

Cargo.lock

+16-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mbedtls/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ byteorder = "1.0.0"
2828
yasna = { version = "0.2", optional = true }
2929
block-modes = { version = "0.3", optional = true }
3030
rc2 = { version = "0.3", optional = true }
31-
tokio = { version = "0.2", optional = true }
31+
tokio = { version = "0.3", optional = true }
3232

3333
[target.x86_64-fortanix-unknown-sgx.dependencies]
3434
rs-libc = "0.1.0"

mbedtls/src/ssl/async_session.rs

+12-10
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ use std::cell::Cell;
1212
use std::future::Future;
1313
use std::io::{self, Read, Write};
1414
use std::marker::Unpin;
15-
use std::mem::{self, MaybeUninit};
15+
use std::mem;
1616
use std::ops::{Deref, DerefMut};
1717
use std::pin::Pin;
1818
use std::ptr::null_mut;
1919
use std::rc::Rc;
2020
use std::task::{Context as TaskContext, Poll};
2121

22-
use tokio::io::{AsyncRead, AsyncWrite};
22+
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
2323

2424
use crate::ssl::{Context, HandshakeError, MidHandshake, Session, Version};
2525
use crate::x509::VerifyError;
@@ -81,7 +81,9 @@ impl<S: Unpin> IoAdapter<S> {
8181

8282
impl<S: AsyncRead + Unpin> Read for IoAdapter<S> {
8383
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
84-
self.with_context(|ctx, stream| stream.poll_read(ctx, buf))
84+
let mut buf = ReadBuf::new(buf);
85+
self.with_context(|ctx, stream| stream.poll_read(ctx, &mut buf))?;
86+
Ok(buf.filled().len())
8587
}
8688
}
8789

@@ -211,16 +213,16 @@ impl Drop for AsyncSession<'_> {
211213
}
212214

213215
impl AsyncRead for AsyncSession<'_> {
214-
unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool {
215-
false
216-
}
217-
218216
fn poll_read(
219217
mut self: Pin<&mut Self>,
220218
cx: &mut TaskContext<'_>,
221-
buf: &mut [u8],
222-
) -> Poll<io::Result<usize>> {
223-
self.with_context(cx, |s| s.read(buf))
219+
buf: &mut ReadBuf<'_>,
220+
) -> Poll<io::Result<()>> {
221+
self.with_context(cx, |s| {
222+
let n = s.read(buf.initialize_unfilled())?;
223+
buf.advance(n);
224+
Ok(())
225+
})
224226
}
225227
}
226228

mbedtls/tests/async_session.rs

+4-9
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ where
179179
#[cfg(unix)]
180180
mod test {
181181
use tokio::io::{AsyncReadExt, AsyncWriteExt};
182-
use tokio::net::TcpStream;
183182

184183
#[tokio::test]
185184
async fn client_server_test() {
@@ -222,8 +221,7 @@ mod test {
222221
continue;
223222
}
224223

225-
let (c, s) = crate::support::net::create_tcp_pair().unwrap();
226-
let (c, s) = (TcpStream::from_std(c).unwrap(), TcpStream::from_std(s).unwrap());
224+
let (c, s) = crate::support::net::create_tcp_pair_async().unwrap();
227225
let c = tokio::spawn(super::client(c, min_c, max_c, exp_ver.clone()));
228226
let s = tokio::spawn(super::server(s, min_s, max_s, exp_ver));
229227

@@ -234,8 +232,7 @@ mod test {
234232

235233
#[tokio::test]
236234
async fn shutdown1() {
237-
let (c, s) = crate::support::net::create_tcp_pair().unwrap();
238-
let (c, s) = (TcpStream::from_std(c).unwrap(), TcpStream::from_std(s).unwrap());
235+
let (c, s) = crate::support::net::create_tcp_pair_async().unwrap();
239236

240237
let c = tokio::spawn(super::with_client(c, |session| Box::pin(async move {
241238
session.shutdown().await.unwrap();
@@ -255,8 +252,7 @@ mod test {
255252

256253
#[tokio::test]
257254
async fn shutdown2() {
258-
let (c, s) = crate::support::net::create_tcp_pair().unwrap();
259-
let (c, s) = (TcpStream::from_std(c).unwrap(), TcpStream::from_std(s).unwrap());
255+
let (c, s) = crate::support::net::create_tcp_pair_async().unwrap();
260256

261257
let c = tokio::spawn(super::with_client(c, |session| Box::pin(async move {
262258
let mut buf = [0u8; 5];
@@ -279,8 +275,7 @@ mod test {
279275

280276
#[tokio::test]
281277
async fn shutdown3() {
282-
let (c, s) = crate::support::net::create_tcp_pair().unwrap();
283-
let (c, s) = (TcpStream::from_std(c).unwrap(), TcpStream::from_std(s).unwrap());
278+
let (c, s) = crate::support::net::create_tcp_pair_async().unwrap();
284279

285280
let c = tokio::spawn(super::with_client(c, |session| Box::pin(async move {
286281
session.shutdown().await

mbedtls/tests/support/net.rs

+14
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ use std::io::{Error as IoError, Result as IoResult};
1212
use std::net::TcpStream;
1313
use std::os::unix::io::FromRawFd;
1414

15+
#[cfg(feature = "tokio")]
16+
use tokio::net;
17+
1518
pub fn create_tcp_pair() -> IoResult<(TcpStream, TcpStream)> {
1619
let mut fds: [libc::c_int; 2] = [0; 2];
1720
unsafe {
@@ -28,3 +31,14 @@ pub fn create_tcp_pair() -> IoResult<(TcpStream, TcpStream)> {
2831
}
2932
}
3033
}
34+
35+
#[cfg(feature = "tokio")]
36+
pub fn create_tcp_pair_async() -> IoResult<(net::TcpStream, net::TcpStream)> {
37+
let (c, s) = create_tcp_pair()?;
38+
c.set_nonblocking(true)?;
39+
s.set_nonblocking(true)?;
40+
Ok((
41+
net::TcpStream::from_std(c)?,
42+
net::TcpStream::from_std(s)?,
43+
))
44+
}

0 commit comments

Comments
 (0)