summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-06-07 16:54:47 +0200
committerRobin Gareus <robin@gareus.org>2013-06-07 16:54:47 +0200
commit024e556cb2c3fb95721aaa83954aed373d2c7d0f (patch)
treeca1e1222e3b1ccf05fd604104741b2aa82e7a63b /libs
parent1053529e4fddcd00891cbbc08cf4107e8335f873 (diff)
close network sockets on fork
fixes problem with external apps (ie. video-server) inheriting them.
Diffstat (limited to 'libs')
-rw-r--r--libs/midi++2/ipmidi_port.cc4
-rw-r--r--libs/surfaces/osc/osc.cc7
2 files changed, 10 insertions, 1 deletions
diff --git a/libs/midi++2/ipmidi_port.cc b/libs/midi++2/ipmidi_port.cc
index c90a3dbe6f..543c63e343 100644
--- a/libs/midi++2/ipmidi_port.cc
+++ b/libs/midi++2/ipmidi_port.cc
@@ -160,6 +160,8 @@ IPMIDIPort::open_sockets (int base_port, const string& ifname)
return false;
}
+ fcntl(sockin, F_SETFD, fcntl(sockin, F_GETFD) | FD_CLOEXEC);
+
struct sockaddr_in addrin;
::memset(&addrin, 0, sizeof(addrin));
addrin.sin_family = AF_INET;
@@ -206,6 +208,8 @@ IPMIDIPort::open_sockets (int base_port, const string& ifname)
::perror("socket(out)");
return false;
}
+
+ fcntl(sockout, F_SETFD, fcntl(sockout, F_GETFD) | FD_CLOEXEC);
// Will Hall, Oct 2007
if (!ifname.empty()) {
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 009587ce85..9e80554f0b 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -166,6 +166,9 @@ OSC::start ()
_port++;
continue;
}
+
+ int fd = lo_server_get_socket_fd (_osc_server);
+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
#ifdef ARDOUR_OSC_UNIX_SERVER
@@ -174,7 +177,7 @@ OSC::start ()
// attempt to create unix socket server too
snprintf(tmpstr, sizeof(tmpstr), "/tmp/sooperlooper_XXXXXX");
- int fd = mkstemp(tmpstr);
+ fd = mkstemp(tmpstr);
if (fd >= 0 ) {
unlink (tmpstr);
@@ -185,6 +188,8 @@ OSC::start ()
if (_osc_unix_server) {
_osc_unix_socket_path = tmpstr;
}
+ fd = lo_server_get_socket_fd (_osc_unix_server)
+ fcntl(fdx, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
}
#endif