summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-06 15:39:59 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-06 15:40:05 +0200
commit253976720653f02595dee5edb85a8a9730ba0ae3 (patch)
tree902dccc537e2f279eb76031647e37648321d78c1 /libavformat
parent8d06ce79411fc99d200ddc559bf1dd1f1434a13c (diff)
parentbb9378251a167ef0116f263912e57f715c1e02ac (diff)
Merge commit 'bb9378251a167ef0116f263912e57f715c1e02ac'
* commit 'bb9378251a167ef0116f263912e57f715c1e02ac': network: Use SOCK_CLOEXEC when available Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/network.h9
-rw-r--r--libavformat/sctp.c2
-rw-r--r--libavformat/tcp.c4
-rw-r--r--libavformat/udp.c2
-rw-r--r--libavformat/unix.c2
5 files changed, 15 insertions, 4 deletions
diff --git a/libavformat/network.h b/libavformat/network.h
index 9cfad114f2..6552f83fc9 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -259,4 +259,13 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
int ff_http_match_no_proxy(const char *no_proxy, const char *hostname);
+#ifndef SOCK_CLOEXEC
+#define SOCK_CLOEXEC 0
+#endif
+
+static inline int ff_socket(int domain, int type, int protocol)
+{
+ return socket(domain, type | SOCK_CLOEXEC, protocol);
+}
+
#endif /* AVFORMAT_NETWORK_H */
diff --git a/libavformat/sctp.c b/libavformat/sctp.c
index f9ddb9f22d..e3585b44b5 100644
--- a/libavformat/sctp.c
+++ b/libavformat/sctp.c
@@ -198,7 +198,7 @@ static int sctp_open(URLContext *h, const char *uri, int flags)
cur_ai = ai;
- fd = socket(cur_ai->ai_family, SOCK_STREAM, IPPROTO_SCTP);
+ fd = ff_socket(cur_ai->ai_family, SOCK_STREAM, IPPROTO_SCTP);
if (fd < 0)
goto fail;
diff --git a/libavformat/tcp.c b/libavformat/tcp.c
index bf51701437..c2a76cb710 100644
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -111,7 +111,9 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
cur_ai = ai;
restart:
- fd = socket(cur_ai->ai_family, cur_ai->ai_socktype, cur_ai->ai_protocol);
+ fd = ff_socket(cur_ai->ai_family,
+ cur_ai->ai_socktype,
+ cur_ai->ai_protocol);
if (fd < 0) {
ret = ff_neterrno();
goto fail;
diff --git a/libavformat/udp.c b/libavformat/udp.c
index 9c45254571..3c0d6bf012 100644
--- a/libavformat/udp.c
+++ b/libavformat/udp.c
@@ -326,7 +326,7 @@ static int udp_socket_create(UDPContext *s, struct sockaddr_storage *addr,
if (res0 == 0)
goto fail;
for (res = res0; res; res=res->ai_next) {
- udp_fd = socket(res->ai_family, SOCK_DGRAM, 0);
+ udp_fd = ff_socket(res->ai_family, SOCK_DGRAM, 0);
if (udp_fd != -1) break;
log_net_error(NULL, AV_LOG_ERROR, "socket");
}
diff --git a/libavformat/unix.c b/libavformat/unix.c
index dd481a16ea..bdfdc06d51 100644
--- a/libavformat/unix.c
+++ b/libavformat/unix.c
@@ -71,7 +71,7 @@ static int unix_open(URLContext *h, const char *filename, int flags)
s->addr.sun_family = AF_UNIX;
av_strlcpy(s->addr.sun_path, filename, sizeof(s->addr.sun_path));
- if ((fd = socket(AF_UNIX, s->type, 0)) < 0)
+ if ((fd = ff_socket(AF_UNIX, s->type, 0)) < 0)
return ff_neterrno();
if (s->listen) {