summaryrefslogtreecommitdiffstats
path: root/src/vnet/session/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/session/session.c')
-rw-r--r--src/vnet/session/session.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index 67652b5eb19..9ac9229d4db 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -705,7 +705,7 @@ session_main_flush_enqueue_events (transport_proto_t transport_proto,
session_worker_t *wrk = session_main_get_worker (thread_index);
session_handle_t *handles;
session_t *s;
- u32 i;
+ u32 i, is_cl;
handles = wrk->session_to_enqueue[transport_proto];
@@ -714,8 +714,12 @@ session_main_flush_enqueue_events (transport_proto_t transport_proto,
s = session_get_from_handle (handles[i]);
session_fifo_tuning (s, s->rx_fifo, SESSION_FT_ACTION_ENQUEUED,
0 /* TODO/not needed */);
- session_enqueue_notify_inline (s,
- s->thread_index != thread_index ? 1 : 0);
+ is_cl =
+ s->thread_index != thread_index || (s->flags & SESSION_F_IS_CLESS);
+ if (!is_cl)
+ session_enqueue_notify_inline (s, 0);
+ else
+ session_enqueue_notify_inline (s, 1);
}
vec_reset_length (handles);
@@ -1345,6 +1349,8 @@ session_open_cl (session_endpoint_cfg_t *rmt, session_handle_t *rsh)
s->app_wrk_index = app_wrk->wrk_index;
s->opaque = rmt->opaque;
session_set_state (s, SESSION_STATE_OPENED);
+ if (transport_connection_is_cless (tc))
+ s->flags |= SESSION_F_IS_CLESS;
if (app_worker_init_connected (app_wrk, s))
{
session_free (s);
@@ -1470,6 +1476,8 @@ session_listen (session_t * ls, session_endpoint_cfg_t * sep)
ls = listen_session_get (s_index);
ls->connection_index = tc_index;
ls->opaque = sep->opaque;
+ if (transport_connection_is_cless (session_get_transport (ls)))
+ ls->flags |= SESSION_F_IS_CLESS;
return 0;
}