From cd48a2ef127ad4a3ea6cfb17f689eb0b2685021d Mon Sep 17 00:00:00 2001 From: Scott Mabin Date: Fri, 1 Nov 2019 22:04:19 +0000 Subject: [PATCH] Revert to prevous ordering of TCP options. Although ordering is not specified in the spec, some implementations expect some ordering (unforntunately I have found one that does, and blocks outbound packets due to 'invalid tcp options'). --- src/wire/tcp.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wire/tcp.rs b/src/wire/tcp.rs index 1626d31..8242b36 100644 --- a/src/wire/tcp.rs +++ b/src/wire/tcp.rs @@ -893,12 +893,12 @@ impl<'a> Repr<'a> { packet.set_ack(self.ack_number.is_some()); { let mut options = packet.options_mut(); - if let Some(value) = self.window_scale { - let tmp = options; options = TcpOption::WindowScale(value).emit(tmp); - } if let Some(value) = self.max_seg_size { let tmp = options; options = TcpOption::MaxSegmentSize(value).emit(tmp); } + if let Some(value) = self.window_scale { + let tmp = options; options = TcpOption::WindowScale(value).emit(tmp); + } if self.sack_permitted { let tmp = options; options = TcpOption::SackPermitted.emit(tmp); } else if self.ack_number.is_some() && self.sack_ranges.iter().any(|s| s.is_some()) {