summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-12-09 19:22:42 +0100
committerAndreas Schneider <asn@cryptomilk.org>2013-12-09 19:29:34 +0100
commit2cfbea1bf2ff5f1edf1512cea5fbb12e87e0a800 (patch)
tree35b17a5eaaa80022aa9e691ee8cc1b6293c48cfb
parentf3b03d777e9da4fb70360219bd0ef4535028971e (diff)
downloadsocket_wrapper-2cfbea1bf2ff5f1edf1512cea5fbb12e87e0a800.tar.gz
socket_wrapper-2cfbea1bf2ff5f1edf1512cea5fbb12e87e0a800.tar.xz
socket_wrapper-2cfbea1bf2ff5f1edf1512cea5fbb12e87e0a800.zip
swrap: Add libc_connect().
-rw-r--r--src/socket_wrapper.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 883fc72..d983a49 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -607,6 +607,15 @@ static int libc_close(int fd)
return swrap.fns.libc_close(fd);
}
+static int libc_connect(int sockfd,
+ const struct sockaddr *addr,
+ socklen_t addrlen)
+{
+ swrap_load_lib_function(SWRAP_LIBSOCKET, connect);
+
+ return swrap.fns.libc_connect(sockfd, addr, addrlen);
+}
+
static int libc_vioctl(int d, unsigned long int request, va_list ap)
{
long int args[4];
@@ -2245,7 +2254,7 @@ static int swrap_connect(int s, const struct sockaddr *serv_addr,
int bcast = 0;
if (!si) {
- return swrap.fns.libc_connect(s, serv_addr, addrlen);
+ return libc_connect(s, serv_addr, addrlen);
}
if (si->bound == 0) {
@@ -2273,9 +2282,9 @@ static int swrap_connect(int s, const struct sockaddr *serv_addr,
} else {
swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_SEND, NULL, 0);
- ret = swrap.fns.libc_connect(s,
- (struct sockaddr *)(void *)&un_addr,
- sizeof(struct sockaddr_un));
+ ret = libc_connect(s,
+ (struct sockaddr *)(void *)&un_addr,
+ sizeof(struct sockaddr_un));
}
SWRAP_LOG(SWRAP_LOG_TRACE,
@@ -2659,9 +2668,9 @@ static ssize_t swrap_sendmsg_before(int fd,
tmp_un, 0, NULL);
if (ret == -1) return -1;
- ret = swrap.fns.libc_connect(fd,
- (struct sockaddr *)(void *)tmp_un,
- sizeof(*tmp_un));
+ ret = libc_connect(fd,
+ (struct sockaddr *)(void *)tmp_un,
+ sizeof(*tmp_un));
/* to give better errors */
if (ret == -1 && errno == ENOENT) {