summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Marek <lukasz.m.luki2@gmail.com>2014-07-04 00:32:16 +0200
committerLukasz Marek <lukasz.m.luki2@gmail.com>2014-07-04 01:21:08 +0200
commita0358db323a89d976255567b909f4d18a7eb3461 (patch)
tree52f8693c9eed8f4387f0fa7b0093ddfd2ace8f8e
parent3ba6dce48dc1e957dada8bfbff9106a2444e22c4 (diff)
lavf/ftp: explicitly enable UTF-8
Most FTP servers enable UTF-8 by default, but it is not required by the standard. Enabling it manually makes ffmpeg implementation more consistent when server doesn't enable it by default. Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
-rw-r--r--libavformat/ftp.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/libavformat/ftp.c b/libavformat/ftp.c
index e99d4dd6db..bbed7eb2f5 100644
--- a/libavformat/ftp.c
+++ b/libavformat/ftp.c
@@ -434,6 +434,21 @@ static int ftp_restart(FTPContext *s, int64_t pos)
return 0;
}
+static int ftp_features(FTPContext *s)
+{
+ static const char *feat_command = "FEAT\r\n";
+ static const char *enable_utf8_command = "OPTS UTF8 ON\r\n";
+ static const int feat_codes[] = {211, 500, 502, 0}; /* 500, 502 are incorrect codes */
+ static const int opts_codes[] = {200, 451, 500, 502}; /* 500, 451, 502 are incorrect codes */
+ char *feat;
+
+ if (ftp_send_command(s, feat_command, feat_codes, &feat) == 211) {
+ if (av_stristr(feat, "UTF8"))
+ ftp_send_command(s, enable_utf8_command, opts_codes, NULL);
+ }
+ return 0;
+}
+
static int ftp_connect_control_connection(URLContext *h)
{
char buf[CONTROL_BUFFER_SIZE], opts_format[20], *response = NULL;
@@ -477,6 +492,8 @@ static int ftp_connect_control_connection(URLContext *h)
av_log(h, AV_LOG_ERROR, "Set content type failed\n");
return err;
}
+
+ ftp_features(s);
}
return 0;
}