Prechádzať zdrojové kódy

Fix an incorrect payload length when sending TCP MSS option.

whitequark 8 rokov pred
rodič
commit
e8ece3e567
1 zmenil súbory, kde vykonal 6 pridanie a 0 odobranie
  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,