Merge pull request #917 from copy/main

fix(tcp): only reset remote_last_ts if some data is enqueued
This commit is contained in:
Dario Nieuwenhuis 2024-04-08 12:11:15 +00:00 committed by GitHub
commit 114939aa99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1123,21 +1123,21 @@ impl<'a> Socket<'a> {
return Err(SendError::InvalidState);
}
// The connection might have been idle for a long time, and so remote_last_ts
// would be far in the past. Unless we clear it here, we'll abort the connection
// down over in dispatch() by erroneously detecting it as timed out.
if self.tx_buffer.is_empty() {
self.remote_last_ts = None
}
let _old_length = self.tx_buffer.len();
let old_length = self.tx_buffer.len();
let (size, result) = f(&mut self.tx_buffer);
if size > 0 {
// The connection might have been idle for a long time, and so remote_last_ts
// would be far in the past. Unless we clear it here, we'll abort the connection
// down over in dispatch() by erroneously detecting it as timed out.
if old_length == 0 {
self.remote_last_ts = None
}
#[cfg(any(test, feature = "verbose"))]
tcp_trace!(
"tx buffer: enqueueing {} octets (now {})",
size,
_old_length + size
old_length + size
);
}
Ok(result)