-
-
Notifications
You must be signed in to change notification settings - Fork 678
Noop
Certain FTP servers require NOOP commands to be sent periodically to keep the connection alive. FluentFTP supports sending a NOOP command at the specified interval.
- NoopInterval - Time to wait (in milliseconds) between sending NOOP commands to keep the control socket alive during long file transfers. Setting this interval too low will have a negative impact on performance. Setting this interval to 0 disables NOOP commands altogether. Decrease this setting if you are getting timeouts during file transfers. Read the PR notes for suggested values for this property. Default: 15000 (15 seconds).
Currently if you need to reliably use NOOPs, you need to either turn off encryption for best results or try .NET Framework, which will sometimes glitch with v40+.
Also, your experience will vary depending on the server type and its configuration.
Tested against server: Proftpd.
See the full issue for more info.
| Framework | NOOP works? | SSL Buffering | NOOP Responses from Server |
|---|---|---|---|
| NET 4.7 | Yes | Any | 200,200,200,200,200,200,200,200,200,200,200,200,226 |
| NET 4.7 | Yes | Turned off | 200,200,200,200,200,200,200,200,200,200,200,200,226 |
| .NET 6+ | Yes | Any | 226,200,200,200,200,200,200,200,200,200,200,200,200 |
| .NET 6+ | No | Turned off | 200 and then failure because the server is not sending all NOOP responses right away. |
You might want to read:
Essay on NOOP handling of different servers
Essay on Keep Alive Techniques in general (proftpd) (here, read the section on FTP Keep Alive in detail).
A synopsis would be:
Being able to solve problems where your control connection is being dropped because of a too long idle state really depends on many factors. There are a lot of places in between the client and server where this can happen, it can happen on the server too.
The servers configuration might discourage keep alives, depending on its configuration.
The way a server reacts to keep alive tests (such as NOOP) will differ not only by its configuration - different servers are programmed differently.
Last but not least, we see different behaviour on the client side, depending on encryption, ssl protocol and the underlying .NET frameworks.
- Auto Connection
- Auto Reconnection
- FTP(S) Connection
- FTP(S) Connection using GnuTLS
- FTPS Proxies
- Custom Servers
- Custom Commands
- v40 Migration Guide