On 3/29/24 12:18 PM, Jordan Rife wrote:
+int recvmsg_from_client(int sockfd, struct sockaddr_storage *src_addr)
+{
+       struct timeval tv;
+       struct msghdr hdr;
+       struct iovec iov;
+       char data[64];
+       fd_set rfds;
+
+       FD_ZERO(&rfds);
+       FD_SET(sockfd, &rfds);
+
+       tv.tv_sec = 2;
+       tv.tv_usec = 0;
+
+       if (select(sockfd + 1, &rfds, NULL, NULL, &tv) <= 0 ||

The socket fd created by the helpers in network_helpers.c should be a blocking socket and has a 3s default delay. select should not be needed. Try to stay with the default. If the default turned out to be too flaky in the bpf CI in the future, one default change is easier.

+           !FD_ISSET(sockfd, &rfds))
+               return -1;
+
+       memset(&iov, 0, sizeof(iov));
+       iov.iov_base = data;
+       iov.iov_len = sizeof(data);
+
+       memset(&hdr, 0, sizeof(hdr));
+       hdr.msg_name = src_addr;
+       hdr.msg_namelen = sizeof(struct sockaddr_storage);
+       hdr.msg_iov = &iov;
+       hdr.msg_iovlen = 1;
+
+       return recvmsg(sockfd, &hdr, 0);
+}


Reply via email to