diff options
author | Florin Coras <fcoras@cisco.com> | 2018-12-27 14:51:46 -0800 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2019-01-01 14:55:53 +0000 |
commit | b0f662fe93f1db0098f7b50306c2f084644788b1 (patch) | |
tree | e70b7c9594391185c0c0b65f492a5ba931c4e69b /src/vnet/tcp/tcp.c | |
parent | 22af447454cf097ac4fc59f9072d805c371ab803 (diff) |
vcl/ldp: add write msg function and fine tuning
Allows app to push data. Additionally, ensure reset/close replies are
not sent unless vcl closes the session.
Change-Id: Icbbf933cf57b55cfbcc7b802af0f83919a066f65
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/tcp/tcp.c')
-rw-r--r-- | src/vnet/tcp/tcp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c index 564f200bc00..7f6a087b2f3 100644 --- a/src/vnet/tcp/tcp.c +++ b/src/vnet/tcp/tcp.c @@ -284,7 +284,8 @@ tcp_connection_reset (tcp_connection_t * tc) break; case TCP_STATE_SYN_SENT: session_stream_connect_notify (&tc->connection, 1 /* fail */ ); - tcp_connection_cleanup (tc); + tcp_connection_set_state (tc, TCP_STATE_CLOSED); + tcp_timer_set (tc, TCP_TIMER_WAITCLOSE, TCP_CLEANUP_TIME); break; case TCP_STATE_ESTABLISHED: tcp_connection_timers_reset (tc); @@ -307,6 +308,7 @@ tcp_connection_reset (tcp_connection_t * tc) tcp_connection_set_state (tc, TCP_STATE_CLOSED); break; case TCP_STATE_CLOSED: + case TCP_STATE_TIME_WAIT: break; default: TCP_DBG ("reset state: %u", tc->state); @@ -1293,9 +1295,9 @@ tcp_timer_waitclose_handler (u32 conn_index) * is closed. We haven't sent everything but we did try. */ tcp_cong_recovery_off (tc); tcp_send_fin (tc); - rto = clib_max (tc->rto >> tc->rto_boff, 1); + rto = clib_max ((tc->rto >> tc->rto_boff) * TCP_TO_TIMER_TICK, 1); tcp_timer_set (tc, TCP_TIMER_WAITCLOSE, - clib_min (rto * TCP_TO_TIMER_TICK, TCP_2MSL_TIME)); + clib_min (rto, TCP_2MSL_TIME)); session_transport_closed_notify (&tc->connection); } else |