_PUBLIC_ int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen) { int ret; struct sockaddr_un un_addr; struct socket_info *si = find_socket_info(s); if (!si) { return real_connect(s, serv_addr, addrlen); } if (si->bound == 0) { ret = swrap_auto_bind(si, serv_addr->sa_family); if (ret == -1) return -1; } if (si->family != serv_addr->sa_family) { errno = EINVAL; return -1; } ret = sockaddr_convert_to_un(si, (const struct sockaddr *)serv_addr, addrlen, &un_addr, 0, NULL); if (ret == -1) return -1; swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_SEND, NULL, 0); ret = real_connect(s, (struct sockaddr *)&un_addr, sizeof(struct sockaddr_un)); /* to give better errors */ if (ret == -1 && errno == ENOENT) { errno = EHOSTUNREACH; } if (ret == 0) { si->peername_len = addrlen; si->peername = sockaddr_dup(serv_addr, addrlen); si->connected = 1; swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_RECV, NULL, 0); swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_ACK, NULL, 0); } else { swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_UNREACH, NULL, 0); } return ret; }
int connect (int fd, const struct sockaddr *sk, socklen_t sl){ static struct sockaddr_in *rsk_in; rsk_in = (struct sockaddr_in *)sk; if ((rsk_in->sin_family == AF_INET) && (bind_addr_env || bind_port_env)) { real_bind (fd, (struct sockaddr *)local_sockaddr_in, sizeof (struct sockaddr)); } return real_connect (fd, sk, sl); }
/* Wrapper around connect(2) to explicitly set TCP_NODELAY. */ static int nodelay_connect( int (*real_connect)(int, const struct sockaddr *, socklen_t), int sock, const struct sockaddr *addr, socklen_t addrlen) { int res = real_connect(sock, addr, addrlen); if (!res && addr->sa_family == AF_INET) { int opt = 1; setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt)); } return res; }
int __connect (int sockfd, const struct sockaddr *serv_addr, socklen_t attrlen) { int rc; if (flume_libc_interposing ()) rc = flume_connect (sockfd, serv_addr, attrlen); else rc = real_connect (sockfd, serv_addr, attrlen); return rc; }
int connect (int fd, const struct sockaddr *sk, socklen_t sl) { static struct sockaddr_in *rsk_in; rsk_in = (struct sockaddr_in *)sk; /* printf("connect: %d %s:%d\n", fd, inet_ntoa (rsk_in->sin_addr.s_addr), ntohs (rsk_in->sin_port));*/ if ((rsk_in->sin_family == AF_INET) && (bind_addr_env)) { real_bind (fd, (struct sockaddr *)local_sockaddr_in, sizeof (struct sockaddr)); } return real_connect (fd, sk, sl); }
//-------------------------------------------------------------------------- Connection::Connection (const char *db, const char *host, const char *user, const char *passwd, uint port, my_bool compress, unsigned int connect_timeout, bool te, const char *socket_name) : throw_exceptions(te), locked(false) { mysql_init(&mysql); if (real_connect (db, host, user, passwd, port, compress, connect_timeout,socket_name)) { locked = false; Success = is_connected = true; } else { locked = false; Success = is_connected = false; if (throw_exceptions) throw BadQuery(error()); } }
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) { int retval; print_trace ("%*sconnect(%d, %p, %d)=...\n", indent, "", sockfd, serv_addr, addrlen); indent+=2; /* call the real connect function */ retval = real_connect (sockfd, serv_addr, addrlen); indent-=2; print_trace ("%*sconnect(%d, %p, %d)=%d\n", indent, "", sockfd, serv_addr, addrlen, retval); return retval; }