diff options
| author | Samuel Hicks <[email protected]> | 2024-07-19 17:45:29 +0100 |
|---|---|---|
| committer | Samuel Hicks <[email protected]> | 2024-07-19 17:45:29 +0100 |
| commit | e6f4db507d62178ddb05a4569a9f9352a25222e0 (patch) | |
| tree | 51fe97b9cc0669efd086c15b9d3ed999044d7b57 /embassy-net | |
| parent | 2766993099b6604739ae25724aa2f6a9877d9902 (diff) | |
net/tcp: fix flush() waiting forever if socket is reset with pending write data
Diffstat (limited to 'embassy-net')
| -rw-r--r-- | embassy-net/src/tcp.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/embassy-net/src/tcp.rs b/embassy-net/src/tcp.rs index be0e1a129..18200287e 100644 --- a/embassy-net/src/tcp.rs +++ b/embassy-net/src/tcp.rs | |||
| @@ -515,7 +515,7 @@ impl<'d> TcpIo<'d> { | |||
| 515 | async fn flush(&mut self) -> Result<(), Error> { | 515 | async fn flush(&mut self) -> Result<(), Error> { |
| 516 | poll_fn(move |cx| { | 516 | poll_fn(move |cx| { |
| 517 | self.with_mut(|s, _| { | 517 | self.with_mut(|s, _| { |
| 518 | let data_pending = s.send_queue() > 0; | 518 | let data_pending = (s.send_queue() > 0) && s.state() != tcp::State::Closed; |
| 519 | let fin_pending = matches!( | 519 | let fin_pending = matches!( |
| 520 | s.state(), | 520 | s.state(), |
| 521 | tcp::State::FinWait1 | tcp::State::Closing | tcp::State::LastAck | 521 | tcp::State::FinWait1 | tcp::State::Closing | tcp::State::LastAck |
