From 66a1003f1707c16b183aafb19f7208c4f5641965 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Fri, 21 Dec 2018 16:23:09 -0800 Subject: [PATCH] bapi/vat: fix socket transport for vat Change-Id: I8e39df129f80c8d3d73181fc5d3ac60ae382a6b6 Signed-off-by: Florin Coras --- src/vat/api_format.c | 10 ++++++++-- src/vlibmemory/socket_client.c | 11 +++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/vat/api_format.c b/src/vat/api_format.c index 55f5197b5eb..f39c9e62ae5 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -91,9 +91,15 @@ vl (void *p) int vat_socket_connect (vat_main_t * vam) { + int rv; vam->socket_client_main = &socket_client_main; - return vl_socket_client_connect ((char *) vam->socket_name, "vpp_api_test", - 0 /* default socket rx, tx buffer */ ); + if ((rv = vl_socket_client_connect ((char *) vam->socket_name, + "vpp_api_test", + 0 /* default socket rx, tx buffer */ ))) + return rv; + /* vpp expects the client index in network order */ + vam->my_client_index = htonl (socket_client_main.client_index); + return 0; } #else /* vpp built-in case, we don't do sockets... */ int diff --git a/src/vlibmemory/socket_client.c b/src/vlibmemory/socket_client.c index 43294a0ab6e..38bcc2a5156 100644 --- a/src/vlibmemory/socket_client.c +++ b/src/vlibmemory/socket_client.c @@ -79,6 +79,9 @@ vl_socket_client_read (int wait) scm->socket_buffer_size); if (n < 0) { + if (errno == EAGAIN) + continue; + clib_unix_warning ("socket_read"); return -1; } @@ -103,8 +106,11 @@ vl_socket_client_read (int wait) n = read (scm->socket_fd, scm->socket_rx_buffer + vec_len (scm->socket_rx_buffer), msg_size - vec_len (scm->socket_rx_buffer)); - if (n < 0 && errno != EAGAIN) + if (n < 0) { + if (errno == EAGAIN) + continue; + clib_unix_warning ("socket_read"); return -1; } @@ -358,7 +364,8 @@ vl_socket_client_connect (char *socket_path, char *client_name, sock = &scm->client_socket; sock->config = socket_path; - 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_NON_BLOCKING_CONNECT; if ((error = clib_socket_init (sock))) { -- 2.16.6