X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fsocket.c;h=4522514bba93eba9fb4f079a2395bfcd912528c9;hb=c4ae0fffb;hp=990d0f7390b7e6d4a49bd75f70e8e51c51e8b4af;hpb=b7b929931a07fbb27b43d5cd105f366c3e29807e;p=vpp.git diff --git a/src/vppinfra/socket.c b/src/vppinfra/socket.c index 990d0f7390b..4522514bba9 100644 --- a/src/vppinfra/socket.c +++ b/src/vppinfra/socket.c @@ -278,7 +278,7 @@ default_socket_sendmsg (clib_socket_t * s, void *msg, int msglen, { struct msghdr mh = { 0 }; struct iovec iov[1]; - char ctl[CMSG_SPACE (sizeof (int)) * num_fds]; + char ctl[CMSG_SPACE (sizeof (int) * num_fds)]; int rv; iov[0].iov_base = msg; @@ -356,7 +356,8 @@ default_socket_recvmsg (clib_socket_t * s, void *msg, int msglen, #endif if (cmsg->cmsg_type == SCM_RIGHTS) { - clib_memcpy (fds, CMSG_DATA (cmsg), num_fds * sizeof (int)); + clib_memcpy_fast (fds, CMSG_DATA (cmsg), + num_fds * sizeof (int)); } } cmsg = CMSG_NXTHDR (&mh, cmsg); @@ -388,7 +389,7 @@ clib_socket_init (clib_socket_t * s) struct sockaddr_un su; } addr; socklen_t addr_len = 0; - int socket_type; + int socket_type, rv; clib_error_t *error = 0; word port; @@ -501,9 +502,11 @@ clib_socket_init (clib_socket_t * s) goto done; } - if (connect (s->fd, &addr.sa, addr_len) < 0 - && !((s->flags & CLIB_SOCKET_F_NON_BLOCKING_CONNECT) && - errno == EINPROGRESS)) + while ((rv = connect (s->fd, &addr.sa, addr_len)) < 0 + && errno == EAGAIN) + ; + if (rv < 0 && !((s->flags & CLIB_SOCKET_F_NON_BLOCKING_CONNECT) && + errno == EINPROGRESS)) { error = clib_error_return_unix (0, "connect (fd %d, '%s')", s->fd, s->config);