summaryrefslogtreecommitdiff
path: root/libavformat/tcp.c
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2011-03-13 00:42:27 +0100
committerRonald S. Bultje <rsbultje@gmail.com>2011-03-15 08:09:19 -0400
commitc76374c6db5f486672f9df223f43e4892bd655c9 (patch)
tree224beb5c4770ae0f10ffab26ec44f9bd1cc995e9 /libavformat/tcp.c
parentbafa4dd3e69531f262472ac286e0ae7d4dbfbd97 (diff)
Use AVERROR_EXIT with url_interrupt_cb.
Functions interrupted by url_interrupt_cb should not be restarted. Therefore using AVERROR(EINTR) was wrong, as it did not allow to distinguish when the underlying system call was interrupted and actually needed to be restarted. This fixes roundup issues 2657 and 2659 (ffplay not exiting for streamed content). Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Diffstat (limited to 'libavformat/tcp.c')
-rw-r--r--libavformat/tcp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libavformat/tcp.c b/libavformat/tcp.c
index b01f0b85bf..83529dfcc4 100644
--- a/libavformat/tcp.c
+++ b/libavformat/tcp.c
@@ -73,8 +73,10 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
if (ret < 0) {
struct pollfd p = {fd, POLLOUT, 0};
if (ff_neterrno() == AVERROR(EINTR)) {
- if (url_interrupt_cb())
+ if (url_interrupt_cb()) {
+ ret = AVERROR_EXIT;
goto fail1;
+ }
goto redo;
}
if (ff_neterrno() != AVERROR(EINPROGRESS) &&
@@ -84,7 +86,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
/* wait until we are connected or until abort */
for(;;) {
if (url_interrupt_cb()) {
- ret = AVERROR(EINTR);
+ ret = AVERROR_EXIT;
goto fail1;
}
ret = poll(&p, 1, 100);