summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-02-08 15:45:49 +0100
committerAndreas Schneider <asn@cryptomilk.org>2013-02-08 15:45:49 +0100
commita968347a45247fb220e82b432c6fb0c8d50c89c8 (patch)
treeb7281686f999ea33aa50d66092936545d37c51eb /src
parent373dfdd57b508fc53db33e7044c9d587eadfa62b (diff)
downloadsocket_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.c19
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;