Skip to content

Commit 93c7fba

Browse files
committedJan 16, 2017
Always display meaningful endpoint in trace messages.
1 parent c4c8a44 commit 93c7fba

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed
 

‎src/socket/tcp.rs

+13-5
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,17 @@ impl Retransmit {
192192
}
193193
}
194194

195-
fn commit(&mut self, timestamp: u64) {
195+
fn commit(&mut self, timestamp: u64) -> bool {
196196
if self.delay == 0 {
197197
self.delay = 100; // ms
198198
self.resend_at = timestamp + self.delay;
199+
false
199200
} else if timestamp >= self.resend_at {
200-
net_trace!("retransmitting after a {}ms delay", self.delay);
201201
self.resend_at = timestamp + self.delay;
202202
self.delay *= 2;
203+
true
204+
} else {
205+
false
203206
}
204207
}
205208
}
@@ -636,16 +639,18 @@ impl<'a> TcpSocket<'a> {
636639
(_, TcpRepr { control: TcpControl::Rst, .. }) => {
637640
net_trace!("tcp:{}:{}: received RST",
638641
self.local_endpoint, self.remote_endpoint);
642+
self.set_state(State::Closed);
639643
self.local_endpoint = IpEndpoint::default();
640644
self.remote_endpoint = IpEndpoint::default();
641-
self.set_state(State::Closed);
642645
return Ok(())
643646
}
644647

645648
// SYN packets in the LISTEN state change it to SYN-RECEIVED.
646649
(State::Listen, TcpRepr {
647650
src_port, dst_port, control: TcpControl::Syn, seq_number, ack_number: None, ..
648651
}) => {
652+
net_trace!("tcp:{}: received SYN",
653+
self.local_endpoint);
649654
self.local_endpoint = IpEndpoint::new(ip_repr.dst_addr(), dst_port);
650655
self.remote_endpoint = IpEndpoint::new(ip_repr.src_addr(), src_port);
651656
// FIXME: use something more secure here
@@ -706,9 +711,9 @@ impl<'a> TcpSocket<'a> {
706711
// ACK packets in LAST-ACK state change it to CLOSED.
707712
(State::LastAck, TcpRepr { control: TcpControl::None, .. }) => {
708713
// Clear the remote endpoint, or we'll send an RST there.
714+
self.set_state(State::Closed);
709715
self.remote_endpoint = IpEndpoint::default();
710716
self.local_seq_no += 1;
711-
self.set_state(State::Closed);
712717
}
713718

714719
_ => {
@@ -858,7 +863,10 @@ impl<'a> TcpSocket<'a> {
858863
}
859864

860865
if should_send {
861-
self.retransmit.commit(timestamp);
866+
if self.retransmit.commit(timestamp) {
867+
net_trace!("tcp:{}:{}: retransmit after {}ms",
868+
self.local_endpoint, self.remote_endpoint, self.retransmit.delay);
869+
}
862870

863871
repr.ack_number = Some(ack_number);
864872
self.remote_last_ack = ack_number;

0 commit comments

Comments
 (0)
Please sign in to comment.