Browse Source

Fix an incorrect payload length when sending TCP MSS option.

whitequark 8 years ago
parent
commit
e8ece3e567
1 changed files with 6 additions and 0 deletions
  1. 6 0
      src/socket/tcp.rs

+ 6 - 0
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,