diff --git a/src/socket/tcp.rs b/src/socket/tcp.rs index ba0567c..14e23e1 100644 --- a/src/socket/tcp.rs +++ b/src/socket/tcp.rs @@ -965,6 +965,12 @@ impl<'a> TcpSocket<'a> { repr.ack_number = Some(ack_number); self.remote_last_ack = ack_number; + if repr.control == TcpControl::Syn { + // First enable the option, without assigning any value, to get a correct + // result for (ip_repr:Unspecified).payload_len below. + repr.max_seg_size = Some(0); + } + let ip_repr = IpRepr::Unspecified { src_addr: self.local_endpoint.addr, dst_addr: self.remote_endpoint.addr,