aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
authorMatus Fabian <matfabia@cisco.com>2024-12-30 20:40:51 +0100
committerMatus Fabian <matfabia@cisco.com>2024-12-30 20:42:37 +0100
commite210d413d53081f8603af16f203fb92e08127cdc (patch)
treeb60aac85839a9339011e815b7192b204127caa73 /src/vnet/session
parentd11d31653d948c9f3ac80afd69f111657b007f0f (diff)
session: proxy session migration fix
Type: fix Change-Id: I487ee4e69d8885f46d7a4af2c66a710da66108c5 Signed-off-by: Matus Fabian <matfabia@cisco.com>
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/application_worker.c5
-rw-r--r--src/vnet/session/session.c13
2 files changed, 12 insertions, 6 deletions
diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c
index f056aad6c3c..cae340cd64e 100644
--- a/src/vnet/session/application_worker.c
+++ b/src/vnet/session/application_worker.c
@@ -455,7 +455,10 @@ app_worker_init_connected (app_worker_t * app_wrk, session_t * s)
/* Allocate fifos for session, unless the app is a builtin proxy */
if (application_is_builtin_proxy (app))
- return app->cb_fns.proxy_alloc_session_fifos (s);
+ {
+ s->flags |= SESSION_F_PROXY;
+ return app->cb_fns.proxy_alloc_session_fifos (s);
+ }
sm = app_worker_get_connect_segment_manager (app_wrk);
return app_worker_alloc_session_fifos (sm, s);
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index be2c5dc4df7..cc0e89fd1e2 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -1030,10 +1030,13 @@ session_switch_pool (void *cb_args)
if (!app_wrk)
goto app_closed;
- /* Cleanup fifo segment slice state for fifos */
- sm = app_worker_get_connect_segment_manager (app_wrk);
- segment_manager_detach_fifo (sm, &s->rx_fifo);
- segment_manager_detach_fifo (sm, &s->tx_fifo);
+ if (!(s->flags & SESSION_F_PROXY))
+ {
+ /* Cleanup fifo segment slice state for fifos */
+ sm = app_worker_get_connect_segment_manager (app_wrk);
+ segment_manager_detach_fifo (sm, &s->rx_fifo);
+ segment_manager_detach_fifo (sm, &s->tx_fifo);
+ }
/* Check if session closed during migration */
if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
@@ -1079,7 +1082,7 @@ session_dgram_connect_notify (transport_connection_t * tc,
session_lookup_add_connection (tc, session_handle (new_s));
app_wrk = app_worker_get_if_valid (new_s->app_wrk_index);
- if (app_wrk)
+ if (app_wrk && !(new_s->flags & SESSION_F_PROXY))
{
/* New set of fifos attached to the same shared memory */
sm = app_worker_get_connect_segment_manager (app_wrk);