Detailed list of changes:
- 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 buffer.
- FTP: The workaround for legacy FTP servers that don't understand "PBSZ" command was extended to cover sessions explicitly secured using "AUTH SSL" command. It only used to apply to implicitly secured FTP sessions.
- 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.
- Security: Fixed a bug in DSAManaged class that made impossible to use keys of less common sizes.
- FTP (Samples): Fixed a bug in the VB.NET version of PocketFtp sample's platform detection routine.
- FTP (Samples): Many calls to SetTransferType that are now unnecessary were removed.
- Mail (MIME): Fixed a bug that could cause the parser to throw ArgumentNullException if a specifically-malformed Content-Type header was encountered.
The most important is the change in FTP's default transfer mode. In previous versions, the transfer mode used to default ASCII mode in most cases. This turned out not to cause many problems, because ASCII mode is only suitable for text, not for binary data. Even though we always demonstrated the importance of calling Ftp.SetTransferType in our samples and tutorials, users often forget to do this, resulting in data loss. Please be be aware of this change when upgrading to the new build.
Other notable changes include the addition of CheckConnectionState and GetConnectionState methods that make it possible to check whether the FTP session is still active without the need to send any command to the server. This makes it suitable for being called periodically from a GUI application, for example.