On Wed, Jun 13, 2018 at 1:27 PM, Gj X wrote:
> fix:
> diff --git a/libavformat/ftp.c b/libavformat/ftp.c
> index 9aa7a45629..3474a0adbc 100644
> --- a/libavformat/ftp.c
> +++ b/libavformat/ftp.c
> @@ -777,7 +777,11 @@ static int ftp_read(URLContext *h, unsigned char *buf,
> int size)
> {
> FTPContext *s = h->priv_data;
> int read, err, retry_done = 0;
> -
> +if(s->position >= s->filesize)
> +{
> +ff_dlog(h,"ftp protocol reach file end\n");
> +return AVERROR_EOF;
> +}
> ff_dlog(h, "ftp protocol read %d bytes\n", size);
>retry:
> if (s->state == DISCONNECTED) {
>
Hi,
Thanks for your contribution. I just looked at that function and it
seems like `ftp_read` needs some improvement.
But staying on the 0 != EOF fixup topic, probably something like this
should prod it to work:
diff --git a/libavformat/ftp.c b/libavformat/ftp.c
index 9aa7a45629..f07e9fcdd9 100644
--- a/libavformat/ftp.c
+++ b/libavformat/ftp.c
@@ -783,13 +783,13 @@ static int ftp_read(URLContext *h, unsigned char
*buf, int size)
if (s->state == DISCONNECTED) {
/* optimization */
if (s->position >= s->filesize)
-return 0;
+return AVERROR_EOF;
if ((err = ftp_connect_data_connection(h)) < 0)
return err;
}
if (s->state == READY) {
if (s->position >= s->filesize)
-return 0;
+return AVERROR_EOF;
if ((err = ftp_retrieve(s)) < 0)
return err;
}
@@ -823,7 +823,7 @@ static int ftp_read(URLContext *h, unsigned char
*buf, int size)
goto retry;
}
}
-return read;
+return read ? read : AVERROR_EOF;
}
av_log(h, AV_LOG_DEBUG, "FTP read failed\n");
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel