summaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2019-09-24 12:45:14 -0700
committerAndrew Yourtchenko <ayourtch@gmail.com>2019-10-03 08:44:24 +0000
commit1e937f8a8818fdeb6d9c134d062472bf0a8d88a2 (patch)
tree48d78704b32e2c3d020e4b603bb29dbe848b6565 /src/vnet
parente8bcb944c5a83e55060b721aaf0e870754f756c3 (diff)
session: fix cleanup in closing states
Type: fix Change-Id: Iccc283bb98d3bb459a711ec2b74d6a32ad12903b Signed-off-by: Florin Coras <fcoras@cisco.com> (cherry picked from commit 54c93cfc2556d9c6d2cf472f51d4c2866a556ef6)
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/session/session.c4
-rw-r--r--src/vnet/tcp/tcp.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index cc9f4a825c4..47f7326fffb 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -1279,11 +1279,9 @@ session_transport_reset (session_t * s)
void
session_transport_cleanup (session_t * s)
{
- s->session_state = SESSION_STATE_CLOSED;
-
/* Delete from main lookup table before we axe the the transport */
session_lookup_del_session (s);
- if (s->session_state != SESSION_STATE_TRANSPORT_DELETED)
+ if (s->session_state < SESSION_STATE_TRANSPORT_DELETED)
transport_cleanup (session_get_transport_proto (s), s->connection_index,
s->thread_index);
/* Since we called cleanup, no delete notification will come. So, make
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c
index f32a7094409..75a45a448bd 100644
--- a/src/vnet/tcp/tcp.c
+++ b/src/vnet/tcp/tcp.c
@@ -475,6 +475,8 @@ tcp_session_cleanup (u32 conn_index, u32 thread_index)
{
tcp_connection_t *tc;
tc = tcp_connection_get (conn_index, thread_index);
+ if (!tc)
+ return;
tcp_connection_set_state (tc, TCP_STATE_CLOSED);
tcp_connection_cleanup (tc);
}