aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-06 17:53:01 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-06 17:53:01 +0200
commit89efaabc9949dcdc49126881beaa38355b8f9a44 (patch)
tree61bc2709d50bc13b2670323656d20bab79e6ee16
parent287f7d0ae1267bf5e505d4173f5a4cb77f433c66 (diff)
parentabe5268c3328bf0e8fcfb7dc6e231b8920177c3a (diff)
downloadffmpeg-89efaabc9949dcdc49126881beaa38355b8f9a44.tar.gz
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>
-rw-r--r--libavformat/network.c13
-rw-r--r--libavformat/network.h5
-rw-r--r--libavformat/tcp.c2
-rw-r--r--libavformat/unix.c2
4 files changed, 15 insertions, 7 deletions
diff --git a/libavformat/network.c b/libavformat/network.c
index 1cd83b80c5..a41b0511e4 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -267,7 +267,8 @@ int ff_listen_bind(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};
int ret;
@@ -294,9 +295,13 @@ int ff_listen_connect(int fd, const struct sockaddr *addr,
char errbuf[100];
ret = AVERROR(ret);
av_strerror(ret, errbuf, sizeof(errbuf));
- av_log(h, AV_LOG_ERROR,
- "Connection to %s failed: %s\n",
- h->filename, errbuf);
+ if (will_try_next)
+ av_log(h, AV_LOG_WARNING,
+ "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:
return ret;
diff --git a/libavformat/network.h b/libavformat/network.h
index 6552f83fc9..4b5398a12c 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -251,11 +251,14 @@ int ff_listen_bind(int fd, const struct sockaddr *addr,
* @param timeout Polling timeout in milliseconds.
* @param h URLContext providing interrupt check
* 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.
*/
int ff_listen_connect(int fd, const struct sockaddr *addr,
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);
diff --git a/libavformat/tcp.c b/libavformat/tcp.c
index c2a76cb710..36af37a94a 100644
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -127,7 +127,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
}
} else {
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)
goto fail1;
diff --git a/libavformat/unix.c b/libavformat/unix.c
index 33f6bb457d..70696c0c0c 100644
--- a/libavformat/unix.c
+++ b/libavformat/unix.c
@@ -83,7 +83,7 @@ static int unix_open(URLContext *h, const char *filename, int flags)
}
} else {
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)
goto fail;
}