|
@@ -481,7 +481,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
|
|
|
/* RFC1323: The window in SYN & SYN/ACK segments
|
|
|
* is never scaled.
|
|
|
*/
|
|
|
- th->window = htons(tp->rcv_wnd);
|
|
|
+ th->window = htons(min(tp->rcv_wnd, 65535U));
|
|
|
} else {
|
|
|
th->window = htons(tcp_select_window(sk));
|
|
|
}
|
|
@@ -2160,7 +2160,7 @@ struct sk_buff * tcp_make_synack(struct sock *sk, struct dst_entry *dst,
|
|
|
}
|
|
|
|
|
|
/* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */
|
|
|
- th->window = htons(req->rcv_wnd);
|
|
|
+ th->window = htons(min(req->rcv_wnd, 65535U));
|
|
|
|
|
|
TCP_SKB_CB(skb)->when = tcp_time_stamp;
|
|
|
tcp_syn_build_options((__be32 *)(th + 1), dst_metric(dst, RTAX_ADVMSS), ireq->tstamp_ok,
|