X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibmemory%2Fsocket_client.c;h=38bcc2a51569e847d02f6c0e1b0d0d9851abccdd;hb=ad9d528;hp=c04b804eb218d51cfd404c6b534b2bf30cf581cc;hpb=2881dec8631629cf1fa415a1f63b8561590df275;p=vpp.git diff --git a/src/vlibmemory/socket_client.c b/src/vlibmemory/socket_client.c index c04b804eb21..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; } @@ -214,7 +220,7 @@ vl_sock_api_recv_fd_msg (int socket_fd, int fds[], int n_fds, u32 wait) mh.msg_control = ctl; mh.msg_controllen = sizeof (ctl); - memset (ctl, 0, sizeof (ctl)); + clib_memset (ctl, 0, sizeof (ctl)); if (wait != ~0) { @@ -246,7 +252,7 @@ vl_sock_api_recv_fd_msg (int socket_fd, int fds[], int n_fds, u32 wait) } else if (cmsg->cmsg_type == SCM_RIGHTS) { - clib_memcpy (fds, CMSG_DATA (cmsg), sizeof (int) * n_fds); + clib_memcpy_fast (fds, CMSG_DATA (cmsg), sizeof (int) * n_fds); } } cmsg = CMSG_NXTHDR (&mh, cmsg); @@ -282,7 +288,7 @@ static void vl_api_sock_init_shm_reply_t_handler return; } - memset (memfd, 0, sizeof (*memfd)); + clib_memset (memfd, 0, sizeof (*memfd)); memfd->fd = my_fd; /* Note: this closes memfd.fd */ @@ -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))) { @@ -404,7 +411,7 @@ vl_socket_client_init_shm (vl_api_shm_elem_config_t * config) mp = vl_socket_client_msg_alloc (sizeof (*mp) + vec_len (config) * sizeof (u64)); - memset (mp, 0, sizeof (*mp)); + clib_memset (mp, 0, sizeof (*mp)); mp->_vl_msg_id = clib_host_to_net_u16 (VL_API_SOCK_INIT_SHM); mp->client_index = clib_host_to_net_u32 (scm->client_index); mp->requested_size = 64 << 20;