vppinfra: explicit blocking mode for sock connects

Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I3a33230de13fef613dc9523cf24a9968d200c2e5
This commit is contained in:
Florin Coras
2021-05-26 10:21:10 -07:00
committed by Dave Wallace
parent 46cb4c4094
commit 57e0af924b
4 changed files with 9 additions and 5 deletions

View File

@ -583,7 +583,8 @@ memif_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
{
clib_memset (sock, 0, sizeof(clib_socket_t));
sock->config = (char *) msf->filename;
sock->flags = CLIB_SOCKET_F_IS_CLIENT| CLIB_SOCKET_F_SEQPACKET;
sock->flags = CLIB_SOCKET_F_IS_CLIENT | CLIB_SOCKET_F_SEQPACKET |
CLIB_SOCKET_F_BLOCKING;
if ((err = clib_socket_init (sock)))
{

View File

@ -23,7 +23,8 @@ vcl_api_connect_app_socket (vcl_worker_t * wrk)
int rv = 0;
cs->config = (char *) vcm->cfg.vpp_app_socket_api;
cs->flags = CLIB_SOCKET_F_IS_CLIENT | CLIB_SOCKET_F_SEQPACKET;
cs->flags =
CLIB_SOCKET_F_IS_CLIENT | CLIB_SOCKET_F_SEQPACKET | CLIB_SOCKET_F_BLOCKING;
wrk->vcl_needs_real_epoll = 1;

View File

@ -518,8 +518,10 @@ clib_socket_init (clib_socket_t * s)
s->fd, s->config);
goto done;
}
/* Connect was blocking so set fd to non-blocking now */
/* Connect was blocking so set fd to non-blocking now unless
* blocking mode explicitly requested. */
if (!(s->flags & CLIB_SOCKET_F_NON_BLOCKING_CONNECT) &&
!(s->flags & CLIB_SOCKET_F_BLOCKING) &&
fcntl (s->fd, F_SETFL, O_NONBLOCK) < 0)
{
error = clib_error_return_unix (0, "fcntl NONBLOCK2 (fd %d, '%s')",

View File

@ -62,7 +62,7 @@ typedef struct _socket_t
#define CLIB_SOCKET_F_ALLOW_GROUP_WRITE (1 << 4)
#define CLIB_SOCKET_F_SEQPACKET (1 << 5)
#define CLIB_SOCKET_F_PASSCRED (1 << 6)
#define CLIB_SOCKET_F_BLOCKING (1 << 7)
/* Transmit buffer. Holds data waiting to be written. */
u8 *tx_buffer;