tcp: use nonzero initial sequence number.
This commit is contained in:
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.
|
// Conservative initial RTT estimate.
|
||||||
const RTTE_INITIAL_RTT: u32 = 300;
|
const RTTE_INITIAL_RTT: u32 = 300;
|
||||||
const RTTE_INITIAL_DEV: u32 = 100;
|
const RTTE_INITIAL_DEV: u32 = 100;
|
||||||
|
@ -390,7 +395,7 @@ impl<'a> TcpSocket<'a> {
|
||||||
listen_address: IpAddress::default(),
|
listen_address: IpAddress::default(),
|
||||||
local_endpoint: IpEndpoint::default(),
|
local_endpoint: IpEndpoint::default(),
|
||||||
remote_endpoint: IpEndpoint::default(),
|
remote_endpoint: IpEndpoint::default(),
|
||||||
local_seq_no: TcpSeqNumber::default(),
|
local_seq_no: INITIAL_SEQ_NO,
|
||||||
remote_seq_no: TcpSeqNumber::default(),
|
remote_seq_no: TcpSeqNumber::default(),
|
||||||
remote_last_seq: TcpSeqNumber::default(),
|
remote_last_seq: TcpSeqNumber::default(),
|
||||||
remote_last_ack: None,
|
remote_last_ack: None,
|
||||||
|
@ -591,7 +596,7 @@ impl<'a> TcpSocket<'a> {
|
||||||
self.listen_address = IpAddress::default();
|
self.listen_address = IpAddress::default();
|
||||||
self.local_endpoint = IpEndpoint::default();
|
self.local_endpoint = IpEndpoint::default();
|
||||||
self.remote_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_seq_no = TcpSeqNumber::default();
|
||||||
self.remote_last_seq = TcpSeqNumber::default();
|
self.remote_last_seq = TcpSeqNumber::default();
|
||||||
self.remote_last_ack = None;
|
self.remote_last_ack = None;
|
||||||
|
@ -2842,10 +2847,12 @@ mod test {
|
||||||
(1048576, 5),
|
(1048576, 5),
|
||||||
] {
|
] {
|
||||||
let mut s = socket_with_buffer_sizes(64, *buffer_size);
|
let mut s = socket_with_buffer_sizes(64, *buffer_size);
|
||||||
|
s.local_seq_no = LOCAL_SEQ;
|
||||||
assert_eq!(s.remote_win_shift, *shift_amt);
|
assert_eq!(s.remote_win_shift, *shift_amt);
|
||||||
s.connect(REMOTE_END, LOCAL_END).unwrap();
|
s.connect(REMOTE_END, LOCAL_END).unwrap();
|
||||||
recv!(s, [TcpRepr {
|
recv!(s, [TcpRepr {
|
||||||
control: TcpControl::Syn,
|
control: TcpControl::Syn,
|
||||||
|
seq_number: LOCAL_SEQ,
|
||||||
ack_number: None,
|
ack_number: None,
|
||||||
max_seg_size: Some(BASE_MSS),
|
max_seg_size: Some(BASE_MSS),
|
||||||
window_scale: Some(*shift_amt),
|
window_scale: Some(*shift_amt),
|
||||||
|
|
Loading…
Reference in New Issue