I redid the whole source tree last night so I can distribute it in an easy to compile form that includes the tcl/php includes and libraries in the next release. I fixed Idle_Ignore, the directory rename problem, and the permission setting issue with drive root dirs, and a shutdown issue with the timer thread.
I also spent a lot of time the last couple days trying to track down the instability in shutting down. I'm reasonably convinced there is something wrong with the windows socket code. Whether it's the use of it in ioFTPD or the library itself is unknown right now though. If I comment out the closesocket() and WSAcleanup() calls everything is fine. If I leave them in it's dieing very often in one of those two functions. When it somehow makes it past those calls it crashes in the exit code in the windows library itself. There is clearly some form of memory corruption going on (the debug version reports that as the error). I'm going to keep looking into this but tools like Purify aren't finding anything which leads me to believe ioFTPD itself isn't corrupting memory but the actual windows socket library is doing the corrupting. For the record the unhandled exceptions starting with 0x7 are where the various windows dll's are loaded. I'm guessing that if memory corruption is actually taking place via the windows socket library in some cases that's also the cause of the runtime stability issue as users log in/out/etc. Interestingly enough pasv/active connections don't seem to have issues. I've transfered tens of thousands files to get it to crash and couldn't, but try forcing some connections closed during shutdown (or maybe during an idle timeout?) and all hell breaks loose...
|