Return errors explicitly instead of using errno.
Change-Id: Ia29f500e747a8c72d13a8f38c3b08c319c8c029a
diff --git a/client/FwmarkClient.cpp b/client/FwmarkClient.cpp
index 24c84c4..03cd5fb 100644
--- a/client/FwmarkClient.cpp
+++ b/client/FwmarkClient.cpp
@@ -36,25 +36,21 @@
FwmarkClient::~FwmarkClient() {
if (mChannel >= 0) {
- // We don't care about errors while closing the channel, so restore any previous error.
- int error = errno;
close(mChannel);
- errno = error;
}
}
-bool FwmarkClient::send(void* data, size_t len, int fd) {
+int FwmarkClient::send(void* data, size_t len, int fd) {
mChannel = socket(AF_UNIX, SOCK_STREAM, 0);
if (mChannel == -1) {
- return false;
+ return errno;
}
if (TEMP_FAILURE_RETRY(connect(mChannel, reinterpret_cast<const sockaddr*>(&FWMARK_SERVER_PATH),
sizeof(FWMARK_SERVER_PATH))) == -1) {
// If we are unable to connect to the fwmark server, assume there's no error. This protects
// against future changes if the fwmark server goes away.
- errno = 0;
- return true;
+ return 0;
}
iovec iov;
@@ -82,14 +78,14 @@
memcpy(CMSG_DATA(cmsgh), &fd, sizeof(fd));
if (TEMP_FAILURE_RETRY(sendmsg(mChannel, &message, 0)) == -1) {
- return false;
+ return errno;
}
int error = 0;
+
if (TEMP_FAILURE_RETRY(recv(mChannel, &error, sizeof(error), 0)) == -1) {
- return false;
+ return errno;
}
- errno = error;
- return !error;
+ return error;
}