in io/fstack-dpdk.cpp [250:275]
int fstack_connect(int sockfd, const struct sockaddr* addr, socklen_t addrlen, Timeout timeout) {
int err = 0;
while (true) {
int ret = ff_connect(sockfd, (linux_sockaddr*) addr, addrlen);
if (ret < 0) {
auto e = errno;
if (e == EINTR) {
err = 1;
continue;
}
if (e == EINPROGRESS || (e == EADDRINUSE && err == 1)) {
ret = g_engine->wait_for_fd_writable(sockfd, timeout);
if (ret < 0) return -1;
socklen_t n = sizeof(err);
ret = ff_getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &err, &n);
if (ret < 0) return -1;
if (err) {
errno = err;
return -1;
}
return 0;
}
}
return ret;
}
}