vcl: RX event may lost when accept session repeatedly 37/28237/2
authorwanghanlin <[email protected]>
Mon, 16 Dec 2019 11:14:39 +0000 (19:14 +0800)
committerAndrew Yourtchenko <[email protected]>
Wed, 12 Aug 2020 07:43:14 +0000 (07:43 +0000)
Type: fix

Some applications may call accept repeatedly to process all connect
request until get EAGIAIN error. Subsequent call may get RX event of
previous accepted session, then should process it rather than just
discard it.

Signed-off-by: wanghanlin <[email protected]>
Change-Id: Ice53442de66289a62591b79a9cc31e883e894c23
(cherry picked from commit 96453fd2417ebd1d69354a7fb692976129cea80e)

src/vcl/vppcom.c

index 0bbdea5..52639c4 100644 (file)
@@ -1475,7 +1475,7 @@ vppcom_session_accept (uint32_t listen_session_handle, vppcom_endpt_t * ep,
       e = svm_msg_q_msg_data (wrk->app_event_queue, &msg);
       if (e->event_type != SESSION_CTRL_EVT_ACCEPTED)
        {
-         VDBG (0, "discarded event: %u", e->event_type);
+         vcl_handle_mq_event (wrk, e);
          svm_msg_q_free_msg (wrk->app_event_queue, &msg);
          continue;
        }