[ 
https://issues.apache.org/jira/browse/NET-313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Felix Bolte updated NET-313:
----------------------------

    Description: 
as implemented in NET-288, the client can work now via IPv6 ... EPSV is not 
only useful on IPv6 but also when NAT is enabled (see [RFC 
2428|http://tools.ietf.org/html/rfc2428])

what my patch does:

 * (re)enable EPSV command on IPv4 too (i dont know why [[email protected]] 
removed it from the supplied patch in NET-288), also see my comments in patch
 * sending EPRT only if we are over IPv6, cause there is no advantage over PORT 
on IPv4, it could even have disadvantages (see comments in patch)
 * EPRT was sending the result of getActivePort() to the server, but when there 
was no activePortRange set, it did send 0 as default which leads to an error on 
server site:
{quote}
Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP command: Client 
"192.168.11.130", "EPRT |1|192.168.11.130|0|"
Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP response: Client 
"192.168.11.130", "500 Illegal EPRT command."
{quote}
 * and even calling getActivePort() has no sense here, cause that port is used 
to be random, but we should send same port  where the ServerSocket is listening 
on -> server.getLocalPort()
 * getActivePort() checks if __activeMaxPort > __activeMinPort, but when i want 
to set a range of only one single port (min==max) it would return 0 ... now it 
will check if equal and return __activeMaxPort

  was:
as implemented in NET-288, the client can work now via IPv6 ... EPSV is not 
only useful on IPv6 but also when NAT is enabled (see [RFC 
2428|http://tools.ietf.org/html/rfc2428])

what my patch does:

 * (re)enable EPSV command on IPv4 too (i dont know why [[email protected]] 
removed it from the supplied patch in NET-288 (see comments in patch)
 * sending EPRT only if we are over IPv6, cause there is no advantage over PORT 
on IPv4, it could even have disadvantages (see comments in patch)
 * EPRT was sending the result of getActivePort() to the server, but when there 
was no activePortRange set, it did send 0 as default which leads to an error on 
server site:
{quote}
Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP command: Client 
"192.168.11.130", "EPRT |1|192.168.11.130|0|"
Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP response: Client 
"192.168.11.130", "500 Illegal EPRT command."
{quote}
 * and even calling getActivePort() has no sense here, cause that port is used 
to be random, but we should send same port  where the ServerSocket is listening 
on -> server.getLocalPort()
 * getActivePort() checks if __activeMaxPort > __activeMinPort, but when i want 
to set a range of only one single port (min==max) it would return 0 ... now it 
will check if equal and return __activeMaxPort


> FTP: EPRT fails + EPRT/EPSV issues
> ----------------------------------
>
>                 Key: NET-313
>                 URL: https://issues.apache.org/jira/browse/NET-313
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 2.1
>         Environment: FTP server = vsftpd/Centos 5.4
> FTPClient = commons-net (FTPClient) ;)
> Network = IPv4
>            Reporter: Felix Bolte
>         Attachments: ftp_nat.patch
>
>
> as implemented in NET-288, the client can work now via IPv6 ... EPSV is not 
> only useful on IPv6 but also when NAT is enabled (see [RFC 
> 2428|http://tools.ietf.org/html/rfc2428])
> what my patch does:
>  * (re)enable EPSV command on IPv4 too (i dont know why 
> [[email protected]] removed it from the supplied patch in NET-288), also 
> see my comments in patch
>  * sending EPRT only if we are over IPv6, cause there is no advantage over 
> PORT on IPv4, it could even have disadvantages (see comments in patch)
>  * EPRT was sending the result of getActivePort() to the server, but when 
> there was no activePortRange set, it did send 0 as default which leads to an 
> error on server site:
> {quote}
> Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP command: Client 
> "192.168.11.130", "EPRT |1|192.168.11.130|0|"
> Tue Mar 23 17:17:20 2010 [pid 10581] [ftpuser] FTP response: Client 
> "192.168.11.130", "500 Illegal EPRT command."
> {quote}
>  * and even calling getActivePort() has no sense here, cause that port is 
> used to be random, but we should send same port  where the ServerSocket is 
> listening on -> server.getLocalPort()
>  * getActivePort() checks if __activeMaxPort > __activeMinPort, but when i 
> want to set a range of only one single port (min==max) it would return 0 ... 
> now it will check if equal and return __activeMaxPort

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to