Use tokio::task::unconstrained when using .now_or_never() to prevent some problems I guess

The issue in fixme says to use `tokio::task::unconstrained`.
This commit is contained in:
Waffle 2021-07-23 20:08:26 +03:00
parent 309daeb358
commit 0471cb0322

View file

@ -495,7 +495,7 @@ async fn worker(
fn answer_info(rx: &mut mpsc::Receiver<InfoMessage>, limits: &mut Limits) {
// FIXME(waffle): https://github.com/tokio-rs/tokio/issues/3350
while let Some(Some(req)) = rx.recv().now_or_never() {
while let Some(Some(req)) = tokio::task::unconstrained(rx.recv()).now_or_never() {
// Errors are ignored with .ok(). Error means that the response channel
// is closed and the response isn't needed.
match req {
@ -519,7 +519,7 @@ async fn read_from_rx<T>(rx: &mut mpsc::Receiver<T>, queue: &mut Vec<T>, rx_is_c
// Don't grow queue bigger than the capacity to limit DOS posibility
while queue.len() < queue.capacity() {
// FIXME(waffle): https://github.com/tokio-rs/tokio/issues/3350
match rx.recv().now_or_never() {
match tokio::task::unconstrained(rx.recv()).now_or_never() {
Some(Some(req)) => queue.push(req),
Some(None) => *rx_is_closed = true,
// There are no items in queue.