diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2007-12-13 09:02:43 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:57:47 -0500 |
commit | 92d31920b84f258badf206eea8aaf5ac677ac535 (patch) | |
tree | b61c5a87ccd5110638df0a4d44924d8dffacbcf1 /net/dccp/proto.c | |
parent | 09f7709f4929666006931f1d4efc498a6d419bbc (diff) |
[DCCP]: Shift the retransmit timer for active-close into output.c
When performing active close, RFC 4340, 8.3. requires to retransmit the
Close/CloseReq with a backoff-retransmit timer starting at intially 2 RTTs.
This patch shifts the existing code for active-close retransmit timer
into output.c, so that the retransmit timer is started when the first
Close/CloseReq is sent. Previously, the timer was started when, after
releasing the socket in dccp_close(), the actively-closing side had not yet
reached the CLOSED/TIMEWAIT state.
The patch further reduces the initial timeout from 3 seconds to the required
2 RTTs, where - in absence of a known RTT - the fallback value specified in
RFC 4340, 3.4 is used.
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/proto.c')
-rw-r--r-- | net/dccp/proto.c | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 60f40ec72ff3..8a73c8f98d76 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
@@ -996,24 +996,6 @@ adjudge_to_death: | |||
996 | if (state != DCCP_CLOSED && sk->sk_state == DCCP_CLOSED) | 996 | if (state != DCCP_CLOSED && sk->sk_state == DCCP_CLOSED) |
997 | goto out; | 997 | goto out; |
998 | 998 | ||
999 | /* | ||
1000 | * The last release_sock may have processed the CLOSE or RESET | ||
1001 | * packet moving sock to CLOSED state, if not we have to fire | ||
1002 | * the CLOSE/CLOSEREQ retransmission timer, see "8.3. Termination" | ||
1003 | * in draft-ietf-dccp-spec-11. -acme | ||
1004 | */ | ||
1005 | if (sk->sk_state == DCCP_CLOSING) { | ||
1006 | /* FIXME: should start at 2 * RTT */ | ||
1007 | /* Timer for repeating the CLOSE/CLOSEREQ until an answer. */ | ||
1008 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, | ||
1009 | inet_csk(sk)->icsk_rto, | ||
1010 | DCCP_RTO_MAX); | ||
1011 | #if 0 | ||
1012 | /* Yeah, we should use sk->sk_prot->orphan_count, etc */ | ||
1013 | dccp_set_state(sk, DCCP_CLOSED); | ||
1014 | #endif | ||
1015 | } | ||
1016 | |||
1017 | if (sk->sk_state == DCCP_CLOSED) | 999 | if (sk->sk_state == DCCP_CLOSED) |
1018 | inet_csk_destroy_sock(sk); | 1000 | inet_csk_destroy_sock(sk); |
1019 | 1001 | ||