Thanks Yutaka, I also noticed in the log of this post when you ftp to microsoft delegate logs an EPSV command https://www.delegate.org/mail-lists/delegate-en/4480?Refresh Is the EPSV command from the client to Delegate and then DeleGate passes the EPSV to the origin server ? If I have an EPSV capable client will the EPSV request be passed to delegate and then to the origin server ? Thanks again for your help. On 24 August 2010 00:40, Yutaka Sato <feedback@delegate.org> wrote: > Hi, > > In message <AANLkTimynQmktR0V6s=7DQ2Zc9tb2v64W62BLc=Hdp1H@mail.gmail.com> on 08/23/10(20:15:46) > you James <pbeiqbdyi-qa4rnuc6e3y6.ml@delegate.org> wrote: > |I have an issue with the following setup > | > |client -> ftp -> DeleGate -> ftps -> Origin Server > | > |The Origin Server is behind a NAT router and the server does support > |EPSV.however Delegate doesn't seem to negotiate it. > |The PASV negotaition results in Delegate trying to connect to the > |RFC1918 address of the server rather > |than the public ip address. Is there anyway to force Delegate to > |negotiate EPSV ? > | > |I noticed the doepsv option to FTPCONF but I am not entirely sure how > |it works ? Is it designed for this scenario ? > > It will be realized with the enclosed patch enabled with an option: > > FTPCONF=doepsv:sv > > Cheers, > Yutaka > -- > 9 9 Yutaka Sato <y.sato@delegate.org> http://delegate.org/y.sato/ > ( ~ ) National Institute of Advanced Industrial Science and Technology > _< >_ 1-1-4 Umezono, Tsukuba, Ibaraki, 305-8568 Japan > Do the more with the less -- B. Fuller > > *** dist/src/delegate9.9.8-pre12/src/ftp.c Sun Jun 13 21:03:52 2010 > --- ./src/ftp.c Mon Aug 23 23:33:03 2010 > *************** > *** 72,77 **** > --- 72,78 ---- > int fc_noxdcSV; /* don't use XDC with server */ > int fc_noxdcCL; > int fc_doepsvCL; > + int fc_doepsvSV; /* do EPSV with server */ > int fc_noepsvCL; > int fc_nopasvSV; /* don't use PASV with server */ > int fc_nopasvCL; > *************** > *** 391,396 **** > --- 392,398 ---- > }else > if( strcaseeq(what,"DOEPSV") ){ > if( *val == 0 || strcaseeq(val,"cl") ) FCF.fc_doepsvCL = 1; > + if( *val == 0 || strcaseeq(val,"sv") ) FCF.fc_doepsvSV = 1; > }else > if( strcaseeq(what,"NOEPSV") ){ > if( *val == 0 || strcaseeq(val,"cl") ) FCF.fc_noepsvCL = 1; > *************** > *** 3645,3650 **** > --- 3647,3655 ---- > int psock; > int timeout,stimeout; > > + if( FCF.fc_doepsvSV ){ > + put_serv(0,ts,"EPSV\r\n"); > + }else > if( sock_isv6(ServSock(Conn,ts,"mkPASV")) ){ > put_serv(0,ts,"EPSV\r\n"); > }else > -- jac