diff options
author | Florin Coras <fcoras@cisco.com> | 2018-12-17 23:08:14 -0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-12-19 08:33:35 +0000 |
commit | e2ea193171f4701aa575379da0e1bac16a85aa33 (patch) | |
tree | 29aa3ac276e8e4527f3147b029acb226dd40ba72 | |
parent | 6fbef2322870bbe1768537caecc3ca06bfd70dd7 (diff) |
session: handle close before app accept reply
Change-Id: Ic35bbf55851087d70bfacc1eab4dea4285f98c86
Signed-off-by: Florin Coras <fcoras@cisco.com>
-rw-r--r-- | src/vnet/session/session.c | 3 | ||||
-rwxr-xr-x | src/vnet/session/session_api.c | 1 | ||||
-rw-r--r-- | src/vnet/session/session_node.c | 8 |
3 files changed, 5 insertions, 7 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index a03b53dd3bd..b48459d5081 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -822,8 +822,7 @@ stream_session_delete_notify (transport_connection_t * tc) stream_session_delete (s); break; default: - /* Assume connection was not yet added the lookup table */ - session_free_w_fifos (s); + stream_session_delete (s); break; } } diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 40fc41629d4..2d20d5f697b 100755 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -408,6 +408,7 @@ 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; diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index eb9026c6457..58d31ccb87c 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -64,11 +64,9 @@ session_mq_accepted_reply_handler (void *data) else { s = session_get_from_handle_if_valid (mp->handle); - if (!s) - { - clib_warning ("session 0x%llx doesn't exist", mp->handle); - return; - } + /* Closed while waiting for app to reply */ + if (!s || s->session_state > SESSION_STATE_READY) + return; app_wrk = app_worker_get (s->app_wrk_index); if (app_wrk->app_index != mp->context) { |