summaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authorRainer Keller <rainer.keller@digia.com>2013-04-17 11:17:16 +0200
committerRainer Keller <rainer.keller@digia.com>2013-04-17 11:17:16 +0200
commit50ce1cef0f7b50d3fdfd6972cdcf419d92e3db88 (patch)
tree50ac68c695b722a146e9084747a00eac458627f2 /main.cpp
parent676eb8c6c31abaecc3d1f06da06a8e54a2a0deae (diff)
Fix SOCK_CLOEXEC not available on Android
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/main.cpp b/main.cpp
index 5146dd8..c7e1b62 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,6 +8,7 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
+#include <fcntl.h>
#define PID_FILE "/data/user/.appcontroller"
@@ -28,11 +29,15 @@ static int connectSocket()
int create_socket;
struct sockaddr_un address;
- if ((create_socket=socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) {
+ if ((create_socket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
perror("Could not create socket");
return -1;
}
+ if (fcntl(create_socket, F_SETFD, FD_CLOEXEC) == -1) {
+ perror("Unable to set CLOEXEC");
+ }
+
setupAddressStruct(address);
if (connect(create_socket, (struct sockaddr *) &address, sizeof (address)) != 0) {
@@ -47,11 +52,15 @@ static int createServerSocket()
{
struct sockaddr_un address;
- if ((serverSocket=socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) < 0) {
+ if ((serverSocket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
perror("Could not create socket");
return -1;
}
+ if (fcntl(serverSocket, F_SETFD, FD_CLOEXEC) == -1) {
+ perror("Unable to set CLOEXEC");
+ }
+
setupAddressStruct(address);
if (bind(serverSocket, (struct sockaddr *) &address, sizeof (address)) != 0) {