> On 4 Apr 2018, at 19:08, vdi...@akamai.com wrote: > > From: Vishwanath Dixit <vdi...@akamai.com> > > In write only mode, the TCP receive buffer's data keeps growing with > http response messages and the buffer eventually becomes full. > This results in zero tcp window size, which in turn causes unwanted > issues, like, terminated tcp connection. The issue is apparent when > http persistent connection is enabled in hls/dash live streaming use > cases. To overcome this issue, the logic here reads the buffer data > when a file transfer is completed, so that any accumulated data in > the recieve buffer gets flushed out. > --- > libavformat/http.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/libavformat/http.c b/libavformat/http.c > index 983034f..0c39e9c 100644 > --- a/libavformat/http.c > +++ b/libavformat/http.c > @@ -1627,6 +1627,18 @@ static int http_shutdown(URLContext *h, int flags) > ((flags & AVIO_FLAG_READ) && s->chunked_post && s->listen)) { > ret = ffurl_write(s->hd, footer, sizeof(footer) - 1); > ret = ret > 0 ? 0 : ret; > + /* flush the receive buffer when it is write only mode */ > + if (!(flags & AVIO_FLAG_READ)) { > + char buf[1024]; > + int read_ret; > + s->hd->flags |= AVIO_FLAG_NONBLOCK; > + read_ret = ffurl_read(s->hd, buf, sizeof(buf)); > + s->hd->flags &= ~AVIO_FLAG_NONBLOCK; > + if (read_ret < 0 && read_ret != AVERROR(EAGAIN)) { > + av_log(h, AV_LOG_ERROR, "URL read error: %d\n", read_ret); > + ret = read_ret; > + } > + } > s->end_chunked_post = 1; > } > > -- > 1.9.1 >
LGTM, but i cannot sure the buf and read_ret define in the paragraph is a good style. Thanks Steven _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel