On 17 October 2017 at 12:34, Basin Ilya <basini...@gmail.com> wrote:
> Hi.
> I'm using
> FTPClient.retrieveFileStream()
>
> and therefore I need to implement keepalive mechanism by my own.

Not necessarily.

The FTP server does not need the NOOPs.
They are only needed to deal with routers that detect the inactive
control channel and decide to drop the connection even though the data
channel is active.

> I wanted to mimic the implementation from FTPClient.CSL, but then I thought:
>
> Most FTP servers don't reply to NOOPs until transmission has finished and 
> yet, sending NOOPs helps to keep them alive.

No, the FTP servers don't need the NOOPs.
And some do reply before data transmission completes.

> So we can safely assume that no FTP servers support this and let 
> CSL.cleanUp() collect all the responses at the end.

No, because some FTP servers *do* support asynchronous control channels.

> My tests show vsftpd 2.2.2 does not support that and you can send up to 27000 
> NOOP commands to it until the socket write gets blocked.
>
> On the other hand, on most FTP servers for each NOOP keepalive FTPClient 
> waits for 1000 milliseconds for a reply that never comes. This slows things 
> down a little.
>
> What bad thing will happen, if we remove __getReplyNoReport() from 
> FTP.__noop() and increment notAcked unconditionally?

Try it and see?

> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to