diff --git a/daemon/gvfsbackendftp.c b/daemon/gvfsbackendftp.c index 5fe056b..daf31f7 100644 --- a/daemon/gvfsbackendftp.c +++ b/daemon/gvfsbackendftp.c @@ -107,6 +107,7 @@ gvfs_backend_ftp_determine_features (GVfsFtpTask *task) { "UTF8", G_VFS_FTP_FEATURE_UTF8 }, { "AUTH TLS", G_VFS_FTP_FEATURE_AUTH_TLS }, { "AUTH SSL", G_VFS_FTP_FEATURE_AUTH_SSL }, + { "CLNT", G_VFS_FTP_FEATURE_CLNT } }; guint i, j; char **reply; diff --git a/daemon/gvfsbackendftp.h b/daemon/gvfsbackendftp.h index f24d413..dd260ac 100644 --- a/daemon/gvfsbackendftp.h +++ b/daemon/gvfsbackendftp.h @@ -40,7 +40,8 @@ typedef enum { G_VFS_FTP_FEATURE_AUTH_TLS, G_VFS_FTP_FEATURE_AUTH_SSL, G_VFS_FTP_FEATURE_CHMOD, - G_VFS_FTP_FEATURE_CHGRP + G_VFS_FTP_FEATURE_CHGRP, + G_VFS_FTP_FEATURE_CLNT } GVfsFtpFeature; #define G_VFS_FTP_FEATURES_DEFAULT (0) diff --git a/daemon/gvfsftptask.c b/daemon/gvfsftptask.c index d78e0d5..b7aa303 100644 --- a/daemon/gvfsftptask.c +++ b/daemon/gvfsftptask.c @@ -146,6 +146,14 @@ g_vfs_ftp_task_setup_connection (GVfsFtpTask *task) g_vfs_ftp_task_clear_error (task); #endif + /* send our user-agent; this is usually optional, but some + * servers like Gene6 refuse to enable UTF8 otherwise */ + if (g_vfs_backend_ftp_has_feature (task->backend, G_VFS_FTP_FEATURE_CLNT)) + { + if (!g_vfs_ftp_task_send (task, 0, "CLNT gvfs/" VERSION)) + g_vfs_ftp_task_clear_error (task); + } + /* instruct server that we'll give and assume we get utf8 */ if (g_vfs_backend_ftp_has_feature (task->backend, G_VFS_FTP_FEATURE_UTF8)) {