Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
session: add unix socket api for app attachment
[vpp.git]
/
src
/
vnet
/
session
/
session.c
diff --git
a/src/vnet/session/session.c
b/src/vnet/session/session.c
index
a709302
..
d27d1bb
100644
(file)
--- a/
src/vnet/session/session.c
+++ b/
src/vnet/session/session.c
@@
-624,6
+624,11
@@
session_enqueue_notify_inline (session_t * s)
SESSION_EVT (SESSION_EVT_ENQ, s, svm_fifo_max_dequeue_prod (s->rx_fifo));
s->flags &= ~SESSION_F_RX_EVT;
SESSION_EVT (SESSION_EVT_ENQ, s, svm_fifo_max_dequeue_prod (s->rx_fifo));
s->flags &= ~SESSION_F_RX_EVT;
+
+ /* Application didn't confirm accept yet */
+ if (PREDICT_FALSE (s->session_state == SESSION_STATE_ACCEPTING))
+ return 0;
+
if (PREDICT_FALSE (app_worker_lock_and_send_event (app_wrk, s,
SESSION_IO_EVT_RX)))
return -1;
if (PREDICT_FALSE (app_worker_lock_and_send_event (app_wrk, s,
SESSION_IO_EVT_RX)))
return -1;
@@
-807,8
+812,11
@@
session_stream_connect_notify (transport_connection_t * tc,
if (app_worker_connect_notify (app_wrk, s, SESSION_E_NONE, opaque))
{
if (app_worker_connect_notify (app_wrk, s, SESSION_E_NONE, opaque))
{
+ session_lookup_del_connection (tc);
+ /* Avoid notifying app about rejected session cleanup */
s = session_get (new_si, new_ti);
s = session_get (new_si, new_ti);
- session_free_w_fifos (s);
+ segment_manager_dealloc_fifos (s->rx_fifo, s->tx_fifo);
+ session_free (s);
return -1;
}
return -1;
}
@@
-1671,7
+1679,7
@@
session_manager_main_enable (vlib_main_t * vm)
wrk->new_head = clib_llist_make_head (wrk->event_elts, evt_list);
wrk->old_head = clib_llist_make_head (wrk->event_elts, evt_list);
wrk->vm = vlib_mains[i];
wrk->new_head = clib_llist_make_head (wrk->event_elts, evt_list);
wrk->old_head = clib_llist_make_head (wrk->event_elts, evt_list);
wrk->vm = vlib_mains[i];
- wrk->last_vlib_time = vlib_time_now (v
lib_mains[i]
);
+ wrk->last_vlib_time = vlib_time_now (v
m
);
wrk->last_vlib_us_time = wrk->last_vlib_time * CLIB_US_TIME_FREQ;
vec_validate (wrk->session_to_enqueue, smm->last_transport_proto_type);
wrk->last_vlib_us_time = wrk->last_vlib_time * CLIB_US_TIME_FREQ;
vec_validate (wrk->session_to_enqueue, smm->last_transport_proto_type);
@@
-1896,6
+1904,8
@@
session_config_fn (vlib_main_t * vm, unformat_input_t * input)
;
else if (unformat (input, "enable"))
smm->session_enable_asap = 1;
;
else if (unformat (input, "enable"))
smm->session_enable_asap = 1;
+ else if (unformat (input, "use-app-socket-api"))
+ appns_sapi_enable ();
else
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);
else
return clib_error_return (0, "unknown input `%U'",
format_unformat_error, input);