Merge "macOS build fix: no SOCK_CLOEXEC on darwin."
diff --git a/adb/libs/adbconnection/adbconnection_client.cpp b/adb/libs/adbconnection/adbconnection_client.cpp
index c132342..b569421 100644
--- a/adb/libs/adbconnection/adbconnection_client.cpp
+++ b/adb/libs/adbconnection/adbconnection_client.cpp
@@ -122,7 +122,16 @@
return nullptr;
}
+#if defined(__APPLE__)
+ ctx->control_socket_.reset(socket(AF_UNIX, SOCK_SEQPACKET, 0));
+ // TODO: find a better home for all these copies of the mac CLOEXEC workaround.
+ if (int fd = ctx->control_socket_.get(), flags = fcntl(fd, F_GETFD);
+ flags != -1 && (flags & FD_CLOEXEC) == 0) {
+ fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
+ }
+#else
ctx->control_socket_.reset(socket(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC, 0));
+#endif
if (ctx->control_socket_ < 0) {
PLOG(ERROR) << "failed to create Unix domain socket";
return nullptr;