commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (NET-552) SocketTimeoutException connecting a FTP server via an HTTP Proxy
Date Thu, 08 Jan 2015 23:45:35 GMT

    [ https://issues.apache.org/jira/browse/NET-552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14270232#comment-14270232
] 

Sebb commented on NET-552:
--------------------------

Thanks, that's much easier to follow.
I think there was still a minor issue - the patch removed the method {{FTPClient#_connectAction_()}}.
This would mean any callers of the original method would not invoke the code now in the method
{{FTPClient#_connectAction_(Reader)}}.
I've restored the method.

URL: http://svn.apache.org/r1650420
Log:
NET-552 SocketTimeoutException connecting a FTP server via an HTTP Proxy

Modified:
    commons/proper/net/trunk/src/changes/changes.xml
    commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTP.java
    commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
    commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPHTTPClient.java

The code will be in snapshot builds from Jan 08 23:39

> SocketTimeoutException connecting a FTP server via an HTTP Proxy
> ----------------------------------------------------------------
>
>                 Key: NET-552
>                 URL: https://issues.apache.org/jira/browse/NET-552
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 3.3
>         Environment: All
>            Reporter: Quentin Devriendt
>              Labels: FTP, HTTP, Proxy, SocketTimeout
>             Fix For: 3.4
>
>         Attachments: ftp.patch
>
>
> Randomly, we're experiencing SocketTimoutException when we connect an FTP via an Http
Proxy :
> {noformat}
> java.io.IOException: Timed out waiting for initial connect reply
> 	at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:403)
> 	at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:931)
> 	at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:925)
> 	at org.apache.commons.net.ftp.FTPHTTPClient.connect(FTPHTTPClient.java:144)
> Caused by: java.net.SocketTimeoutException: Read timed out
> 	at java.net.SocketInputStream.socketRead0(Native Method)
> 	at java.net.SocketInputStream.read(SocketInputStream.java:150)
> 	at java.net.SocketInputStream.read(SocketInputStream.java:121)
> 	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
> 	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
> 	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
> 	at java.io.InputStreamReader.read(InputStreamReader.java:184)
> 	at java.io.BufferedReader.fill(BufferedReader.java:161)
> 	at java.io.BufferedReader.read(BufferedReader.java:182)
> 	at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
> 	at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:315)
> 	at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:295)
> 	at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:397)
> 	... 6 more
> {noformat}
> After analysis, I think the problem is that commons-net opens 2 BufferedReader on the
same InputStream : first in the FTPHTTPClient.tunnelHandshake method, and the second in FTP._connectAction()
method.
> If the first BufferedReader reads all datas in the socket, the second waits until SocketTimeout.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message