diff options
author | 2024-12-30 20:40:51 +0100 | |
---|---|---|
committer | 2024-12-30 20:42:37 +0100 | |
commit | e210d413d53081f8603af16f203fb92e08127cdc (patch) | |
tree | b60aac85839a9339011e815b7192b204127caa73 /src/vnet/session | |
parent | d11d31653d948c9f3ac80afd69f111657b007f0f (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.c | 5 | ||||
-rw-r--r-- | src/vnet/session/session.c | 13 |
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); |