From a968347a45247fb220e82b432c6fb0c8d50c89c8 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Fri, 8 Feb 2013 15:45:49 +0100 Subject: Add a connect() wrapper. --- src/socket_wrapper.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/socket_wrapper.c') diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index 2ce5100..323e57a 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -195,6 +195,21 @@ static int real_bind(int sockfd, return libc_bind(sockfd, addr, addrlen); } +static int (*libc_connect)(int sockfd, + const struct sockaddr *addr, + socklen_t addrlen); + +static int real_connect(int sockfd, + const struct sockaddr *addr, + socklen_t addrlen) +{ + if (libc_connect == NULL) { + *(void **)(&libc_connect) = libc_dlsym("connect"); + } + + return libc_connect(sockfd, addr, addrlen); +} + static int (*libc_getsockname)(int sockfd, struct sockaddr *addr, socklen_t *addrlen); @@ -1810,9 +1825,8 @@ static int swrap_auto_bind(int fd, struct socket_info *si, int family) return 0; } -#if 0 -_PUBLIC_ int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen) +int connect(int s, const struct sockaddr *serv_addr, socklen_t addrlen) { int ret; struct sockaddr_un un_addr; @@ -1871,6 +1885,7 @@ _PUBLIC_ int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t ad return ret; } +#if 0 _PUBLIC_ int swrap_bind(int s, const struct sockaddr *myaddr, socklen_t addrlen) { int ret; -- cgit