summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2013-12-05 12:04:01 +0100
committerAndreas Schneider <asn@cryptomilk.org>2013-12-05 13:43:44 +0100
commitbc5ff6a765847bee90001014a195f728585ad98c (patch)
tree70e43c757e6d92b1d7b342468c17543c6451f332 /src
parent0e3ebfe55b7afd62c232f360cf930bdf41cea785 (diff)
downloadsocket_wrapper-bc5ff6a765847bee90001014a195f728585ad98c.tar.gz
socket_wrapper-bc5ff6a765847bee90001014a195f728585ad98c.tar.xz
socket_wrapper-bc5ff6a765847bee90001014a195f728585ad98c.zip
swrap: Use swrap structure for accept.
Diffstat (limited to 'src')
-rw-r--r--src/socket_wrapper.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 56d7bac..368e4cd 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -541,21 +541,6 @@ static void *libc_dlsym(const char *name)
return func;
}
-static int (*libc_accept)(int sockfd,
- struct sockaddr *addr,
- socklen_t *addrlen);
-
-static int real_accept(int sockfd,
- struct sockaddr *addr,
- socklen_t *addrlen)
-{
- if (libc_accept == NULL) {
- *(void **)(&libc_accept) = libc_dlsym("accept");
- }
-
- return libc_accept(sockfd, addr, addrlen);
-}
-
static int (*libc_bind)(int sockfd,
const struct sockaddr *addr,
socklen_t addrlen);
@@ -1222,6 +1207,11 @@ static int convert_in_un_alloc(struct socket_info *si, const struct sockaddr *in
static struct socket_info *find_socket_info(int fd)
{
struct socket_info *i;
+
+ if (!swrap_enabled()) {
+ return NULL;
+ }
+
for (i = sockets; i; i = i->next) {
struct socket_info_fd *f;
for (f = i->fds; f; f = f->next) {
@@ -2173,7 +2163,7 @@ static int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
parent_si = find_socket_info(s);
if (!parent_si) {
- return real_accept(s, addr, addrlen);
+ return swrap.fns.libc_accept(s, addr, addrlen);
}
/*
@@ -2194,7 +2184,7 @@ static int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
memset(&un_addr, 0, sizeof(un_addr));
memset(&un_my_addr, 0, sizeof(un_my_addr));
- ret = real_accept(s, (struct sockaddr *)(void *)&un_addr, &un_addrlen);
+ ret = swrap.fns.libc_accept(s, (struct sockaddr *)(void *)&un_addr, &un_addrlen);
if (ret == -1) {
free(my_addr);
return ret;