aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-07-17 05:35:47 -0700
committerDave Barach <openvpp@barachs.net>2018-07-19 21:15:28 +0000
commit3d0fadc01fa92664b8ebc5d8400b6344ee7e92df (patch)
tree283618c3fb801af48e0dd68680c9a5d13b4ae10d
parent970a0b87bb7d7d9c16acbe9ea207a7d4c81bfaee (diff)
session: coverity warnings
Change-Id: I4505954c737e8c6a3d4177c6833f2b12099e6dd4 Signed-off-by: Florin Coras <fcoras@cisco.com>
-rw-r--r--src/tests/vnet/session/tcp_echo.c19
-rw-r--r--src/vnet/session/session_node.c18
2 files changed, 17 insertions, 20 deletions
diff --git a/src/tests/vnet/session/tcp_echo.c b/src/tests/vnet/session/tcp_echo.c
index 6e41e4b2c1a..626ef847e16 100644
--- a/src/tests/vnet/session/tcp_echo.c
+++ b/src/tests/vnet/session/tcp_echo.c
@@ -881,20 +881,16 @@ session_disconnected_handler (session_disconnected_msg_t * mp)
int rv = 0;
p = hash_get (em->session_index_by_vpp_handles, mp->handle);
-
- if (p)
- {
- clib_warning ("disconnected");
- session = pool_elt_at_index (em->sessions, p[0]);
- hash_unset (em->session_index_by_vpp_handles, mp->handle);
- pool_put (em->sessions, session);
- }
- else
+ if (!p)
{
clib_warning ("couldn't find session key %llx", mp->handle);
- rv = -11;
+ return;
}
+ session = pool_elt_at_index (em->sessions, p[0]);
+ hash_unset (em->session_index_by_vpp_handles, mp->handle);
+ pool_put (em->sessions, session);
+
app_alloc_ctrl_evt_to_vpp (session->vpp_evt_q, app_evt,
SESSION_CTRL_EVT_DISCONNECTED_REPLY);
rmp = (session_disconnected_reply_msg_t *) app_evt->evt->data;
@@ -903,8 +899,7 @@ session_disconnected_handler (session_disconnected_msg_t * mp)
rmp->context = mp->context;
app_send_ctrl_evt_to_vpp (session->vpp_evt_q, app_evt);
- if (session)
- session_print_stats (em, session);
+ session_print_stats (em, session);
}
static void
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index bf0c3959471..1ae92edf1ea 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -112,22 +112,24 @@ session_mq_disconnected_handler (void *data)
svm_msg_q_msg_t _msg, *msg = &_msg;
session_disconnected_msg_t *mp;
session_event_t *evt;
+ stream_session_t *s;
application_t *app;
int rv = 0;
mp = (session_disconnected_msg_t *) data;
app = application_lookup (mp->client_index);
- if (app)
+ s = session_get_from_handle_if_valid (mp->handle);
+ if (!(app && s && s->app_index == app->index))
{
- a->handle = mp->handle;
- a->app_index = app->index;
- rv = vnet_disconnect_session (a);
- }
- else
- {
- rv = VNET_API_ERROR_APPLICATION_NOT_ATTACHED;
+ clib_warning ("could not disconnect session: %llu app: %u", mp->handle,
+ mp->client_index);
+ return;
}
+ a->handle = mp->handle;
+ a->app_index = app->index;
+ rv = vnet_disconnect_session (a);
+
svm_msg_q_lock_and_alloc_msg_w_ring (app->event_queue,
SESSION_MQ_CTRL_EVT_RING,
SVM_Q_WAIT, msg);