tcp: use nonzero initial sequence number.
parent
0e7f78f47d
commit
3baa5fd28f
|
@ -54,6 +54,11 @@ impl fmt::Display for State {
|
|||
}
|
||||
}
|
||||
|
||||
/// Initial sequence number. This used to be 0, but some servers don't behave correctly
|
||||
/// with that, so we use a non-zero starting sequence number. TODO: randomize instead.
|
||||
/// https://github.com/smoltcp-rs/smoltcp/issues/489
|
||||
const INITIAL_SEQ_NO: TcpSeqNumber = TcpSeqNumber(42);
|
||||
|
||||
// Conservative initial RTT estimate.
|
||||
const RTTE_INITIAL_RTT: u32 = 300;
|
||||
const RTTE_INITIAL_DEV: u32 = 100;
|
||||
|
@ -390,7 +395,7 @@ impl<'a> TcpSocket<'a> {
|
|||
listen_address: IpAddress::default(),
|
||||
local_endpoint: IpEndpoint::default(),
|
||||
remote_endpoint: IpEndpoint::default(),
|
||||
local_seq_no: TcpSeqNumber::default(),
|
||||
local_seq_no: INITIAL_SEQ_NO,
|
||||
remote_seq_no: TcpSeqNumber::default(),
|
||||
remote_last_seq: TcpSeqNumber::default(),
|
||||
remote_last_ack: None,
|
||||
|
@ -591,7 +596,7 @@ impl<'a> TcpSocket<'a> {
|
|||
self.listen_address = IpAddress::default();
|
||||
self.local_endpoint = IpEndpoint::default();
|
||||
self.remote_endpoint = IpEndpoint::default();
|
||||
self.local_seq_no = TcpSeqNumber::default();
|
||||
self.local_seq_no = INITIAL_SEQ_NO;
|
||||
self.remote_seq_no = TcpSeqNumber::default();
|
||||
self.remote_last_seq = TcpSeqNumber::default();
|
||||
self.remote_last_ack = None;
|
||||
|
@ -2842,10 +2847,12 @@ mod test {
|
|||
(1048576, 5),
|
||||
] {
|
||||
let mut s = socket_with_buffer_sizes(64, *buffer_size);
|
||||
s.local_seq_no = LOCAL_SEQ;
|
||||
assert_eq!(s.remote_win_shift, *shift_amt);
|
||||
s.connect(REMOTE_END, LOCAL_END).unwrap();
|
||||
recv!(s, [TcpRepr {
|
||||
control: TcpControl::Syn,
|
||||
seq_number: LOCAL_SEQ,
|
||||
ack_number: None,
|
||||
max_seg_size: Some(BASE_MSS),
|
||||
window_scale: Some(*shift_amt),
|
||||
|
|
Loading…
Reference in New Issue