vcl: accept zero length writes

Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I84985f59274e77219a38ea6ac865fc73ac635d72
(cherry picked from commit 0b0d28e9bf1ea078ce1a846d22e499d13eadd464)
This commit is contained in:
Florin Coras
2021-06-04 17:31:53 -07:00
committed by Dave Wallace
parent 2fea186aee
commit 53af06a214

View File

@ -2148,8 +2148,12 @@ vppcom_session_write_inline (vcl_worker_t * wrk, vcl_session_t * s, void *buf,
svm_msg_q_t *mq; svm_msg_q_t *mq;
u8 is_ct; u8 is_ct;
if (PREDICT_FALSE (!buf || n == 0)) /* Accept zero length writes but just return */
return VPPCOM_EINVAL; if (PREDICT_FALSE (!n))
return VPPCOM_OK;
if (PREDICT_FALSE (!buf))
return VPPCOM_EFAULT;
if (PREDICT_FALSE (s->flags & VCL_SESSION_F_IS_VEP)) if (PREDICT_FALSE (s->flags & VCL_SESSION_F_IS_VEP))
{ {
@ -2159,7 +2163,7 @@ vppcom_session_write_inline (vcl_worker_t * wrk, vcl_session_t * s, void *buf,
} }
if (PREDICT_FALSE (!vcl_session_is_open (s) || if (PREDICT_FALSE (!vcl_session_is_open (s) ||
s->flags & VCL_SESSION_F_SHUTDOWN)) (s->flags & VCL_SESSION_F_SHUTDOWN)))
{ {
VDBG (1, "session %u [0x%llx]: is not open! state 0x%x (%s)", VDBG (1, "session %u [0x%llx]: is not open! state 0x%x (%s)",
s->session_index, s->vpp_handle, s->session_state, s->session_index, s->vpp_handle, s->session_state,
@ -3885,12 +3889,9 @@ vppcom_session_sendto (uint32_t session_handle, void *buffer,
vcl_session_t *s; vcl_session_t *s;
s = vcl_session_get_w_handle (wrk, session_handle); s = vcl_session_get_w_handle (wrk, session_handle);
if (!s) if (PREDICT_FALSE (!s))
return VPPCOM_EBADFD; return VPPCOM_EBADFD;
if (!buffer)
return VPPCOM_EINVAL;
if (ep) if (ep)
{ {
if (!vcl_session_is_cl (s)) if (!vcl_session_is_cl (s))