From 534468e9f768ae7465ef722520dadfd916cdc9fb Mon Sep 17 00:00:00 2001 From: liuyacan Date: Sun, 9 May 2021 03:50:40 +0000 Subject: session: support half-close connection Some app(e.g. Envoy) may call shutdown() instead of close() when draining connection. Type: improvement Signed-off-by: liuyacan Change-Id: I9543b9ca3caa87b10b134fd1fc4019124e41e4d2 --- src/vcl/vcl_locked.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/vcl/vcl_locked.c') diff --git a/src/vcl/vcl_locked.c b/src/vcl/vcl_locked.c index 757c0fc45a7..69f492b8694 100644 --- a/src/vcl/vcl_locked.c +++ b/src/vcl/vcl_locked.c @@ -1313,6 +1313,24 @@ vls_close (vls_handle_t vlsh) return rv; } +int +vls_shutdown (vls_handle_t vlsh) +{ + vcl_locked_session_t *vls; + int rv; + + vls_mt_detect (); + if (!(vls = vls_get_w_dlock (vlsh))) + return VPPCOM_EBADFD; + + vls_mt_guard (vls, VLS_MT_OP_SPOOL); + rv = vppcom_session_shutdown (vls_to_sh (vls)); + vls_mt_unguard (); + vls_get_and_unlock (vlsh); + + return rv; +} + vls_handle_t vls_epoll_create (void) { -- cgit 1.2.3-korg