* [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout @ 2022-01-14 2:42 Wang Chuan 2022-01-14 3:21 ` "zhilizhao(赵志立)" 0 siblings, 1 reply; 4+ messages in thread From: Wang Chuan @ 2022-01-14 2:42 UTC (permalink / raw) To: ffmpeg-devel If we meet timeout when reading network resource, avio_read will set [eof_reached] to 1. And this prevent caller to retry since avio_read do nothing and just return if eof_reached == 1. Signed-off-by: Wang Chuan <ouchuanm@outlook.com> --- libavformat/aviobuf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 29d4bd7510..38cb21debf 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -580,8 +580,9 @@ static void fill_buffer(AVIOContext *s) be done without rereading data */ s->eof_reached = 1; } else if (len < 0) { - s->eof_reached = 1; - s->error= len; + s->error = len; + if (s->error != AVERROR(ETIMEDOUT)) + s->eof_reached = 1; } else { s->pos += len; s->buf_ptr = dst; -- 2.29.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout 2022-01-14 2:42 [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout Wang Chuan @ 2022-01-14 3:21 ` "zhilizhao(赵志立)" 2022-01-14 4:50 ` Wang Chuan 0 siblings, 1 reply; 4+ messages in thread From: "zhilizhao(赵志立)" @ 2022-01-14 3:21 UTC (permalink / raw) To: FFmpeg development discussions and patches > On Jan 14, 2022, at 10:42 AM, Wang Chuan <ouchuanm@outlook.com> wrote: > > If we meet timeout when reading network resource, avio_read will set > [eof_reached] to 1. And this prevent caller to retry since avio_read > do nothing and just return if eof_reached == 1. If timeout was triggered by a small ‘timeout’ setting from user, just change the ‘timeout' configuration. If it was triggered by a system call, it’s likely to be in a state of not recoverable. Could you share more details about the issue this patch trying to solve? > > Signed-off-by: Wang Chuan <ouchuanm@outlook.com> > --- > libavformat/aviobuf.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c > index 29d4bd7510..38cb21debf 100644 > --- a/libavformat/aviobuf.c > +++ b/libavformat/aviobuf.c > @@ -580,8 +580,9 @@ static void fill_buffer(AVIOContext *s) > be done without rereading data */ > s->eof_reached = 1; > } else if (len < 0) { > - s->eof_reached = 1; > - s->error= len; > + s->error = len; > + if (s->error != AVERROR(ETIMEDOUT)) > + s->eof_reached = 1; > } else { > s->pos += len; > s->buf_ptr = dst; > -- > 2.29.2 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout 2022-01-14 3:21 ` "zhilizhao(赵志立)" @ 2022-01-14 4:50 ` Wang Chuan 2022-01-14 5:07 ` "zhilizhao(赵志立)" 0 siblings, 1 reply; 4+ messages in thread From: Wang Chuan @ 2022-01-14 4:50 UTC (permalink / raw) To: ffmpeg-devel I just try to use avio to read stream by http protocol. But if the server responds too late, avio_read will return timeout, and the only way I can do is close it and reopen. Of course I can set a large timeout, but it's hard to decide which timeout value is large enough. On 2022/1/14 11:21, "zhilizhao(赵志立)" wrote: > >> On Jan 14, 2022, at 10:42 AM, Wang Chuan <ouchuanm@outlook.com> wrote: >> >> If we meet timeout when reading network resource, avio_read will set >> [eof_reached] to 1. And this prevent caller to retry since avio_read >> do nothing and just return if eof_reached == 1. > If timeout was triggered by a small ‘timeout’ setting from user, just > change the ‘timeout' configuration. If it was triggered by a system call, > it’s likely to be in a state of not recoverable. Could you share more > details about the issue this patch trying to solve? > >> Signed-off-by: Wang Chuan <ouchuanm@outlook.com> >> --- >> libavformat/aviobuf.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c >> index 29d4bd7510..38cb21debf 100644 >> --- a/libavformat/aviobuf.c >> +++ b/libavformat/aviobuf.c >> @@ -580,8 +580,9 @@ static void fill_buffer(AVIOContext *s) >> be done without rereading data */ >> s->eof_reached = 1; >> } else if (len < 0) { >> - s->eof_reached = 1; >> - s->error= len; >> + s->error = len; >> + if (s->error != AVERROR(ETIMEDOUT)) >> + s->eof_reached = 1; >> } else { >> s->pos += len; >> s->buf_ptr = dst; >> -- >> 2.29.2 >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout 2022-01-14 4:50 ` Wang Chuan @ 2022-01-14 5:07 ` "zhilizhao(赵志立)" 0 siblings, 0 replies; 4+ messages in thread From: "zhilizhao(赵志立)" @ 2022-01-14 5:07 UTC (permalink / raw) To: FFmpeg development discussions and patches > On Jan 14, 2022, at 12:50 PM, Wang Chuan <ouchuanm@outlook.com> wrote: > > I just try to use avio to read stream by http protocol. > > But if the server responds too late, avio_read will return timeout, and the only way I can do is close it and reopen. > > Of course I can set a large timeout, but it's hard to decide which timeout value is large enough. Then don’t set it, use the default infinite value. > > On 2022/1/14 11:21, "zhilizhao(赵志立)" wrote: >> >>> On Jan 14, 2022, at 10:42 AM, Wang Chuan <ouchuanm@outlook.com> wrote: >>> >>> If we meet timeout when reading network resource, avio_read will set >>> [eof_reached] to 1. And this prevent caller to retry since avio_read >>> do nothing and just return if eof_reached == 1. >> If timeout was triggered by a small ‘timeout’ setting from user, just >> change the ‘timeout' configuration. If it was triggered by a system call, >> it’s likely to be in a state of not recoverable. Could you share more >> details about the issue this patch trying to solve? >> >>> Signed-off-by: Wang Chuan <ouchuanm@outlook.com> >>> --- >>> libavformat/aviobuf.c | 5 +++-- >>> 1 file changed, 3 insertions(+), 2 deletions(-) >>> >>> diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c >>> index 29d4bd7510..38cb21debf 100644 >>> --- a/libavformat/aviobuf.c >>> +++ b/libavformat/aviobuf.c >>> @@ -580,8 +580,9 @@ static void fill_buffer(AVIOContext *s) >>> be done without rereading data */ >>> s->eof_reached = 1; >>> } else if (len < 0) { >>> - s->eof_reached = 1; >>> - s->error= len; >>> + s->error = len; >>> + if (s->error != AVERROR(ETIMEDOUT)) >>> + s->eof_reached = 1; >>> } else { >>> s->pos += len; >>> s->buf_ptr = dst; >>> -- >>> 2.29.2 >>> >>> _______________________________________________ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >>> To unsubscribe, visit link above, or email >>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-14 5:07 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-14 2:42 [FFmpeg-devel] [PATCH] avformat/aviobuf: let avio_read can retry when timeout Wang Chuan 2022-01-14 3:21 ` "zhilizhao(赵志立)" 2022-01-14 4:50 ` Wang Chuan 2022-01-14 5:07 ` "zhilizhao(赵志立)"
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git