On Sun, Sep 6, 2015 at 1:52 PM, Michael Niedermayer <michae...@gmx.at> wrote: > From: Michael Niedermayer <mich...@niedermayer.cc> > > Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > --- > libavformat/http.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/libavformat/http.c b/libavformat/http.c > index aa60aef..126c7b3 100644 > --- a/libavformat/http.c > +++ b/libavformat/http.c > @@ -28,6 +28,7 @@ > #include "libavutil/avassert.h" > #include "libavutil/avstring.h" > #include "libavutil/opt.h" > +#include "libavutil/time.h" > > #include "avformat.h" > #include "http.h" > @@ -107,6 +108,7 @@ typedef struct HTTPContext { > int reconnect; > int reconnect_at_eof; > int reconnect_streamed; > + int reconnect_delay; > int listen; > char *resource; > int reply_code; > @@ -1249,6 +1251,8 @@ static int http_read_stream(URLContext *h, uint8_t > *buf, int size) > || (read_ret == 0 && s->reconnect_at_eof && (!h->is_streamed || > s->reconnect_streamed))) { > int64_t target = h->is_streamed ? 0 : s->off; > av_log(h, AV_LOG_INFO, "Will reconnect at %"PRId64" error=%s.\n", > s->off, av_err2str(read_ret)); > + av_usleep(1000U*1000*s->reconnect_delay); > + s->reconnect_delay = 1 + 2*s->reconnect_delay; > seek_ret = http_seek_internal(h, target, SEEK_SET, 1); > if (seek_ret != target) { > av_log(h, AV_LOG_ERROR, "Failed to reconnect at %"PRId64".\n", > target); > @@ -1256,7 +1260,8 @@ static int http_read_stream(URLContext *h, uint8_t > *buf, int size) > } > > read_ret = http_buf_read(h, buf, size); > - } > + } else > + s->reconnect_delay = 0; > > return read_ret; > } > -- > 1.7.9.5
Doesn't this have overflow issues? More precisely, are you sure this behaves correctly when the int reconnect_delay wraps around? > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel