X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession_api.c;h=2d20d5f697b887e90d612464d472475c120a227a;hb=e2ea193171f4701aa575379da0e1bac16a85aa33;hp=d37b3c995d06a19febb0bc80f4fee47f1abc130a;hpb=fa76a76bf3388f09d55d0c83e7aea507c44f9619;p=vpp.git diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index d37b3c995d0..2d20d5f697b 100755 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -408,7 +408,9 @@ mq_try_lock_and_alloc_msg (svm_msg_q_t * app_mq, svm_msg_q_msg_t * msg) if (!rv) return 0; try++; + usleep (1); } + clib_warning ("failed to alloc msg"); return -1; } @@ -588,16 +590,18 @@ mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context, if (mq_try_lock_and_alloc_msg (app_mq, msg)) return -1; + evt = svm_msg_q_msg_data (app_mq, msg); clib_memset (evt, 0, sizeof (*evt)); evt->event_type = SESSION_CTRL_EVT_CONNECTED; mp = (session_connected_msg_t *) evt->data; mp->context = api_context; - mp->segment_handle = session_segment_handle (s); if (is_fail) goto done; + mp->segment_handle = session_segment_handle (s); + if (session_has_transport (s)) { tc = session_get_transport (s); @@ -825,6 +829,7 @@ done: rmp->app_event_queue_address = pointer_to_uword (a->app_evt_q); rmp->n_fds = n_fds; rmp->fd_flags = fd_flags; + rmp->segment_handle = clib_host_to_net_u64 (a->segment_handle); } })); /* *INDENT-ON* */ @@ -1059,6 +1064,7 @@ vl_api_disconnect_session_reply_t_handler (vl_api_disconnect_session_reply_t * static void vl_api_reset_session_reply_t_handler (vl_api_reset_session_reply_t * mp) { + vnet_disconnect_args_t _a = { 0 }, *a = &_a; app_worker_t *app_wrk; application_t *app; stream_session_t *s; @@ -1093,7 +1099,9 @@ vl_api_reset_session_reply_t_handler (vl_api_reset_session_reply_t * mp) /* This comes as a response to a reset, transport only waiting for * confirmation to remove connection state, no need to disconnect */ - stream_session_cleanup (s); + a->handle = mp->handle; + a->app_index = app->app_index; + vnet_disconnect_session (a); } static void