ff_network_wait_fd_timeout(): check for interrupt before operation
authorAndrey Utkin <andrey.krieger.utkin@gmail.com>
Fri, 12 Jul 2013 07:35:51 +0000 (10:35 +0300)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Jul 2013 19:27:27 +0000 (21:27 +0200)
Reviewed-by: Lukasz M <lukasz.m.luki@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/network.c
libavformat/network.h

index 55392af..1cd83b8 100644 (file)
@@ -157,11 +157,11 @@ int ff_network_wait_fd_timeout(int fd, int write, int64_t timeout, AVIOInterrupt
     int64_t wait_start = 0;
 
     while (1) {
+        if (ff_check_interrupt(int_cb))
+            return AVERROR_EXIT;
         ret = ff_network_wait_fd(fd, write);
         if (ret != AVERROR(EAGAIN))
             return ret;
-        if (ff_check_interrupt(int_cb))
-            return AVERROR_EXIT;
         if (timeout > 0) {
             if (!wait_start)
                 wait_start = av_gettime();
index d0a1e31..9cfad11 100644 (file)
@@ -90,7 +90,7 @@ int ff_network_wait_fd(int fd, int write);
  * @fd Socket descriptor
  * @write Set 1 to wait for socket able to be read, 0 to be written
  * @timeout Timeout interval, in microseconds. Actual precision is 100000 mcs, due to ff_network_wait_fd usage
- * @param int_cb Interrupt callback, is checked after each ff_network_wait_fd call
+ * @param int_cb Interrupt callback, is checked before each ff_network_wait_fd call
  * @return 0 if data can be read/written, AVERROR(ETIMEDOUT) if timeout expired, or negative error code
  */
 int ff_network_wait_fd_timeout(int fd, int write, int64_t timeout, AVIOInterruptCB *int_cb);