mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
commit
296eaa84b9
|
@ -18,10 +18,11 @@
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libavutil/avutil.h"
|
#include <fcntl.h>
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "url.h"
|
#include "url.h"
|
||||||
#include "libavcodec/internal.h"
|
#include "libavcodec/internal.h"
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
#include "libavutil/mem.h"
|
#include "libavutil/mem.h"
|
||||||
#include "url.h"
|
#include "url.h"
|
||||||
#include "libavutil/time.h"
|
#include "libavutil/time.h"
|
||||||
|
@ -235,6 +236,24 @@ static int ff_poll_interrupt(struct pollfd *p, nfds_t nfds, int timeout,
|
||||||
return ret;
|
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,
|
int ff_listen_bind(int fd, const struct sockaddr *addr,
|
||||||
socklen_t addrlen, int timeout, URLContext *h)
|
socklen_t addrlen, int timeout, URLContext *h)
|
||||||
{
|
{
|
||||||
|
|
|
@ -262,13 +262,6 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
|
||||||
|
|
||||||
int ff_http_match_no_proxy(const char *no_proxy, const char *hostname);
|
int ff_http_match_no_proxy(const char *no_proxy, const char *hostname);
|
||||||
|
|
||||||
#ifndef SOCK_CLOEXEC
|
int ff_socket(int domain, int type, int protocol);
|
||||||
#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 */
|
#endif /* AVFORMAT_NETWORK_H */
|
||||||
|
|
Loading…
Reference in New Issue