At 06:57 AM 9/20/2009, Jorge Bastos wrote:
Is it possible to configure ProFTPD to use keep alive commands such as
I use the FileZilla client (as almost everyone I believe), and I have it
configured to issue NOOP to the server to keep the session alive, but
with ProFTPD doesn’t work.
Is this possible/configurable?
I've had to make sure that I didn't set a _combination_ of timeout rules
that would do the wrong thing. Check all the different timeout
settings, including defaults, to see if they might interfere with each
I went back and looked at TimeoutIdle :
The TimeoutIdle directive configures the
maximum number of seconds that
proftpd will allow clients to stay
connected without receiving any data on
either the control or data connection. If
data is received on either connection,
the idle timer is reset.
Since that description mentions the "control channel", and
commands come in on that channel, I'd always thought that commands like
'NOOP' would reset that timer. And it works for me. Here's an
cpe-97-134-109-23.wi.res.rr.com UNKNOWN bird99 [04/Sep/2009:
: : : : :
: : : : :
30180 18.104.22.168 cpe-97-134-109-23.wi.res.rr.com
UNKNOWN budgftp [04/Sep/2009:
bird99" 331 -
(hidden)" 230 -
Pid 29880 is an existing FTP session that has been "doing
stuff". We can see the last 'real' activity at 09:11:33.
After that the session sends a 'NOOP' every minute to keep the session
alive. But that session dies at ~ 09:43. Why? Because I
set the TimeoutNoTransfer to 1900, or 31.6 minutes. So the session
didn't die because of 'idle' timeout, but because of another
timeout. The 'NOOP's were working.
Here's the timeouts I use:
# Set timeouts longer than defaults for NoTransfer
# These values apply to both primary and virtual
300 # default 300
1900 # default 300
1830 # default 600
3600 # default 3600
(Some of the times are so long because of old network problems - it
was usually "our fault", not the outside network's
Note that the timeouts can override each other. If there hasn't
been a data transfer in over 31 minutes, it won't matter what commands
are sent. The session will be dropped because of "no
transfers". And notice that the default for TimeoutNoTransfer
is just 5 minutes.
Could the interaction between the different timeout settings be confusing
you? Try setting all the others explicitly to 0 ('off') and test
just TimeoutIdle by itself?