diff options
author | Florin Coras <fcoras@cisco.com> | 2021-05-24 08:58:15 -0700 |
---|---|---|
committer | Ole Tr�an <otroan@employees.org> | 2021-05-26 07:37:06 +0000 |
commit | 5fe9457fa2ac49ca7134b09c6886192c7001335c (patch) | |
tree | 609c17db379716feaa4b269a3c84ce3643838652 /src/vppinfra | |
parent | 3fb978e2618a6c71152b979c391d0c549937efbd (diff) |
api: socket client connect set to blocking
Binary api client must otherwise check the returned error and if it was
EAGAIN/EINPROGRESS poll for connect completion.
Type: improvement
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I89845b1a59b9fa2ab0968029435ceb203bfa8f6c
Diffstat (limited to 'src/vppinfra')
-rw-r--r-- | src/vppinfra/socket.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vppinfra/socket.c b/src/vppinfra/socket.c index 3271393529d..1d8b2ca2e45 100644 --- a/src/vppinfra/socket.c +++ b/src/vppinfra/socket.c @@ -518,6 +518,14 @@ clib_socket_init (clib_socket_t * s) s->fd, s->config); goto done; } + /* Connect was blocking so set fd to non-blocking now */ + if (!(s->flags & CLIB_SOCKET_F_NON_BLOCKING_CONNECT) && + fcntl (s->fd, F_SETFL, O_NONBLOCK) < 0) + { + error = clib_error_return_unix (0, "fcntl NONBLOCK2 (fd %d, '%s')", + s->fd, s->config); + goto done; + } } return error; |