Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78439
b: refs/heads/master
c: 92d3192
h: refs/heads/master
i:
  78437: a295aa1
  78435: eb2c6a0
  78431: 01629d2
v: v3
  • Loading branch information
Gerrit Renker authored and David S. Miller committed Jan 28, 2008
1 parent e64c193 commit 8464d69
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 09f7709f4929666006931f1d4efc498a6d419bbc
refs/heads/master: 92d31920b84f258badf206eea8aaf5ac677ac535
13 changes: 12 additions & 1 deletion trunk/net/dccp/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,18 @@ void dccp_send_close(struct sock *sk, const int active)
dccp_write_xmit(sk, 1);
dccp_skb_entail(sk, skb);
dccp_transmit_skb(sk, skb_clone(skb, prio));
/* FIXME do we need a retransmit timer here? */
/*
* Retransmission timer for active-close: RFC 4340, 8.3 requires
* to retransmit the Close/CloseReq until the CLOSING/CLOSEREQ
* state can be left. The initial timeout is 2 RTTs.
* Since RTT measurement is done by the CCIDs, there is no easy
* way to get an RTT sample. The fallback RTT from RFC 4340, 3.4
* is too low (200ms); we use a high value to avoid unnecessary
* retransmissions when the link RTT is > 0.2 seconds.
* FIXME: Let main module sample RTTs and use that instead.
*/
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,
DCCP_TIMEOUT_INIT, DCCP_RTO_MAX);
} else
dccp_transmit_skb(sk, skb);
}
18 changes: 0 additions & 18 deletions trunk/net/dccp/proto.c
Original file line number Diff line number Diff line change
Expand Up @@ -996,24 +996,6 @@ void dccp_close(struct sock *sk, long timeout)
if (state != DCCP_CLOSED && sk->sk_state == DCCP_CLOSED)
goto out;

/*
* The last release_sock may have processed the CLOSE or RESET
* packet moving sock to CLOSED state, if not we have to fire
* the CLOSE/CLOSEREQ retransmission timer, see "8.3. Termination"
* in draft-ietf-dccp-spec-11. -acme
*/
if (sk->sk_state == DCCP_CLOSING) {
/* FIXME: should start at 2 * RTT */
/* Timer for repeating the CLOSE/CLOSEREQ until an answer. */
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,
inet_csk(sk)->icsk_rto,
DCCP_RTO_MAX);
#if 0
/* Yeah, we should use sk->sk_prot->orphan_count, etc */
dccp_set_state(sk, DCCP_CLOSED);
#endif
}

if (sk->sk_state == DCCP_CLOSED)
inet_csk_destroy_sock(sk);

Expand Down

0 comments on commit 8464d69

Please sign in to comment.