diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2013-02-08 15:45:49 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2013-02-08 15:45:49 +0100 |
commit | a968347a45247fb220e82b432c6fb0c8d50c89c8 (patch) | |
tree | b7281686f999ea33aa50d66092936545d37c51eb /src | |
parent | 373dfdd57b508fc53db33e7044c9d587eadfa62b (diff) | |
download | socket_wrapper-a968347a45247fb220e82b432c6fb0c8d50c89c8.tar.gz socket_wrapper-a968347a45247fb220e82b432c6fb0c8d50c89c8.tar.xz socket_wrapper-a968347a45247fb220e82b432c6fb0c8d50c89c8.zip |
Add a connect() wrapper.
Diffstat (limited to 'src')
-rw-r--r-- | src/socket_wrapper.c | 19 |
1 files changed, 17 insertions, 2 deletions
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; |