Rebex FTP for .NET Release History
2010-07-20 Version 3.0.3854.0 #
- FTP: Ftp class inherits from NetworkSession base class that implements some common properties.
- FTP: Added a workaround for an FTP server with broken MLST output.
- FTP: SITE command is no longer used to detect MS IIS FTP 7.x because it caused problems to some firewalls.
- FTP: FtpList.GetEnumerator is now an implementation of IEnumerable<FtpItem>.
- FTP: Better error handling in GetFiles/PutFiles methods.
2010-05-20 Version 3.0.3793.0 #
- FTP: A more meaningful exception is raised when a premature OK response is received while still uploading data.
- FTP: Information about invalid data IP address detection is now written to the log.
- FTP: Fixed a bug that caused "/" local path argument of PutFiles/GetFiles methods to be treated as current directory.
- FTP: More information is logged when a FTP connection is broken.
- FTP: A full local path is passed in FtpBatchTransferProgressEventArgs.
- FTP: Added experimental FtpOptions.UseLargeBuffers to use larger internal buffers (doesn't seem to make substantial difference on most systems).
- FTP: Fixed a bug in PRET command implementation that caused problems with DrFTPd servers.
- FTP: FtpTransferProgressEventArgs now contain RemotePath and LocalPath when available.
- FTP: FtpBatchTransferException is now serializable.
- FTP: On .NET Compact Framework, SO_LINGER option is enabled for data sockets.
2010-03-11 Version 3.0.3723.0 #
- FTP: Maximum allowed UploadBufferLength changed from 64KB to 16MB.
- FTP: Ftp.Connect method no longer throws UriFormatException when invalid proxy hostname is specified.
- FTP: Added support for OTC S/KEY(tm) (One-Time Password System) authentication according to RFC 2289 (optionally used by Serv-U FTP Server). (S/KEY is a trademark of Bellcore.)
- FTP: Added FtpBatchTransferOptions.XCopy batch transfer mode. This is an alternative form of FtpBatchTransferOptions.Recursive that traverses all subdirectories but only transfers files that match the specified mask.
- FTP: New Ftp.DataAddress property to make it possible to specify active mode IP address transmitted to the FTP server.
- FTP: FtpTransferProgressEventArgs.BytesPerSecond property added that contains the estimated current speed.
- FTP: HierarchyRetrieve events are no longer raised when only a single file is transferred.
- FTP: A more meaningful exception is thrown when a directory path is passed to Ftp.GetFile method instead of file path.
- FTP: Ftp.TransferProgress event is called less often on high-speed connections now (several times per second is sufficient).
- FTP: FtpOptions.SendDataAsynchronously is deprecated and ignored.
- FTP: Fixed PutFiles method to accept all kinds of root paths (such as "c:", "c:/", or "c:\" - previously, only "c:\." worked).
- ProxySocket: The underscore character is now allowed in hostnames (this is non-standard, but used by Windows).
- ProxySocket: FileLogWriter is capable of logging into a single file from multiple applications now.
- ProxySocket: ProxySocket.Send behavior changed to always send all the data or fail.
2009-10-27 Version 3.0.3588.0 #
- FTP: Added a workaround for bad PASV implementation at ftp-edi.pubnet.org.
- FTP: Enhanced MODE Z support.
- FTP: CCC command no longer actively sends close_notify TLS message by default.
- FTP: Fixed a bug in proxy code that caused data transfers to fail when using HTTP CONNECT proxy with NTLM authentication.
- FTP: Added FtpOptions.ConnectPassiveLater option - makes the passive mode transfer initialize the connection only after the LIST/NLST/RETR/STOR commands are sent (instead of after PASV).
- ProxySocket: Proxy object now has Encoding property that makes it possible to specify character set to be used for parsing server responses.
- ProxySocket: ProxySocketException.ErrorCode property now returns HTTP and Socket4/Socks5 error codes when available.
- ProxySocket: SspiAuthentication and GssApiProvider classes added that provide GSSAPI/SSPI functionality.
2009-07-13 Version 3.0.3479.0 #
- FTP: Added automated UTF-8 detection on modern FTP servers.
- FTP: Listing parser enhanced to support some non-English month names that sometimes occur in file listings of broken servers.
- FTP: Fixed a bug that might cause an active FTP connection to immediately time out when executed on an existing but idle connection.
- FTP: IEnumerable<T> support added to collections for .NET 2.0 and higher.
- FTP: Ftp.CopyToAnotherServer method can now handle Abort requests.
- FTP: Bandwidth throttling functionality slowed down the transfer too much when a limited but high speed was requested.
2009-05-20 Version 3.0.3428.0 #
- FTP: Fixed a bug in GetRemoteChecksum method that caused it not to work for filenames that contain space characters.
- FTP: Disposing Ftp object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- FTP: Better URL handling in the Connect method (although it is hostname-only by design, lot of users actually pass URLs to it).
- FTP: Enhanced logging of incoming connection in active mode.
- FTP: Added a workaround for WS_FTP that requires MLST/MLSD arguments to be quoted if they contain spaces.
- FTP: Added FtpException.Transferred property as a replacement for the misspelled FtpException.Transfered property.
- FTP: Fixed a bug that caused FtpException's BytesTransferred property not to be set for exceptions thrown by asynchronous methods.
- FTP: Fixed a bug in MODE B transfer mode that might cause an improper block length to be received in rare circumstances.
- FTP: Fixed a bug in GetFiles and PutFiles method that caused a wrong path to be used when a filename only was specified or when a root path was specified.
2009-02-19 Version 3.0.3333.0 #
- FTP: Asynchronous operations now use a thread pool.
- FTP: FileExists and DirectoryExists methods modified to return the result for "." and "/" arguments instantly without asking the server.
- FTP: Fixed a workaround for problem with local IP address announced by the server when connecting through ActiveSync to an FTP server that runs on the same machine.
- FTP: KeepAliveDuringTransfer option made compatible with more FTP servers.
- ProxySocket: Fixed a bug in Socks4/Socks5 proxy code that made it impossible to use FTP in active mode with these proxies.
2009-01-14 Version 3.0.3300.0 #
- FTP: Added PutFiles and GetFiles method to make it possible to transfer multiple files easily by transfering a whole directory tree or use wildcards.
- FTP: Packages for .NET Compact Framework 3.5 added.
- FTP: Transfer compression support added to .NET CF 3.5 build (it has only been available for .NET 2.0 and higher previously).
- FTP: Added enhanced logging capabilities.
- FTP: Added a workaround for Serv-U FTP that ungracefully closes data connection for zero-length files.
- FTP: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
- FTP: Substantial transfer speed increase on fast networks.
- FTP: Fixed a bug that caused the KeepAliveDuringTransfer option not to work properly.
- FTP: Asynchronous method threads are now named.
- FTP: Added a workaround for misconfigured FTP servers that send an unusable private network address when initializing a data transfer.
- FTP: Disabled control connection flushing when sending commands because it caused a noticeable slowdown on fast networks.
- FTP: FtpOptions.KeepAliveDuringTransfer option code enhanced by adding the '200 No-operation ...' response to the list of possible NOOP command responses.
- FTP: SetTransferType method changed to behave just like TransferType property and marked obsolete.
2008-07-24 Version 2.5.3127.0 #
- FTP: Fixed a bug introduced in the last release that caused a bad InvalidOperationException to be thrown when FTP server reported an error during upload.
2008-06-14 Version 2.5.3087.0
#
- FTP: Finished property added to FtpTranferProgressEventArgs class.
- FTP: New variants of GetDownloadStream and GetUploadStream added.
- FTP: New tutorial for file transfer resume functionality.
- FTP: Added detection for SFTP and SSH servers that are often mistaken forh SFTP to produce better exception messages. FTP servers in wrong modes are also detected.
- FTP: Fixed a bug that caused the DoNotDetectFeatures option to fail.
- FTP: Added hostname validity checking to Connect method.
- ProxySocket: New ISocket interface to make it possible to easily implement custom transport layers.
- ProxySocket: Fixed an unhandled exception that occured during a failed connection to a proxy specified by an IP address.
2007-12-06 Version 2.5.2896.0
#
- All: Packages for .NET 3.5 and Visual Studio 2008 now available.
- FTP: Added support for IBM 4690 file and directory listing format.
- FTP: Fixed several bugs in MODE Z (compressed transfers) code.
- FTP: Fixed several bugs in MODE B (block transfer) code.
- FTP: Fixed a bug that caused an invalid exception to be raised on specific type of transfer failures.
2007-11-11 Version 2.5.2871.0
#
- FTP: Support for MODE B (block mode) with MS FTP7 that makes it possible to re-use a single data connection for multiple transfers.
- FTP: Experimental support for MODE Z (data transfer compression) added to .NET 2.0 build.
- FTP: Support for HOST command (multiple virtual FTP hosts on a single IP address). (Disabled by default).
2007-08-30 Version 2.5.2800.0
#
- FTP: Added Bandwidth throttling support - MaxUploadSpeed and MaxDownloadSpeed properties.
- FTP: Added CRC32, MD5 and SHA-1 checksum support - GetSupportedChecksums, CalculateLocalChecksum (static) and GetChecksum methods.
- FTP: GetCurrentDirectory enhanced to support another non-standard reply format.
- FTP: Added FtpOptions.EnableMultipleBlockingCalls option to change the way multiple concurrent calls are handled.
2007-05-24 Version 2.5.2700.0
#
- FTP: Added support for direct server-to-server transfers, also known as FXP! Check out the new CopyToAnotherServer method.
- FTP: Added ListItemReceived event. This makes it possible to display the list items as they are received, to filter them or to abort the transfer based on previously received items.
- FTP: NameList added to FtpListingType.
- FTP: SetTransferType/BeginSetTransferType/EndSetTransferType methods were marked as obsolete. Please use the TransferType property instead.
- FTP: Added support for DrFTPD's PRET command.
2007-04-20 Version 2.3.2666.0
#
- FTP: Added SetFileDateTime method.
- FTP: Added FileExists and DirectoryExists methods. These simple operations are very hard to achieve using the FTP protocol and we use a combination of several commands to achieve the desired functionality.
- FTP: Added DataPortRange property to specify local data port range for active and passive mode transfers.
- FTP: GetFile/PutFile methods refactored to use the same infrastructure as GetDownloadStream/GetUploadStream methods.
- FTP: GetList method optimized to parse the list on-the-fly, resulting in enhanced speed.
- FTP: Removed unnecessary control channel checking code that caused a noticable slowdown of data transfers.
- FTP: Fixed a bug in MLSD list parser - date/time was treated as local time.
- FTP: In active mode, when waiting for the server to connect, error response is now processed as soon as it arrives, without waiting for the connection attempt to time out.
- FTP: GetConnectionState no longer fails on disconnected objects.
2007-03-06 Version 2.0.2621.0
- FTP: IPv6 support with .NET Framework 1.1/2.0/3.0 and .NET Compact Framework 2.0.
- FTP: Enhanced handling of uploads terminated by the server. More meaningful exceptions are now reported.
- FTP: Compatibility enhancements in download aborting code.
- FTP: Fixed a bug that caused the Close method of the Stream returned by GetDownloadStream to fail with some servers on fast networks.
- FTP: Fixed a minor bug in FtpResponse class.
- Samples: WinFormClient is now Vista-compatible.
2007-01-11 Version 2.0.2567.0
- FTP: Fixed a bug in the Close method of the stream returned by GetUploadStream and GetDownloadStream method.
2006-12-12 Version 2.0.2537.0
-
FTP: Fixed bad ArgumentExceptions in Ftp.Connect and FtpList.GetFiles methods.
2006-11-27 Version 2.0.2522.0
-
FTP: GetUploadStream/GetDownloadStream methods optimized. They no longer use a background thread and should be faster and more reliable.
2006-10-18 Version 2.0.2482.0
-
FTP: Default transfer mode is now binary.
-
FTP: Added setter to TransferType property, making SetTransferType method obsolete.
-
FTP: Added CheckConnectionState/GetConnectionState methods to check the state of the connection without sending any command to the server.
-
FTP: MLSD file and directory listing parser is now able to parse legacy mlst-05 style listings.
-
FTP: Added UploadBufferLength property to manipulate the size of the upload bufffer.
-
FTP: Added a workaround to the CF version for a transfer problem that often occurs when using ActiveSync to connected to a FTP server running on the same machine as ActiveSync. This makes the IgnorePassiveModeAddress option unnecessary in these cases.
-
Samples: Fixed a bug in the VB.NET version of PocketFtp sample's platform detection routine.
-
Samples: Many calls to SetTransferType that are now unnecessary were removed.
2006-09-15 Version 2.0.2449.0
-
Samples: Fixed a bug in the VB.NET version of WinFormGet sample that made it fail in .NET 2.0.
2006-09-05 Version 2.0.2439.0
-
ProxySocket: Added support for NTLM authentication through HTTP CONNECT proxies.
2006-08-25 Version 2.0.2428.0
- FTP: Fixed a bug that made the VMS file and directory listing parser fail in rare circumstances.
- FTP: Added IgnorePassiveModeAddress option as a workaround for FTP servers or firewalls that instruct the client to connect to an unaccessible IP address when initializing passive mode data connection.
2006-07-10 Version 2.0.2382.0
- FTP: File and directory listings parser was optimized, it is now much faster.
- FTP: SupportedExtensions and EnabledExtensions added to make it possible to determine and enable/disable FTP protocol extensions.
- FTP: Support for MLSD file and directory listings added. GetList now uses this as default on servers that support this extension.
- FTP: The LF character is now treated as an end-of-line marker, just like CRLF sequence, to enable Rebex FTP to work with buggy servers that send LF instead of CRLF.
- ProxySocket: Fixed a bug that caused the proxy password to be ignored (since build 2305).
2006-06-12 Version 2.0.2354.0
- FTP: Server feature detection added (the FEAT command). Can be disabled using DoNotDetectFeatures option for complete compatibility with previous versions.
2006-04-24 Version 2.0.2305.0
- Version numbering scheme changed.
- FTP: DefaultPort constant with a value of 21 added to Ftp class.
- FTP: Custom directory list parser is now allowed to set the FtpItem to null, which
causes the line not to be parsed.
- FTP: Internal asynchronous methods framework upgraded to the latest version.
- FTP: Several missing connection state checks added.
- FTP: Most ArgumentExceptions enhanced and some missing added.
- FTP: Overall code beautification.
- FTP: Added TimeoutAsynchronousMethods option to make asynchronous methods optionally
time out in the same way the synchronous methods do. (By default, only synchronous
methods time out.)
- FTP: Size of sent blocks in .NET Compact Framework changed to 1460, which seems
to be more compatible.
- Samples: ResumableClient sample added to Compact Framework version.
- Samples: WinCeClient sample merged into the PocketFtp sample.
- Samples: Numerous enhancements and fixes.
2005-11-14 Version 2.0.0.10
- FTP: FtpException is now based on Exception instead of InvalidOperationException.
- FTP: FtpList is now serializable.
- FTP: Fixed a bug that caused the PutUniqueFile method to throw an exception.
- FTP: Added several COM-interop related attributes to some classes to allow basic
FTP functionality to be used through COM.
- FTP: Disconnect method changed to not throw an exception unless another operation
is in progress to reflect the way most people use this method.
- FTP: Added KeepAliveDuringTransferInterval property to allow specifying the interval
for KeepAliveDuringTransfer option.
- FTP: Behavior of Begin.../End... methods changed so that a call to End... is required
after an end of the operation prior to additional calls to Begin... methods.
- FTP: Ftp properties LocalEndPoint
and RemoreEndPoint now LocalEndPoint and RemoreEndPoint now throw InvalidOperationException
when not connected.
- FTP: Added SendDataAsynchronously option to upload data using BeginSend/EndSend
instead of Send to deal with hanging Send on some Windows Mobile devices.
- FTP: The component and samples support .NET 2.0 and Visual Studio .NET 2005.
2005-07-29 Version 2.0.0.9
- Component: Enhancements in unix file list parser to support more variants of
unix file listings.
- Component: Added KeepAliveDuringTransfer option to deal with buggy firewalls that
have a habit of terminating idle control connection during long file transfers.
- Component: FtpWebRequest.GetResponse now returns an empty response for FTP upload
instead of throwing an exception.
- Component: Compact Framework FTP running on full .NET now sends TCP signals with
ABOR command during transfer.
- Component: Removed workaround for ActiveSync (prior to build 4034) bug from the
CF version that made it impossible to close data connections successfully.
- Component: Changes to enable C# 2.0 compilation with no warnings.
- Component: Trial version for .NET Compact Framework now works with .NET CF 2.0.
- Component: Exception handling code in several places cleaned a bit. Other minor
changes. Few lines of unnecessary code removed.
- Component: "Cannot change state" exception messages modified to be more understandable.
- Component: Fixed a bug that caused the component not to detect closed control connection
in some cases.
- Component: Asynchronous method framework enhanced to allow null arguments to be
passed to asynchronous Ftp methods.
- Component: FtpException, ProxySocketException, FtpProxy, FtpItem and FtpList classes
are serializable.
- Documentation: Various small corrections.
2004-11-10 Version 2.0.0.7
- Component: Fixed a bug that caused Timeout exception to be thrown instead of OperationAborted
exception in special circumstances.
- Component: Fixed a bug in Socks5 authentication code (incorrect version in authentication
messages).
- Component: List parser understands a rare variant of Unix directory listing with
interchanged month and day parts.
- Component: Ftp.Disconnect method always closes the connection, even if the object
is not in ready state.
- Documentation: Description of FtpTransferProgressEventArgs properties clarified.
2004-09-23 Version 2.0.0.6
- Component: Fixed a bug that caused the component to remain in a wrong state when
disconnected by the server.
- Documentation: Description of GetRawList method clarified a bit.
2004-09-01 Version 2.0.0.5
- Component: Underlying locking/unlocking/async/aborting code fixed to get rid of
"Another operation is pending" exception after timeouts.
- Component: Abort method can be called at any time, even inside callbacks.
- Component: ChangeDirectory accepts an empty path.
- Component: Fixed a bug in ProxySocket's Accept method that could cause active mode
transfers to hang under rare circumstances with some servers.
- Component: Lots of minor changes in the code.
- Component: Assemblies have been marked as CLS-compliant.
- Documentation: Several corrections in the reference.
2004-04-02 Version 2.0.0.4
- Component: Added a new override for Ftp.GetList method to allow arguments.
- Component: Added a new property BytesSinceLastEvent to TransferProgress event. It
contains the number of bytes transfered since the last call.
- Component: Enhancements in file transfer routines, allowing higher transfer rate
on high-speed connections.
- Component: Description of PutFile and GetFile methods clarified.
- Component: GetAddressLong and GetAddressBytes methods added to ProxySocket class
to overcome differences between .NET 1.0 and 1.1.
- Component: All references to obsolete IPAddress.Address in Socks4/Socks5 and FTP
code replaced either with calls to ProxySocket.GetAddressLong or ProxySocket.GetAddressBytes.
- Component: All references to DateTime.Now.Ticks replaced by more appropriate Environment.TickCount.
- Component: Logoff method was renamed to Reinitialize and a new empty Logoff method
was added to solve the confusion it caused.
- Component: Fixed a bug that caused TransferProgress event not to be raised with
FtpTransferState.None when the transfer is finished.
- Component: Lots of changes and improvements to the proxy code.
- Component: Fixed problems in trial version key check on PocketPC 2003 emulator.
- Documentation: A number of corrections in the reference. Description of Timeout
property clarified.
2003-11-24 Version 2.0.0.3
- Component: Fixed a bug that caused trial version not to work in ASP.NET with impersonation
enabled.
- Component: Enhancement in Available property of the ProxySocket class.
2003-11-07 Version 2.0.0.1
- Component: New overloads for Sort method added to FtpList.
- Component: Corrected the Version property of the Ftp class that returned wrong version
number.
- Component: No IP addresses are resolved using DNS now.
- Component: Fixed a bug in synchronous methods of the ProxySocket that caused them
to hang.
2003-11-01 Version 2.0.0.0
- Component: Assembly divided into two parts: FTP and Proxy Socket.
- Component: Tested with Mono 0.28.
- Component: Event handlers can now also be used for FtpWebRequest.
- Component: Fixed a bug that could cause a file transfer to fail with some servers
and hang under certain circumstances.
- Component: Fixed a bug in FTP stream code that caused an exception to be thrown
if the transfer was too fast.
- Component: More characters are now allowed in remote paths (better interoperability
with VMS).
- Component: Fixed a bug that caused Ftp class to become unusable if unable to open
a local file during asynchronous PutFile or GetFile.
- Component: Few missing error messages fixed.
- Component: Minor fixes in FtpProxy class.
- Component: Server compatibility enhancements in data transfer and aborting code.
- Component: Lots of other fixes and enhancements in FTP code and proxy code.
2003-09-01 Version 1.3.0.1
- Component: New overloads for GetNameList and GetRawList methods added.
2003-08-28 Version 1.3.0.0
- Component: Many enhancements in the underlying proxy code.
- Component: Abort command is more reliable.
- Component: Large number of smaller cosmetic changes in the code.
- Component: Changes towards better portability.
2003-08-20 Version 1.2.2.0
- Component: Fixed a bug in HttpConnect proxy code that caused the beginning of the
data stream to be discarded under certain circumstances.
2003-08-14 Version 1.2.1.0
- Component: Fixed a bug that caused timeout with Microsoft ISA server (Socks4a +
active mode only).
- Component: Fixed a misspelled error id (Socked.Timeout instead of Socket.Timeout)
in proxy code. It caused the misspelled id to be used as an exception message instead
of the real description.
- Component: Compatibility enhancements of Abort code - now compatible with
GlobalScape FTP Server.
2003-08-12 Version 1.2.0.0
- Component: Minor bug fixed in EPLF list parser (invalid handling of dates > 2038).
- Component: Fixed a bug that caused an unexpected exception to be thrown when calling
Ftp.Connect with an empty hostname.
- Documentation: Ftp.Logoff method documentation enhanced.
- Samples: New sample - WinFormGet (asynchronous downloader - C# and VB.NET).
- Samples: Several enhancements and bugfixes of WinFormClient and ConsoleClient code
samples.
- Samples: VB.NET version of WinFormClient and ConsoleClient code samples.
2003-07-03 Version 1.1.0.0
- Component: Server compatibility enhancements in file transfer aborting code. (There
were problems with WarFTPd and some older versions of Serv-U.)
- Component: Ftp.Disconnect method now does not throw exception if an error is encountered.
- Component: Fixed a bug in Unix list parser that caused an exception while parsing
ftp://ftp.netscape.com/dev/.
- Component: Fixed a bug in Socks4/Socks5 proxy code that caused an exception to be
thrown for some IP addresses.
- Component: Removed few lines of unused code in HTTP proxy code.
- Component: Default character encoding is now Encoding.Default instead of Encoding.ASCII.
- Documentation: Minor enhancements in FtpException documentation.
- Samples: Several bugfixes in WinFormClient sample.
- Samples: ConsoleClient code sample now supports resuming aborted transfers
and uploading directory trees.
2003-04-14 Version 1.0.0.0