SocketTools Library Edition 10.0.1238.1806

Released: Jun 23, 2020

Updates in 10.0.1238.1806

Features

  • Added support for TLS session reuse for secure FTP connections. This option should only be used with servers that explicitly require it and is only supported on Windows 8.1 and Windows 2012 R2 and later platforms. Note this option will not work with servers compiled using OpenSSL 1.0.2 or earlier because they don’t support EMS (extended master secret) which is required by Schannel.
  • Expanded support for additional character sets in the MIME API and SocketTools.MailMessage components. This update improves support for 8-bit character sets for languages which do not primarily use Latin characters, such as Japanese, Korean, Chinese, Arabic, Hebrew and Russian.
  • The WebLocation API and components have been changed to prefer using IPv6 addresses when detecting the current location because they tend to provide more accurate information than IPv4 addresses. If the local system does not have IPv6 configured, the API will revert back to using the system’s IPv4 address to determine the location.
  • Expanded support for certain character sets identified as Windows code pages, such as windows-1250. They will now be properly converted to Unicode using their specific code page, rather than attempting to process the text as using an ISO character set.
  • The default encoding for all character sets is now Base64 for UTF-8 and most other character sets. Quoted-printable encoding is only used by default for messages which do not use Unicode or extended ANSI characters.
  • Exported the MimeLocalizeText helper function from the MIME API. This function is used internally to assist with localizing UTF-8 text, and has been made available to developers using the Library Edition for projects using a multi-byte character set instead of Unicode.
  • Added the MimeDecodeTextEx and MimeEncodeTextEx functions to the Library Edition which enables the caller to specify the character set that was used to originally encode the text. The DecodeText and EncodeText methods were added to the MailMessage .NET class and ActiveX control.
  • Added the options FTP_OPTION_HIRES_TIMER and HTTP_OPTION_HIRES_TIMER to return transfer times in milliseconds rather than seconds. This can be useful when calculating transfer speeds of relatively small amounts of data over fast networks.
  • When checking if a data is available to read, the amount of time spent waiting for network activity using the default timeout period has been reduced from 250ms to 15ms.
  • The options to select IPv6 connections have been renamed to reflect what the option actually does. For the Library Edition, these options were named OPTION_IPV6ONLY and have been renamed to OPTION_PREFER_IPV6. Similar options exist for the .NET classes and ActiveX controls. When these options are used, the library or component will prioritize establishing a connection using IPv6, but will fall back to using IPv4 if no IPv6 address is available or IPv6 is not enabled on the local system.

Fixes

  • Corrected an issue with the C++ MailMessage class where new messages would be created using UTF-8 encoding, but would export the message as though it was using ASCII text.
  • Corrected an issue where the Windows-1252 character set was not distinguished from the ISO-8859-1 character set. Although these character sets are similar, there are subtle differences that can affect how message contents are parsed.
  • Corrected an issue with the SocketTools.MailMessage .NET class which would cause properties such as From, To and Subject to return incorrect values when certain character encodings were used.
  • Corrected an issue which would prevent the MIME parser from correctly processing message headers which used multiple encoding methods or different character sets within the same header value.
  • Corrected an issue that could cause an internal buffer overrun when decoding UTF-8 encoded text which used certain Unicode characters.
  • Corrected an documentation issue where the MimeDecodeText and MimeEncodeText functions in the library were exported and prototyped, but not included in the technical reference.