diff options
| author | Andreas Schneider <asn@cryptomilk.org> | 2013-02-08 15:52:49 +0100 |
|---|---|---|
| committer | Andreas Schneider <asn@cryptomilk.org> | 2013-02-08 15:52:49 +0100 |
| commit | ac7b6a6b1be4a30a953718c5397c8cdce43d1d55 (patch) | |
| tree | b6dc4fc0abafe21b78f4e690fd080b2a97fa200b | |
| parent | 72fba61eb487330904895a2711c23f7909c4f233 (diff) | |
| download | socket_wrapper-ac7b6a6b1be4a30a953718c5397c8cdce43d1d55.tar.gz socket_wrapper-ac7b6a6b1be4a30a953718c5397c8cdce43d1d55.tar.xz socket_wrapper-ac7b6a6b1be4a30a953718c5397c8cdce43d1d55.zip | |
Add getpeername() wrapper.
| -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 e0913b3..b53fe45 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -210,6 +210,21 @@ static int real_connect(int sockfd, return libc_connect(sockfd, addr, addrlen); } +static int (*libc_getpeername)(int sockfd, + struct sockaddr *addr, + socklen_t *addrlen); + +static int real_getpeername(int sockfd, + struct sockaddr *addr, + socklen_t *addrlen) +{ + if (libc_getpeername == NULL) { + *(void **)(&libc_getpeername) = libc_dlsym("getpeername"); + } + + return libc_getpeername(sockfd, addr, addrlen); +} + static int (*libc_getsockname)(int sockfd, struct sockaddr *addr, socklen_t *addrlen); @@ -1939,8 +1954,7 @@ int listen(int s, int backlog) return ret; } -#if 0 -_PUBLIC_ int swrap_getpeername(int s, struct sockaddr *name, socklen_t *addrlen) +int getpeername(int s, struct sockaddr *name, socklen_t *addrlen) { struct socket_info *si = find_socket_info(s); @@ -1960,6 +1974,7 @@ _PUBLIC_ int swrap_getpeername(int s, struct sockaddr *name, socklen_t *addrlen) return 0; } +#if 0 _PUBLIC_ int swrap_getsockname(int s, struct sockaddr *name, socklen_t *addrlen) { struct socket_info *si = find_socket_info(s); |
