summaryrefslogtreecommitdiff
path: root/0024-Introduce-new-return-value-450.patch
diff options
context:
space:
mode:
Diffstat (limited to '0024-Introduce-new-return-value-450.patch')
-rw-r--r--0024-Introduce-new-return-value-450.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/0024-Introduce-new-return-value-450.patch b/0024-Introduce-new-return-value-450.patch
new file mode 100644
index 0000000..86c5f8e
--- /dev/null
+++ b/0024-Introduce-new-return-value-450.patch
@@ -0,0 +1,77 @@
+From 1d5cdf309387ff92988ab17d746f015d833a4b92 Mon Sep 17 00:00:00 2001
+From: Martin Sehnoutka <msehnout@redhat.com>
+Date: Thu, 17 Nov 2016 11:08:52 +0100
+Subject: [PATCH 24/59] Introduce new return value 450:
+
+ *450 Requested file action not taken.
+ File unavailable (e.g., file busy).
+---
+ ftpcodes.h | 1 +
+ postlogin.c | 9 ++++++++-
+ sysutil.c | 3 +++
+ sysutil.h | 3 ++-
+ 4 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/ftpcodes.h b/ftpcodes.h
+index 93290c0..81e25c5 100644
+--- a/ftpcodes.h
++++ b/ftpcodes.h
+@@ -52,6 +52,7 @@
+ #define FTP_TLS_FAIL 421
+ #define FTP_BADSENDCONN 425
+ #define FTP_BADSENDNET 426
++#define FTP_FILETMPFAIL 450
+ #define FTP_BADSENDFILE 451
+
+ #define FTP_BADCMD 500
+diff --git a/postlogin.c b/postlogin.c
+index bf12970..29958c0 100644
+--- a/postlogin.c
++++ b/postlogin.c
+@@ -679,7 +679,14 @@ handle_retr(struct vsf_session* p_sess, int is_http)
+ opened_file = str_open(&p_sess->ftp_arg_str, kVSFSysStrOpenReadOnly);
+ if (vsf_sysutil_retval_is_error(opened_file))
+ {
+- vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Failed to open file.");
++ if (kVSFSysUtilErrAGAIN == vsf_sysutil_get_error())
++ {
++ vsf_cmdio_write(p_sess, FTP_FILETMPFAIL, "Temporarily failed to open file");
++ }
++ else
++ {
++ vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Failed to open file.");
++ }
+ return;
+ }
+ /* Lock file if required */
+diff --git a/sysutil.c b/sysutil.c
+index 9881a66..6d7cb3f 100644
+--- a/sysutil.c
++++ b/sysutil.c
+@@ -1632,6 +1632,9 @@ vsf_sysutil_get_error(void)
+ case ENOENT:
+ retval = kVSFSysUtilErrNOENT;
+ break;
++ case EAGAIN:
++ retval = kVSFSysUtilErrAGAIN;
++ break;
+ default:
+ break;
+ }
+diff --git a/sysutil.h b/sysutil.h
+index 79b5514..c145bdf 100644
+--- a/sysutil.h
++++ b/sysutil.h
+@@ -18,7 +18,8 @@ enum EVSFSysUtilError
+ kVSFSysUtilErrINVAL,
+ kVSFSysUtilErrOPNOTSUPP,
+ kVSFSysUtilErrACCES,
+- kVSFSysUtilErrNOENT
++ kVSFSysUtilErrNOENT,
++ kVSFSysUtilErrAGAIN
+ };
+ enum EVSFSysUtilError vsf_sysutil_get_error(void);
+
+--
+2.14.4
+