1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-15 14:13:16 +02:00

Merge commit 'abe5268c3328bf0e8fcfb7dc6e231b8920177c3a'

* commit 'abe5268c3328bf0e8fcfb7dc6e231b8920177c3a':
  tcp: Use a different log message and level if there's more addresses to try

Conflicts:
	libavformat/tcp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer
2013-08-06 17:53:01 +02:00
4 changed files with 15 additions and 7 deletions

View File

@@ -267,7 +267,8 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
} }
int ff_listen_connect(int fd, const struct sockaddr *addr, int ff_listen_connect(int fd, const struct sockaddr *addr,
socklen_t addrlen, int timeout, URLContext *h) socklen_t addrlen, int timeout, URLContext *h,
int will_try_next)
{ {
struct pollfd p = {fd, POLLOUT, 0}; struct pollfd p = {fd, POLLOUT, 0};
int ret; int ret;
@@ -294,9 +295,13 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
char errbuf[100]; char errbuf[100];
ret = AVERROR(ret); ret = AVERROR(ret);
av_strerror(ret, errbuf, sizeof(errbuf)); av_strerror(ret, errbuf, sizeof(errbuf));
av_log(h, AV_LOG_ERROR, if (will_try_next)
"Connection to %s failed: %s\n", av_log(h, AV_LOG_WARNING,
h->filename, errbuf); "Connection to %s failed (%s), trying next address\n",
h->filename, errbuf);
else
av_log(h, AV_LOG_ERROR, "Connection to %s failed: %s\n",
h->filename, errbuf);
} }
default: default:
return ret; return ret;

View File

@@ -251,11 +251,14 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
* @param timeout Polling timeout in milliseconds. * @param timeout Polling timeout in milliseconds.
* @param h URLContext providing interrupt check * @param h URLContext providing interrupt check
* callback and logging context. * callback and logging context.
* @param will_try_next Whether the caller will try to connect to another
* address for the same host name, affecting the form of
* logged errors.
* @return 0 on success, AVERROR on failure. * @return 0 on success, AVERROR on failure.
*/ */
int ff_listen_connect(int fd, const struct sockaddr *addr, int ff_listen_connect(int fd, const struct sockaddr *addr,
socklen_t addrlen, int timeout, socklen_t addrlen, int timeout,
URLContext *h); URLContext *h, int will_try_next);
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);

View File

@@ -127,7 +127,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
} }
} else { } else {
if ((ret = ff_listen_connect(fd, cur_ai->ai_addr, cur_ai->ai_addrlen, if ((ret = ff_listen_connect(fd, cur_ai->ai_addr, cur_ai->ai_addrlen,
s->open_timeout / 1000, h)) < 0) { s->open_timeout / 1000, h, cur_ai->ai_next)) < 0) {
if (ret == AVERROR_EXIT) if (ret == AVERROR_EXIT)
goto fail1; goto fail1;

View File

@@ -83,7 +83,7 @@ static int unix_open(URLContext *h, const char *filename, int flags)
} }
} else { } else {
ret = ff_listen_connect(fd, (struct sockaddr *)&s->addr, ret = ff_listen_connect(fd, (struct sockaddr *)&s->addr,
sizeof(s->addr), s->timeout, h); sizeof(s->addr), s->timeout, h, 0);
if (ret < 0) if (ret < 0)
goto fail; goto fail;
} }