lavf/network: log ff_listen() errors to proper contexts rather than NULL

release/5.1
Anton Khirnov 3 years ago
parent d2519e8625
commit 9e4693a1cb
  1. 6
      libavformat/network.c
  2. 3
      libavformat/network.h
  3. 2
      libavformat/tcp.c

@ -208,12 +208,12 @@ int ff_socket(int af, int type, int proto, void *logctx)
} }
int ff_listen(int fd, const struct sockaddr *addr, int ff_listen(int fd, const struct sockaddr *addr,
socklen_t addrlen) socklen_t addrlen, void *logctx)
{ {
int ret; int ret;
int reuse = 1; int reuse = 1;
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse))) { if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse))) {
av_log(NULL, AV_LOG_WARNING, "setsockopt(SO_REUSEADDR) failed\n"); av_log(logctx, AV_LOG_WARNING, "setsockopt(SO_REUSEADDR) failed\n");
} }
ret = bind(fd, addr, addrlen); ret = bind(fd, addr, addrlen);
if (ret) if (ret)
@ -247,7 +247,7 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
socklen_t addrlen, int timeout, URLContext *h) socklen_t addrlen, int timeout, URLContext *h)
{ {
int ret; int ret;
if ((ret = ff_listen(fd, addr, addrlen)) < 0) if ((ret = ff_listen(fd, addr, addrlen, h)) < 0)
return ret; return ret;
if ((ret = ff_accept(fd, timeout, h)) < 0) if ((ret = ff_accept(fd, timeout, h)) < 0)
return ret; return ret;

@ -271,7 +271,8 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
* @param addrlen Third argument of bind(). * @param addrlen Third argument of bind().
* @return 0 on success or an AVERROR on failure. * @return 0 on success or an AVERROR on failure.
*/ */
int ff_listen(int fd, const struct sockaddr *addr, socklen_t addrlen); int ff_listen(int fd, const struct sockaddr *addr, socklen_t addrlen,
void *logctx);
/** /**
* Poll for a single connection on the passed file descriptor. * Poll for a single connection on the passed file descriptor.

@ -188,7 +188,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
if (s->listen == 2) { if (s->listen == 2) {
// multi-client // multi-client
if ((ret = ff_listen(fd, cur_ai->ai_addr, cur_ai->ai_addrlen)) < 0) if ((ret = ff_listen(fd, cur_ai->ai_addr, cur_ai->ai_addrlen, h)) < 0)
goto fail1; goto fail1;
} else if (s->listen == 1) { } else if (s->listen == 1) {
// single client // single client

Loading…
Cancel
Save