[
https://issues.apache.org/jira/browse/NET-552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14267821#comment-14267821
]
Sebb commented on NET-552:
--------------------------
Only just got around to looking at the patch.
Although it applies cleanly, the code does not compile.
There appears to be some text missing in the FTPClient part of the patch.
Is there supposed to be a closing brace between the following?
{code}
super._connectAction_(); // sets up _input_ and _output_
{code}
and
{code}
public void _connectAction_(Reader socketIsReader) throws IOException {
{code}
Also, why is the above method public rather than protected?
> 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
> Attachments: FtpOverHttpProxy.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)