SocketTools File Transfer Release Notes
Version 7.2.7210.1848
- Corrected a problem with the Localize property that could prevent a file date from being adjusted for the local timezone if the HTTP server was returning the date and time using the GMT timezone.
- Modified the .NET components to return errorProductNotLicensed rather than the more ambiguous errorNotConnected in certain situations where a connection could not be established because the component has not been initialized with a runtime license key or the evaluation license has expired.
- Added the traceProcess option for the TraceFlags property in all .NET components. By default, when the Trace option is used to enable logging, only network events for the current thread are logged. By specifying this option with the TraceFlags property, logging will be performed for the entire process, which is useful for multi-threaded applications that are creating instances of the SocketTools .NET components in worker threads.
- Changed all .NET components to throw an exception if an invalid license key is specified using the RuntimeLicense attribute. This is an alternate method of providing the runtime license key to the components, rather than explicitly calling the Initialize method. This change is designed to assist developers who inadvertently specify an invalid license key and has no effect on applications that use the Initialize method.
- Modified the License Manager utility to expand the display of the runtime license key and added a copy button that will copy the license key to the clipboard so that it can be easily pasted into the application source.
Version 7.2.7210.1845
- Corrected a problem where the file type property may not be set correctly after calling the Connect method. This could result in corrupted files when the file type and the transfer mode did not match.
- Corrected a problem that could cause an invalid file name to be returned when calling GetFileStatus if the server responded to the STAT command with file information in MLST format.
- Added support for FTP file listings using the MLSD command. A new directory format named ftpDirectoryMSLD has been defined, and that value should be used with the DirectoryFormat property in the ActiveX control and .NET component.
- Corrected a problem that could cause .NET applications to throw an exception if the Uninitialize method was called multiple times for any single instance of a class. Typically this was the result of a coding error in the application, however the components now ignore any extraneous calls to uninitialize an instance of a class that has already been uninitialized. Note that disposing of a class instance will destroy that instance and any attempts to re-initialize the class will still result in an exception being thrown.
- Corrected a problem that could prevent a .NET component from establishing a secure connection if the Initialize method was called more than once. This could also result in the class instance throwing an exception if each call to the Initialize method was not matched with a call to the Uninitialize method. All .NET components were modified to gracefully handle situations where the calls to the Initialize and Uninitialize methods were mismatched over the lifetime of the instance, typically as the result of a coding error.
- Corrected a problem where a component would create an empty licensing key under HKEY_CURRENT_USER on end-user systems. This was an issue on some systems where the application was executing with restricted privileges and had limited access to the registry.
- Added SxS (registration free, side-by-side) manifests for the ActiveX controls, they can be found in the "Manifests" folder where SocketTools is installed. For more information on registration-free COM, refer to the MSDN article at http://msdn.microsoft.com/en-us/library/ms973913.aspx
- Removed references to embedded ActiveX objects in the .NET HTML Help, and made some minor revisions to the HTML Help documentation for all libraries and components.
Version 7.2.7200.1824
- Corrected a problem where a component may return a "network not initialized" error when the real problem was an invalid runtime license key.
- Corrected a problem where an ActiveX control would not initialize correctly if the Initialize method was called after another method, rather than being the first method called.
- Corrected a problem in the PostFile method that would cause the file data to be truncated.
- Corrected a problem in .NET components where errorInvalidHandle could be thrown rather than errorOperationNotSupported.
- Corrected a problem in FileTransfer .NET component where setting the Timeout period would not affect HTTP transfers.
- Changed the Initialize method to throw System.ObjectDisposedException if it is called after the the Dispose method, rather than simply failing silently.
- Corrected a problem where the Initialize method would not actually validate a runtime license key if it previously validated a development license on the current system. This would prevent developers from detecting a problem with the license key until they deployed the application to another system.
- Updated .NET components to throw System.IndexOutOfRangeException and System.ArgumentNullException rather than errorInvalidParameter where appropriate for various properties and methods.
- Updated .NET components to handle errors more consistently across all components. Invalid property values should always throw an exception and never fire the OnError event. Methods should only throw exceptions if the ThrowError property is true.
- The HostAddress property in the ActiveX controls and .NET components should always attempt to return the IP address associated with the HostName property if a connection has been established. This is independent of the value of the AutoResolve property.
- Support for The PCT security protocol has been removed from all components. This security protocol has not been widely used, contains several known security vulnerabilities and is not being actively developed by Microsoft.
- Support for TLS 1.1 and TLS 1.2 has been added, this requires Windows 7 or later versions. Clients will automatically negotiate for the highest version of TLS supported by the server. Windows XP and Windows Server 2003 will only support TLS 1.0.
- Added the Compression property to .NET and ActiveX controls to enable or disable HTTP compression.
- Corrected a problem where HTTP text conversion could corrupt compressed data returned by the server.
- Corrected a problem in the File Transfer control where the priority would be ignored for HTTP transfers.
- The control and .NET class will no longer attempt to perform autoproxy discovery unless a proxy is explicitly specified; this can significantly reduce the amount of time required for some connections to complete.
- Added the GetFileList method to return an unparsed file listing in a string buffer and is supported by FTP/FTPS and SFTP.
- Deprecated the FileList method, programs should use GetFileList instead.
- Corrected a problem with the OpenDirectory method when the directory name contained only a wildcard mask.
- Corrected a problem where calling the Cancel method during a file transfer using SSH would cause subsequent method calls to fail with errorOperationCanceled until the connection was closed.
- Updated the documentation to be more consistent across the different editions of SocketTools and corrected many errors and omissions.
Version 7.1.7100.1638
- Corrected a problem where transfer restart byte offsets would be ignored even if the FTP server supported the option and the entire file would be transferred.
- Attempting to append file data when specifying a restart byte offset greater than zero will now return a more meaningful error indicating that the operation is not supported. File transfers that append data are mutually exclusive with restarted file transfers.
- When a connection is initially established with an FTP server, the component will now explicitly send the TYPE I command to specify that the default transfer mode should be binary. Most servers default to binary mode transfers, but this change will ensure that the transfer mode is consistent across all server types and not depend on their configuration to specify the default transfer mode.
- Corrected a problem where the GetFileSize method could return an incorrect error code, indicating that a file does not exist on the server when the file does exist and the user has permission to access it. This would occur if the server rejects the SIZE command because the current file transfer mode is text, not binary. The component will now correctly return an error indicating that the operation is not supported.
- Updated several sections of the documentation.
Version 7.1.7100.1621
- There have been general improvements to network performance and IPv6 compatibility, and several issues have been resolved that were specific to IPv6 support on Windows XP, Windows Server 2003 and Windows Vista.
- Corrected a problem with SFTP connections where an IPv6 connection could not be established under some circumstances. Typically this would occur on systems that were using Toredo tunneling rather than an actual IPv6 network connection.
- Improved how authentication is handled with SSH and SFTP to provide support for servers who only accepted keyboard interactive authentication, where they expected the user to interactively enter a password at the keyboard.
- Corrected a problem with SSH and SFTP that could cause multiple disconnection messages to be sent to the server when the client closed the connection. Most servers would simply ignore the additional messages, but in some cases it would cause problems with specific servers.
- Corrected a problem where attempting to append to a file that did not exist would fail when using SFTP, but not with standard FTP. If an attempt is made to append data to file that does not exist, the control will always attempt to create a new file.
- Improved compatibility with some NAT routers and active mode FTP file transfers that would prevent the server's data connection from being established on a specific range of ports.
- Corrected a problem in the FtpClient .NET class and ActiveX control where setting the Passive property after a connection was established would not change the client into passive or active mode, depending on the changed value.
- Adjusted the internal buffer values used when setting a transfer priority for either FTP or HTTP, and made changes to normalize those values to prevent an unexpected error condition during file transfers. This change should also improve the overall transfer rates for large files over high-speed Internet connections.
- Corrected a problem with the InternetDialer .NET class that could cause a 32-bit application to throw an unhandled exception when the class was initialized on a 64-bit Windows system running under WoW64.
- Corrected a problem that could cause an error message to be displayed when Data Execution Prevention (DEP) was enabled on the platform and an instance of the ActiveX control was created using CreateObject in VBScript or another scripting language.
- There have been general improvements and corrections to the documentation, and corrections to several internal help links that referenced invalid sections of the technical reference.
- The installer will now include a separate copy of redistributable files, and this will include both 32-bit and 64-bit components, even if the installation is being performed on a 32-bit Windows system. 32-bit components are found in the x86 folder, and 64-bit components are found in the x64 folder.
- The Windows 2000 platform is no longer considered a supported platform for SocketTools and all related products. While an application may continue to work under Windows 2000, we can no longer provide technical support for this version of Windows. The minimum supported platform for SocketTools is Windows XP with Service Pack 3 (SP3) installed. Note that Microsoft discontinued support for Windows 2000 and Windows XP SP2 in July, 2010 and those platforms are no longer receiving updates.
Version 7.0.7000.1451
- Corrected a problem where an invalid IP address could be returned for a hostname on a Windows XP system that did not have an IPv6 stack installed and configured. When this error occurred, applications would work correctly on Windows 2000 and Windows 7 systems, but could not establish connections on a Windows XP system.
- Corrected a problem where enabling logging could cause the current thread to discontinue writing to the logfile after a connection was made, and in some cases could cause the application to stop working or become non-responsive.
Version 7.0.7000.1431
- The SocketTools File Transfer products have been combined and now include both the .NET component and ActiveX control. Developers are free to choose the type of component that best meets the needs of their project, and can easily migrate from an application built using the ActiveX control to the .NET platform.
- Includes support for both IPv4 and IPv6 networking protocols. Currently, IPv4 continues to be the most widely used version of the protocol and remains the default used by the controls. An IPv6 connection will only be made if an IPv6 address is specified, or if the domain name for a given host resolves to an IPv6 address. The most significant change an application will need to make is to recognize the new IPv6 address format, and provide enough space to store an IPv6 address, which is larger than an IPv4 address.
- Updated to include support for both 32-bit and 64-bit platforms. The .NET assemblies have been updated to target both x86 and x64 platforms, and both versions of the native interop libraries are included with the installation. Both 32-bit and 64-bit ActiveX controls are also included with the product.
- Updated for full compatibility with Windows 7 SP1 and Windows Server 2008 R2, with improvements in performance and functionality. It is recommended that applications which target these platforms upgrade to the current version.
- Updated the documentation for the version 7.0 release and example projects.