diff options
author | Paul Mackerras <paulus@samba.org> | 2008-05-23 16:53:23 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-05-23 16:53:23 +1000 |
commit | acf464817d5e7be9fb67aec4027dbee0ac9be17a (patch) | |
tree | 39fd061c0a91a11d3ae4ff19b7fe179325e39bbf /net/ipv4/tcp_output.c | |
parent | 80d267f9aee6f1b5df602b5a19fb7b4923f17db2 (diff) | |
parent | 8962cadbe7cbc4ed0fff94f56ebab505a10afd2e (diff) | |
download | kernel-crypto-acf464817d5e7be9fb67aec4027dbee0ac9be17a.tar.gz kernel-crypto-acf464817d5e7be9fb67aec4027dbee0ac9be17a.tar.xz kernel-crypto-acf464817d5e7be9fb67aec4027dbee0ac9be17a.zip |
Merge branch 'merge' into powerpc-next
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r-- | net/ipv4/tcp_output.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index debf2358160..e399bde7813 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1836,7 +1836,7 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) { struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); - unsigned int cur_mss = tcp_current_mss(sk, 0); + unsigned int cur_mss; int err; /* Inconslusive MTU probe */ @@ -1858,6 +1858,11 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) return -ENOMEM; } + if (inet_csk(sk)->icsk_af_ops->rebuild_header(sk)) + return -EHOSTUNREACH; /* Routing failure or similar. */ + + cur_mss = tcp_current_mss(sk, 0); + /* If receiver has shrunk his window, and skb is out of * new window, do not retransmit it. The exception is the * case, when window is shrunk to zero. In this case @@ -1884,9 +1889,6 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) (sysctl_tcp_retrans_collapse != 0)) tcp_retrans_try_collapse(sk, skb, cur_mss); - if (inet_csk(sk)->icsk_af_ops->rebuild_header(sk)) - return -EHOSTUNREACH; /* Routing failure or similar. */ - /* Some Solaris stacks overoptimize and ignore the FIN on a * retransmit when old data is attached. So strip it off * since it is cheap to do so and saves bytes on the network. |