diff options
author | Robin Gareus <robin@gareus.org> | 2013-06-07 16:54:47 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-06-07 16:54:47 +0200 |
commit | 024e556cb2c3fb95721aaa83954aed373d2c7d0f (patch) | |
tree | ca1e1222e3b1ccf05fd604104741b2aa82e7a63b /libs | |
parent | 1053529e4fddcd00891cbbc08cf4107e8335f873 (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.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 7 |
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 |