summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/session/application.c7
-rw-r--r--src/vnet/session/session.c2
2 files changed, 5 insertions, 4 deletions
diff --git a/src/vnet/session/application.c b/src/vnet/session/application.c
index 7d0fd5567a3..260ae588209 100644
--- a/src/vnet/session/application.c
+++ b/src/vnet/session/application.c
@@ -557,13 +557,12 @@ app_worker_free (app_worker_t * app_wrk)
&& app_wrk->first_segment_manager != app_wrk->connects_seg_manager)
{
sm = segment_manager_get (app_wrk->first_segment_manager);
+ sm->first_is_protected = 0;
+ sm->app_wrk_index = SEGMENT_MANAGER_INVALID_APP_INDEX;
/* .. and has no fifos, e.g. it might be used for redirected sessions,
* remove it */
if (!segment_manager_has_fifos (sm))
- {
- sm->app_wrk_index = SEGMENT_MANAGER_INVALID_APP_INDEX;
- segment_manager_del (sm);
- }
+ segment_manager_del (sm);
}
/*
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index 372a6f93a95..83b96d317dc 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -760,6 +760,8 @@ stream_session_disconnect_notify (transport_connection_t * tc)
stream_session_t *s;
s = session_get (tc->s_index, tc->thread_index);
+ if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
+ return;
s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
app_wrk = app_worker_get_if_valid (s->app_wrk_index);
if (!app_wrk)