close network sockets on fork

fixes problem with external apps (ie. video-server) inheriting them.
This commit is contained in:
Robin Gareus 2013-06-07 16:54:47 +02:00
parent 1053529e4f
commit 024e556cb2
2 changed files with 10 additions and 1 deletions

View file

@ -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()) {

View file

@ -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