Merge pull request #691 from Johannesd3/tokio_migration

[Tokio migration] Better joining of session tasks
This commit is contained in:
Sasha Hilton 2021-04-13 02:17:31 +01:00 committed by GitHub
commit 4fc3accc78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -10,7 +10,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
use byteorder::{BigEndian, ByteOrder}; use byteorder::{BigEndian, ByteOrder};
use bytes::Bytes; use bytes::Bytes;
use futures_core::TryStream; use futures_core::TryStream;
use futures_util::{FutureExt, StreamExt, TryStreamExt}; use futures_util::{future, StreamExt, TryStreamExt};
use once_cell::sync::OnceCell; use once_cell::sync::OnceCell;
use thiserror::Error; use thiserror::Error;
use tokio::sync::mpsc; use tokio::sync::mpsc;
@ -126,9 +126,14 @@ impl Session {
.forward(sink); .forward(sink);
let receiver_task = DispatchTask(stream, session.weak()); let receiver_task = DispatchTask(stream, session.weak());
let task = tokio::spawn(async move {
futures_util::future::join(sender_task, receiver_task).map(|_| io::Result::<_>::Ok(())); let result = future::try_join(sender_task, receiver_task).await;
tokio::spawn(task);
if let Err(e) = result {
error!("{}", e);
}
});
session session
} }