diff options
Diffstat (limited to 'lib/libtle_l4p/tcp_rxtx.c')
-rw-r--r-- | lib/libtle_l4p/tcp_rxtx.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/libtle_l4p/tcp_rxtx.c b/lib/libtle_l4p/tcp_rxtx.c index a6b3989..b525751 100644 --- a/lib/libtle_l4p/tcp_rxtx.c +++ b/lib/libtle_l4p/tcp_rxtx.c @@ -1547,6 +1547,11 @@ rx_synack(struct tle_tcp_stream *s, uint32_t ts, uint32_t state, s->tcb.rcv.irs = si->seq; s->tcb.rcv.nxt = si->seq + 1; + /* if peer doesn't support WSCALE opt, recalculate RCV.WND */ + s->tcb.rcv.wscale = (so.wscale == TCP_WSCALE_NONE) ? + TCP_WSCALE_NONE : TCP_WSCALE_DEFAULT; + s->tcb.rcv.wnd = calc_rx_wnd(s, s->tcb.rcv.wscale); + /* calculate initial rto */ rto_estimate(&s->tcb, ts - s->tcb.snd.ts); |