aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/network.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-10 10:18:18 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-10 10:18:18 +0200
commit296eaa84b9d0659b48014917f99032b3fa725302 (patch)
tree5646cfaf430551b321c83e301cb69dbf76638cdb /libavformat/network.c
parent69f543854deb8c31183b20ca72e10e78d3296f53 (diff)
parent9d5ec50ead97e088d77317e77b18cef06cb3d053 (diff)
downloadffmpeg-296eaa84b9d0659b48014917f99032b3fa725302.tar.gz
Merge commit '9d5ec50ead97e088d77317e77b18cef06cb3d053'
* commit '9d5ec50ead97e088d77317e77b18cef06cb3d053': ff_socket: put out-of-line and fallback to fcntl() for close-on-exec Conflicts: libavformat/network.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/network.c')
-rw-r--r--libavformat/network.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/libavformat/network.c b/libavformat/network.c
index a41b0511e4..73409616cd 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -18,10 +18,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "libavutil/avutil.h"
+#include <fcntl.h>
#include "network.h"
#include "url.h"
#include "libavcodec/internal.h"
+#include "libavutil/avutil.h"
#include "libavutil/mem.h"
#include "url.h"
#include "libavutil/time.h"
@@ -235,6 +236,24 @@ static int ff_poll_interrupt(struct pollfd *p, nfds_t nfds, int timeout,
return ret;
}
+int ff_socket(int af, int type, int proto)
+{
+ int fd;
+
+#ifdef SOCK_CLOEXEC
+ fd = socket(af, type | SOCK_CLOEXEC, proto);
+ if (fd == -1 && errno == EINVAL)
+#endif
+ {
+ fd = socket(af, type, proto);
+#if HAVE_FCNTL
+ if (fd != -1)
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
+#endif
+ }
+ return fd;
+}
+
int ff_listen_bind(int fd, const struct sockaddr *addr,
socklen_t addrlen, int timeout, URLContext *h)
{