tbaeder / rpms / vsftpd

Forked from rpms/vsftpd 3 years ago
Clone
Blob Blame History Raw
diff -up vsftpd-3.0.2/ftpcodes.h.rc450 vsftpd-3.0.2/ftpcodes.h
--- vsftpd-3.0.2/ftpcodes.h.rc450	2008-02-12 01:30:46.000000000 +0100
+++ vsftpd-3.0.2/ftpcodes.h	2014-06-18 13:41:02.238821708 +0200
@@ -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 -up vsftpd-3.0.2/postlogin.c.rc450 vsftpd-3.0.2/postlogin.c
--- vsftpd-3.0.2/postlogin.c.rc450	2012-09-18 11:59:37.000000000 +0200
+++ vsftpd-3.0.2/postlogin.c	2014-06-18 13:41:02.238821708 +0200
@@ -670,7 +670,14 @@ handle_retr(struct vsf_session* p_sess,
   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 -up vsftpd-3.0.2/sysutil.c.rc450 vsftpd-3.0.2/sysutil.c
--- vsftpd-3.0.2/sysutil.c.rc450	2014-06-18 13:41:02.231821807 +0200
+++ vsftpd-3.0.2/sysutil.c	2014-06-18 13:41:02.238821708 +0200
@@ -1632,6 +1632,9 @@ vsf_sysutil_get_error(void)
     case ENOENT:
       retval = kVSFSysUtilErrNOENT;
       break;
+    case EAGAIN:
+      retval = kVSFSysUtilErrAGAIN;
+      break;
     default:
       break;
   }
diff -up vsftpd-3.0.2/sysutil.h.rc450 vsftpd-3.0.2/sysutil.h
--- vsftpd-3.0.2/sysutil.h.rc450	2014-06-18 13:41:02.231821807 +0200
+++ vsftpd-3.0.2/sysutil.h	2014-06-18 13:41:02.239821694 +0200
@@ -18,7 +18,8 @@ enum EVSFSysUtilError
   kVSFSysUtilErrINVAL,
   kVSFSysUtilErrOPNOTSUPP,
   kVSFSysUtilErrACCES,
-  kVSFSysUtilErrNOENT
+  kVSFSysUtilErrNOENT,
+  kVSFSysUtilErrAGAIN
 };
 enum EVSFSysUtilError vsf_sysutil_get_error(void);