Tuff is right on this one. Whole file CRC is available now. I searched the code for references to the CRC function and dismissed where it was occurring because it's queued to the encryption thread. Silly me. Have I mentioned that nothing is documented with purpose, argument options, or return values?
Two other TRIVIAL to implement (I've already figured out where/how) ideas for feedback:
1) A universal pre/post event. Thus you could capture and/or approve every command before command specific events are run or the command itself. Primarily I wanted something like this a long time ago so I could compute real idle times but now I view this as an essential logging tool for debugging purposes. I was thinking of just duplicating everything being sent to the client to various logfiles and that might still be a good idea because it's more detailed, but this would be pretty powerful and easy to do and doesn't preclude full logging later on.
OnPreEvent =
OnPostEvent =
2) A configurable idle timer: instead of any successful command updating the idle time you can choose to ignore some...
Idle_Ignore = NOOP CWD PWD LIST NLST STAT PASV
This simple change seems pretty useful and would allow the idle timer to kick off anyone who doesn't actually download/upload a file or do something else constructive. It would definitely defeat most anti-idle FTP client logic and being configurable can adapt as needed.
Tuff: One quick question on that lockup issue. Were you sending NOOPs or something else every few minutes or did you just have a really long idle timeout set? I've had Flash with NOOPs ever minute stay connected for long periods of time just fine while testing, but haven't tried a long timeout without sending anything. And are you talking 30 minutes, 12 hours, or 5 days?
|