[FFmpeg-devel] [PATCH] tcp: properly return EOF

Ronald S. Bultje rsbultje at gmail.com
Sat Dec 30 19:09:03 EET 2017


Hi,

On Sat, Dec 30, 2017 at 11:44 AM, wm4 <nfxjfg at googlemail.com> wrote:

> There is no POSIX error code for EOF - recv() signals EOF by simply
> returning 0. But libavformat recently changed its conventionts and
> requires an explicit AVERROR_EOF, or it might get into an endless retry
> loop, consuming 100% CPU while doing nothing.
> ---
>  libavformat/tcp.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/libavformat/tcp.c b/libavformat/tcp.c
> index fef0729da6..8773493df1 100644
> --- a/libavformat/tcp.c
> +++ b/libavformat/tcp.c
> @@ -225,6 +225,8 @@ static int tcp_read(URLContext *h, uint8_t *buf, int
> size)
>              return ret;
>      }
>      ret = recv(s->fd, buf, size, 0);
> +    if (ret == 0)
> +        return AVERROR_EOF;
>      return ret < 0 ? ff_neterrno() : ret;
>  }


OK.

Ronald


More information about the ffmpeg-devel mailing list