Code:
v7.3.0 Release Notes:
IMPORTANT: The way ioFTPD.exe is linked has changed. If you get the following
popup error dialog: "This application has failed to start because
the application configuration is incorrect. Reinstalling the
application may fix this problem." Then you need to install the
Visual Studio 2008 SP1 runtime from MS, see #4 below!
1) Files in \System:
Changed : ioFTPD.[exe,pdb] - Version 7.3.0.0.
Changed : tcl85t.[dll,pdb] - Version 8.5.2.8 (dynamic CRT, dated 3/24/2010)
2) Files in \:
Deleted : README
Added : README.txt
3) Directories in \lib:
Replace entire reg1.2 directory.
Replace entire dde1.3 directory.
*** New Features
4) The TCL dlls and ioFTPD.exe are now linked against the VS2008 SP1 dynamic
CRT/runtime dlls. This means that they need to be installed on your
computer because they are not distributed via a simple file you can drop
into the directory and ioFTPD doesn't have a fancy installer... I think
Win7 and perhaps Vista have these installed by default, but XP I know does
not, although it is possible that another piece of software installed these
for you are part of their setup.
If you run ioFTPD.exe and see the follow message:
This application has failed to start because the application
configuration is incorrect. Reinstalling the application may fix this
problem.
then you don't have them installed. Goto:
http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en
to download vcredist_x86.exe for VS2008 SP1 which is a free download.
You may also see entries in the system event log in the System category
if running ioFTPD as a service or if you somehow aren't seeing the error
message popup. They are under the name 'SideBySide' and look like:
Dependent Assembly Microsoft.VC90.CRT could not be found and Last Error
was The referenced assembly is not installed on your system.
Resolve Partial Assembly failed for Microsoft.VC90.CRT. Reference error
message: The referenced assembly is not installed on your system.
Generate Activation Context failed for c:\ioFTPD\system\ioFTPD.exe...
5) Added a new thread that just updates a variable with the current time every
10 seconds after having called a simple function that internally uses the
loader lock. When the window's internal loader lock gets stuck this should
fail to return and within a minute the process will detect this in another
thread, output a log entry that looks like:
"System detected loader lock compromised! Terminating!"
and then try to terminate the process immediately / ungracefully.
6) When run as a service ioFTPD will now return an error code to the service
control manager if the server was unable to start because of an error
during initialization. This should result in a windows system event being
logged which can help alert you to the problem. The Invalid Function
error (#1) is used if the server doesn't have a more appropriate error
code to return. When run interactively the server will continue to just
pop up a dialog box with the error.
7) To restore compatibility with nxMyDB the exported functions Config_Get,
Config_Get_Int, Config_Get_Bool, Config_Get_Path have the old signature
and only work against the server's configuration file, usually ioFTPD.ini.
Also, I've recorded the list of functions nxMyDB looks up and will try to
keep them the same in the future.
*** Bug Fixes:
8) Fixed a bug where the server would crash if a valid user was logging in
and the userfile lock was unable to be acquired, or if in the process of
being acquired and the user was kicked (via site command or !login). The
later is nearly impossible as local locking cannot fail and is very quick,
however the former may be common when using 3rd party user modules such
as nxMyDB and the DB is offline / lagged.
9) Fixed a bug with hostnames forwarded via the IDNT commmand from BNCs.
If the BNC forwarded the IP address as the hostname the server would treat
it as a reverse resolved hostname and apply the host obscuring rule to it.
Now if the IDNT command sees the host parameter is all numbers it converts
it to an IP address and if it matches the actual IP address portion of the
the IDNT argument it doesn't set the hostname. That emulates the regular
meaning of the hostname field where it is only set upon successful reverse
resolving of the IP address, thus when the server needs to display a
hostname it will default to using the IP address in numeric form and apply
the IP obscuring rule to the result.