Skip to content

Commit c0629f7

Browse files
committedJul 23, 2017
Log correct delay when performing TCP retransmit.
Before, the delay was erroneously multiplied by 2 and also did not take processing delay into account.
1 parent d5610e7 commit c0629f7

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed
 

‎src/socket/tcp.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -201,17 +201,18 @@ impl Retransmit {
201201
}
202202
}
203203

204-
fn commit(&mut self, timestamp: u64) -> bool {
204+
fn commit(&mut self, timestamp: u64) -> Option<u64> {
205205
if self.delay == 0 {
206206
self.delay = 100; // ms
207207
self.resend_at = timestamp + self.delay;
208-
false
208+
None
209209
} else if timestamp >= self.resend_at {
210+
let actual_delay = (timestamp - self.resend_at) + self.delay;
210211
self.resend_at = timestamp + self.delay;
211212
self.delay *= 2;
212-
true
213+
Some(actual_delay)
213214
} else {
214-
false
215+
None
215216
}
216217
}
217218
}
@@ -1109,10 +1110,10 @@ impl<'a> TcpSocket<'a> {
11091110
}
11101111

11111112
if should_send {
1112-
if self.retransmit.commit(timestamp) {
1113-
net_trace!("[{}]{}:{}: retransmit after {}ms",
1113+
if let Some(actual_delay) = self.retransmit.commit(timestamp) {
1114+
net_trace!("[{}]{}:{}: retransmitting at t+{}ms ",
11141115
self.debug_id, self.local_endpoint, self.remote_endpoint,
1115-
self.retransmit.delay);
1116+
actual_delay);
11161117
}
11171118

11181119
if self.state != State::SynSent {

0 commit comments

Comments
 (0)