summaryrefslogtreecommitdiffstats
path: root/libnetd_client
diff options
context:
space:
mode:
authorSreeram Ramachandran <sreeram@google.com>2014-05-13 23:50:44 -0700
committerSreeram Ramachandran <sreeram@google.com>2014-05-14 11:15:20 -0700
commit6af621f7920e10129933ad15f04d8548d478eb23 (patch)
tree5e215dcc69ffb0c6707a10db3a5e21e327e62a26 /libnetd_client
parentb87b17a895383146cdec184a257a406fb93ab572 (diff)
downloadsystem_core-6af621f7920e10129933ad15f04d8548d478eb23.zip
system_core-6af621f7920e10129933ad15f04d8548d478eb23.tar.gz
system_core-6af621f7920e10129933ad15f04d8548d478eb23.tar.bz2
Use a function instead of a macro.
(cherry picked from commit f3e4a8bb245afe874561eb7275f49dae0e7e55dd) Change-Id: If5359c26a1474de0c278193fd2f09168f3184dee
Diffstat (limited to 'libnetd_client')
-rw-r--r--libnetd_client/NetdClient.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/libnetd_client/NetdClient.cpp b/libnetd_client/NetdClient.cpp
index f7e8cc2..8deea1e 100644
--- a/libnetd_client/NetdClient.cpp
+++ b/libnetd_client/NetdClient.cpp
@@ -20,15 +20,15 @@
#include <sys/socket.h>
#include <unistd.h>
-#define CLOSE_FD_AND_RESTORE_ERRNO(fd) \
- do { \
- int error = errno; \
- close(fd); \
- errno = error; \
- } while (0)
-
namespace {
+int closeFdAndRestoreErrno(int fd) {
+ int error = errno;
+ close(fd);
+ errno = error;
+ return -1;
+}
+
typedef int (*ConnectFunctionType)(int, const sockaddr*, socklen_t);
typedef int (*AcceptFunctionType)(int, sockaddr*, socklen_t*);
@@ -54,16 +54,14 @@ int netdClientAccept(int sockfd, sockaddr* addr, socklen_t* addrlen) {
if (!addr) {
socklen_t socketAddressLen = sizeof(socketAddress);
if (getsockname(acceptedSocket, &socketAddress, &socketAddressLen) == -1) {
- CLOSE_FD_AND_RESTORE_ERRNO(acceptedSocket);
- return -1;
+ return closeFdAndRestoreErrno(acceptedSocket);
}
addr = &socketAddress;
}
if (FwmarkClient::shouldSetFwmark(acceptedSocket, addr)) {
char data[] = {FWMARK_COMMAND_ON_ACCEPT};
if (!FwmarkClient().send(data, sizeof(data), acceptedSocket)) {
- CLOSE_FD_AND_RESTORE_ERRNO(acceptedSocket);
- return -1;
+ return closeFdAndRestoreErrno(acceptedSocket);
}
}
return acceptedSocket;