View Single Post
Old 04-06-2010, 04:23 PM  
Yil
Too much time...
 
Join Date: May 2005
Posts: 1,194
Default v7.3.1 Changelog

Code:
v7.3.1 Release Notes:

1) Files in \System:
   Changed : ioFTPD.[exe,pdb] - Version 7.3.1.0.
   Added   : ioFTPD-Watch.exe - Version 1.0.0.0.
   Changed : ioFTPD.ini - summary of changes by section...
     [Threads] : Restart_On_Deadlock added.


*** New Features

2) New ioFTPD.ini option (Restart_On_Deadlock under [Threads]).  If this
   is enabled the server will start the child process ioFTPD-Watch.exe and
   signal it when it thinks the server has locked up so it can terminate
   the server since it cannot do it itself when the loader lock has been
   compromised.  When run as a service it can be configured to automatically
   restart.  (The ServiceInstaller.exe tool by default configures it to
   auto-restart provided it hasn't crashed within the last 10 minutes).

3) If the server is preloading directories or running a recursive action
   through a directory tree and the server begins shutting down the operation
   will now abort.


*** Bug Fixes

4) Fixed a bug with resolving relative symbolic links (../foo) where the
   last component of the symbolic directory path was being removed before
   following the link when it shouldn't have been.  The non-symbolic path
   was be updated correctly though.

5) Fixed a bug in "site symlink" introduced when attempting to preserve the
   alternate timestamp / upload speed fields added in v7.2 but referenced the
   wrong fileinfo structure.

6) Fixed a bug in the EXEC module where I wasn't zeroing out the Overlapped
   structure before re-using it.  This would cause it to sometimes generate
   an error.

7) Fixed a bug where an Event handle created in the EXEC module wasn't being
   closed.

8) Fixed a bug in login code that would cause crashes during logout if the
   userfile was unable to be locked during login.  This can only happen if
   using a shared user module and even then it shouldn't happen.

9) Fixed a potential race condition on some bits in a bit field used by the
   data transfer code.  In theory if a transfer is aborted in some situations
   it's possible that 2 threads may be changing 2 different bits but because
   these are bit fields require a read/modify/write sequence they aren't
   atomic operations.  I simply moved the 1 bit that can be set by more than
   1 thread out of the bitfield.


*** Debugging Only Changes:

10) 2 new Error logfile entries to catch problems during logoff that should
   no longer be possible with the bugfix above.
    * Supposedly logged in user missing userfile!
    * Client structure identifies user as logged in but no userfile: %d

11) New Error logfile entry if a userfile cannot be locked.

12) New debug logfile entry if the server attempts to cancel an internal
    async select and it appears that it may have already had activity.

13) New debug logfile entry if the timeout function for connected sockets
    shows a previous error.  Not all errors recorded here are things to
    worry about, some may be valid and will be excluded in later releases.


*** Internal non-visible changes:

14) Moved setting socket to non-lingering after disconnect from the socket
    close routines to right after creation just in case that helps.
Yil is offline   Reply With Quote