CRYSTAX_LOCAL int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) { DBG("sockfd=%d, addrlen=%lu", sockfd, (unsigned long)addrlen); int extfd; if (!resolve(sockfd, NULL, &extfd, NULL, NULL)) return -1; if (extfd == -1) { errno = EBADF; return -1; } int extconnfd = system_connect(extfd, addr, addrlen); if (extconnfd == -1) return -1; int connfd = alloc_fd(NULL, extconnfd, system::driver_t::instance()); if (connfd < 0) { system_close(extconnfd); errno = EMFILE; return -1; } DBG("return fd=%d", connfd); return connfd; }
gint intercept_connect(gint fd, const struct sockaddr* addr, socklen_t len) { return system_connect(fd, addr, len); }