From bc5ff6a765847bee90001014a195f728585ad98c Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 5 Dec 2013 12:04:01 +0100 Subject: swrap: Use swrap structure for accept. --- src/socket_wrapper.c | 24 +++++++----------------- 1 file 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; -- cgit