In retry_transfer_wrapper, do not check url_interrupt_cb, causes problems
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Fri, 4 Mar 2011 22:43:02 +0000 (23:43 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 8 Mar 2011 01:09:44 +0000 (02:09 +0100)
when writing and pressing q during encoding. Instead, check url_interrupt_cb
at the end.

Note that when a protocol is interrupted by url_interrupt_cb, some data may
be silently discarded: the protocol context is not suitable for anything
anymore.

Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 688c22e033a48ebf84fb4b52642bbd40f11e9c4e)

libavformat/avio.c

index 49031a5..2265549 100644 (file)
@@ -237,6 +237,8 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int
         if (ret)
            fast_retries = FFMAX(fast_retries, 2);
         len += ret;
+        if (url_interrupt_cb())
+            return AVERROR(EINTR);
     }
     return len;
 }