[vlc-commits] contrib: force close-on-exec flag on live555 sockets

Rémi Denis-Courmont git at videolan.org
Tue Aug 23 17:32:46 CEST 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Aug 23 18:32:08 2011 +0300| [efa68b295fd8faec9c79d2503a7c66ba74a3c36c] | committer: Rémi Denis-Courmont

contrib: force close-on-exec flag on live555 sockets

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=efa68b295fd8faec9c79d2503a7c66ba74a3c36c
---

 contrib/src/live555/live-cloexec.patch |   49 ++++++++++++++++++++++++++++++++
 contrib/src/live555/rules.mak          |    1 +
 2 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/contrib/src/live555/live-cloexec.patch b/contrib/src/live555/live-cloexec.patch
new file mode 100644
index 0000000..fbdbff9
--- /dev/null
+++ b/contrib/src/live555/live-cloexec.patch
@@ -0,0 +1,49 @@
+Copyright (C) 2011 Rémi Denis-Courmont.
+Licensed under GNU General Public License version 2 or higher.
+diff -ru live.orig/groupsock/GroupsockHelper.cpp live555/groupsock/GroupsockHelper.cpp
+--- live.orig/groupsock/GroupsockHelper.cpp	2011-08-23 18:19:59.000000000 +0300
++++ live/groupsock/GroupsockHelper.cpp	2011-08-23 18:26:32.000000000 +0300
+@@ -49,13 +49,33 @@
+   reuseFlag = 1;
+ }
+ 
++static int makeSocket(int type)
++{
++  int fd;
++
++#ifdef SOCK_CLOEXEC
++  fd = socket(AF_INET, type|SOCK_CLOEXEC, 0);
++  if (fd != -1 || errno != EINVAL)
++      return fd;
++#endif
++
++  fd = socket(AF_INET, type, 0);
++  if (fd == -1)
++    return -1;
++#ifdef FD_CLOEXEC
++  fcntl(fd, F_SETFD, FD_CLOEXEC);
++#endif
++  return fd;
++}
++
++
+ int setupDatagramSocket(UsageEnvironment& env, Port port) {
+   if (!initializeWinsockIfNecessary()) {
+     socketErr(env, "Failed to initialize 'winsock': ");
+     return -1;
+   }
+ 
+-  int newSocket = socket(AF_INET, SOCK_DGRAM, 0);
++  int newSocket = makeSocket(SOCK_DGRAM);
+   if (newSocket < 0) {
+     socketErr(env, "unable to create datagram socket: ");
+     return newSocket;
+@@ -161,7 +181,7 @@
+     return -1;
+   }
+ 
+-  int newSocket = socket(AF_INET, SOCK_STREAM, 0);
++  int newSocket = makeSocket(SOCK_STREAM);
+   if (newSocket < 0) {
+     socketErr(env, "unable to create stream socket: ");
+     return newSocket;
diff --git a/contrib/src/live555/rules.mak b/contrib/src/live555/rules.mak
index 8a0f94d..65b5c06 100644
--- a/contrib/src/live555/rules.mak
+++ b/contrib/src/live555/rules.mak
@@ -23,6 +23,7 @@ ifndef HAVE_WINCE
 	patch -p0 < $(SRC)/live555/live-getaddrinfo.patch
 endif
 endif
+	patch -p0 < $(SRC)/live555/live-cloexec.patch
 	mv live $@
 	touch $@
 



More information about the vlc-commits mailing list