vcl: RX event may lost when accept session repeatedly 10/24010/3
authorwanghanlin <wanghanlin@corp.netease.com>
Mon, 16 Dec 2019 11:14:39 +0000 (19:14 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 17 Dec 2019 07:49:40 +0000 (07:49 +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 <wanghanlin@corp.netease.com>
Change-Id: Ice53442de66289a62591b79a9cc31e883e894c23

src/vcl/vppcom.c

index d9a227d..a854011 100644 (file)
@@ -1470,7 +1470,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;
        }