vcl: resolve VCL part session cleanup issue 32/28232/2
authorYu Ping <[email protected]>
Tue, 3 Dec 2019 22:49:04 +0000 (06:49 +0800)
committerAndrew Yourtchenko <[email protected]>
Wed, 12 Aug 2020 07:43:14 +0000 (07:43 +0000)
In Nginx performance test, we notice that there are so many session kept
open with the state of TRANSPORT_DELETE, and it is root caused that
vppcom fails to return close state.

Type: fix

Change-Id: Ia30f959e0e5adb5b8bcfa13fb1dd7b2cb410a31b
Signed-off-by: Yu Ping <[email protected]>
(cherry picked from commit b2955355cc9a654447d8647e33def67cd27892f6)

src/vcl/vppcom.c

index 0e5d4fa..0bbdea5 100644 (file)
@@ -1733,6 +1733,8 @@ vppcom_session_read_internal (uint32_t session_handle, void *buf, int n,
     {
       if (is_nonblocking)
        {
+         if (vcl_session_is_closing (s))
+           return vcl_session_closing_error (s);
          svm_fifo_unset_event (s->rx_fifo);
          return VPPCOM_EWOULDBLOCK;
        }