This bug was introduced with the semi-recent changes separating the control part from the connection-handling part. After these changes, packets can now be held in a queue while waiting for a window extension or a key re-exchange, but they weren't sent after a rekeying.
J4ZEHJHG4NGTGJPU5YMBW7IRTVZ7WOHIWI45FGM3Q3A7JHDTTXQAC
pub fn flush_all_pending(&mut self) {
for (_, channel) in self.channels.iter_mut() {
while let Some((buf, a, from)) = channel.pending_data.pop_front() {
let size = Self::data_noqueue(&mut self.write, channel, &buf, from);
if from + size < buf.len() {
channel.pending_data.push_front((buf, a, from + size));
break;
}
}
}
}