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