6872c71
diff -up vsftpd-2.0.7/postlogin.c.bind_denied vsftpd-2.0.7/postlogin.c
6872c71
--- vsftpd-2.0.7/postlogin.c.bind_denied	2008-07-29 21:51:09.000000000 -0400
6872c71
+++ vsftpd-2.0.7/postlogin.c	2008-09-08 23:39:28.000000000 -0400
6872c71
@@ -574,7 +574,8 @@ handle_pasv(struct vsf_session* p_sess, 
6872c71
         break;
6872c71
       }
662b3a6
     }
662b3a6
-    if (vsf_sysutil_get_error() == kVSFSysUtilErrADDRINUSE)
662b3a6
+    if ( (vsf_sysutil_get_error() == kVSFSysUtilErrADDRINUSE) ||
662b3a6
+         (vsf_sysutil_get_error() == kVSFSysUtilErrEACCES) )
662b3a6
     {
662b3a6
       continue;
662b3a6
     }
6872c71
diff -up vsftpd-2.0.7/sysutil.c.bind_denied vsftpd-2.0.7/sysutil.c
6872c71
--- vsftpd-2.0.7/sysutil.c.bind_denied	2008-09-08 23:38:10.000000000 -0400
6872c71
+++ vsftpd-2.0.7/sysutil.c	2008-09-08 23:38:10.000000000 -0400
6872c71
@@ -1561,6 +1561,9 @@ vsf_sysutil_get_error(void)
662b3a6
     case EOPNOTSUPP:
662b3a6
       retval = kVSFSysUtilErrOPNOTSUPP;
662b3a6
       break;
662b3a6
+    case EACCES:
662b3a6
+      retval = kVSFSysUtilErrEACCES;
662b3a6
+      break;
662b3a6
   }
662b3a6
   return retval;
662b3a6
 }
6872c71
diff -up vsftpd-2.0.7/sysutil.h.bind_denied vsftpd-2.0.7/sysutil.h
6872c71
--- vsftpd-2.0.7/sysutil.h.bind_denied	2008-09-08 23:38:10.000000000 -0400
6872c71
+++ vsftpd-2.0.7/sysutil.h	2008-09-08 23:38:10.000000000 -0400
6872c71
@@ -16,7 +16,8 @@ enum EVSFSysUtilError
6872c71
   kVSFSysUtilErrNOSYS,
6872c71
   kVSFSysUtilErrINTR,
6872c71
   kVSFSysUtilErrINVAL,
6872c71
-  kVSFSysUtilErrOPNOTSUPP
6872c71
+  kVSFSysUtilErrOPNOTSUPP,
6872c71
+  kVSFSysUtilErrEACCES
6872c71
 };
6872c71
 enum EVSFSysUtilError vsf_sysutil_get_error(void);
6872c71