From 816c579cf3cbd079c1b14aaa063b61eed4c555ad Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Wed, 17 Jul 2013 02:37:15 +0200 Subject: [PATCH] ftp: warning about pure-ftp server used as and output --- libavformat/ftp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/ftp.c b/libavformat/ftp.c index 5241b13b83..1a4708109b 100644 --- a/libavformat/ftp.c +++ b/libavformat/ftp.c @@ -382,7 +382,7 @@ static int ftp_restart(FTPContext *s, int64_t pos) static int ftp_connect_control_connection(URLContext *h) { - char buf[CONTROL_BUFFER_SIZE], opts_format[20]; + char buf[CONTROL_BUFFER_SIZE], opts_format[20], *response = NULL; int err; AVDictionary *opts = NULL; FTPContext *s = h->priv_data; @@ -404,11 +404,16 @@ static int ftp_connect_control_connection(URLContext *h) } /* check if server is ready */ - if (ftp_status(s, NULL, connect_codes) != 220) { + if (ftp_status(s, ((h->flags & AVIO_FLAG_WRITE) ? &response : NULL), connect_codes) != 220) { av_log(h, AV_LOG_ERROR, "FTP server not ready for new users\n"); return AVERROR(EACCES); } + if ((h->flags & AVIO_FLAG_WRITE) && av_stristr(response, "pure-ftpd")) { + av_log(h, AV_LOG_WARNING, "Pure-FTPd server is used as an output protocol. It is known issue this implementation may produce incorrect content and it cannot be fixed at this moment."); + } + av_free(response); + if ((err = ftp_auth(s)) < 0) { av_log(h, AV_LOG_ERROR, "FTP authentication failed\n"); return err;