|
@@ -3389,6 +3389,10 @@ static int tcp_send_syn_data(struct sock *sk, struct sk_buff *syn)
|
|
|
goto done;
|
|
goto done;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /* data was not sent, this is our new send_head */
|
|
|
|
|
+ sk->sk_send_head = syn_data;
|
|
|
|
|
+ tp->packets_out -= tcp_skb_pcount(syn_data);
|
|
|
|
|
+
|
|
|
fallback:
|
|
fallback:
|
|
|
/* Send a regular SYN with Fast Open cookie request option */
|
|
/* Send a regular SYN with Fast Open cookie request option */
|
|
|
if (fo->cookie.len > 0)
|
|
if (fo->cookie.len > 0)
|
|
@@ -3441,6 +3445,11 @@ int tcp_connect(struct sock *sk)
|
|
|
*/
|
|
*/
|
|
|
tp->snd_nxt = tp->write_seq;
|
|
tp->snd_nxt = tp->write_seq;
|
|
|
tp->pushed_seq = tp->write_seq;
|
|
tp->pushed_seq = tp->write_seq;
|
|
|
|
|
+ buff = tcp_send_head(sk);
|
|
|
|
|
+ if (unlikely(buff)) {
|
|
|
|
|
+ tp->snd_nxt = TCP_SKB_CB(buff)->seq;
|
|
|
|
|
+ tp->pushed_seq = TCP_SKB_CB(buff)->seq;
|
|
|
|
|
+ }
|
|
|
TCP_INC_STATS(sock_net(sk), TCP_MIB_ACTIVEOPENS);
|
|
TCP_INC_STATS(sock_net(sk), TCP_MIB_ACTIVEOPENS);
|
|
|
|
|
|
|
|
/* Timer for repeating the SYN until an answer. */
|
|
/* Timer for repeating the SYN until an answer. */
|