SocketTools 10 Release Notes
SocketTools 10 reached end-of-support on August 31, 2023. No further updates will be available for this version of SocketTools. For continued support and future updates, including support for .NET 8.0 and the latest release of Windows 11, you will need to upgrade your development license. Please contact our sales team if you have any questions about upgrading to the current version of SocketTools.
Version 10.0.1468.2520 (25 Aug 2023)
- Corrected an issue which could cause an error to be returned when getting or setting a HTTP content type.
- Corrected an issue which could prevent a chunked HTTP response from being processed correctly when a resource was redirected.
- Corrected an issue which could cause a request payload to become corrupted when a resource is redirected to another domain.
- Corrected an issue where WebEnumApplications and related functions were not exported correctly and could result in unexpected behavior.
- Corrected an issue which could cause a server application to be flooded with error events if a client performed a hard close on their connection.
- Corrected an issue with the .NET server classes which could result in an exception being thrown when multiple clients simultaneously disconnected from the server.
- Additional parameter checks are performed when initializing SocketTools components to prevent a situation where a valid runtime license may not be accepted.
- Corrected an issue which could result in an undefined error in the client when a TLS handshake failed.
- Corrected an issue which could prevent a client session from being released until all sessions in other threads have disconnected.
- Corrected an issue which could cause nameserver queries to fail with certain internationalized domain names.
- Corrected an issue which could result in a rare deadlock condition when creating simultaneous secure client connections.
- Corrected an issue which could cause memory corruption when attempting to convert specific invalid UTF-8 encoded strings.
- Corrected an issue with the MIME components which could prevent base64 encoded content from being decoded correctly
- Corrected an issue with the MIME components which mapped certain Japanese, Korean and Chinese character sets to the wrong code page
- Improved the handling of malformed MIME messages which contain invalid header blocks or a malformed multipart structure.
- Corrected an issue with the IMAP components which prevented encoded UTF-7 folder names from being converted to Unicode
- Corrected an issue with the FTP and HTTP server components which could prevent files using UTF-8 encoded names from being transferred
- Corrected an issue with the FTP server component which caused the PWD command to not return a complete UTF-8 encoded path
- Corrected an issue with the FTP server component which would allow a Unicode path to be created but not deleted
- Corrected an issue which could cause the SocketTools server components to stop accepting connections and potentially throw an exception.
- Corrected an issue which could result in a memory leak when converting certain UTF-8 sequences to UTF-16 Unicode.
- Corrected a rare deadlock condition with the FTP and HTTP server components when updating internal client session data.
- Modified the FTP and HTTP server components to permit usernames and passwords using Unicode characters
- Modified the FTP server components to allow an atsign (@) in a username
- Modified quoted-printable decoding to be less strict when encoded sequences are incorrectly split across multiple lines
- Removed support for deprecated Diffie-Hellman group exchange algorithms which could prevent a client from establishing a SSH 2.0 connection.
- Default security protocol and cipher suite selection for all secure connections have been updated.
- Updated .NET components to use the current .NET 6.0 release SDK.
- Improved the Library Edition function declarations for several languages.
- Updated the C++ include file to address compilation warnings when building a project using Microsoft Foundation Classes (MFC).
- Minor updates and improvements to the HTML Help and PDF documentation.
Version 10.0.1430.2348 (07 Sep 2022)
- Corrected an issue with the FTP client components which could result in a memory leak when returning a large list of files in a folder.
- Corrected an issue with the FTP client and server components which could cause UTF-8 encoded file names to be incorrectly converted to the local ANSI code page.
- Corrected an issue with the HTTP client components which could result in memory corruption when there are multiple redirects to a resource.
- Corrected an issue with the HTTP client components which could prevent an error payload from being returned when requested.
- Corrected an issue with the FTP, HTTP and TCP server components which could result in a memory leak if the network connection failed unexpectedly.
- Corrected an issue which could cause POP3 and IMAP4 authentication to ignore an error response when using anything other than the default authentication method.
- Corrected an issue with the IMAP4 components which could result in a memory leak when a connection to the server was aborted.
- Corrected a client-side issue with the SMS components which could prevent looking up the cached provider mapped to a phone number.
- Corrected an issue where the SSH and TELNET client components may not log the session correctly when debug logging is enabled.
- Corrected an issue with the MIME components which prevented multipart messages from being parsed correctly when using a mix of ANSI character sets.
- Corrected an issue with the MIME components which could cause a memory leak when processing messages with certain non-Unicode character sets.
- Corrected an issue with the MIME components which could cause an unhandled exception if a message incorrectedly identified the character set used.
- Improved handling of certain MIME character sets for non-European languages, particularly messages which use Chinese and Korean character sets.
- Corrected an issue with the MIME components which could return an incorrect content length for base64 encoded ASCII text
- Corrected an issue which could cause an incorrect error code to be returned when an ICMP echo request failed.
- Corrected a potential internal overflow issue which could cause NNTP requests to fail for messages with large message IDs.
- Corrected an issue obtaining a valid GeoIP location for the client and internal caching would prevent the location data from being updated.
- Corrected an issue where a valid client location ID could not be obtained on Windows 7 or Windows Server 2008 R2.
- Corrected an internal issue which could result in an incorrect error code being returned when a DNS lookup failed, causing inconsistent behavior on Windows 7/8.1.
- Corrected an issue which could prevent applicatons running on Windows 7 systems from connecting securely to certain legacy servers which still use TLS 1.0.
- Corrected an issue which could cause an unhandled exception in the MIME and Encoding components when decoding a string which contains certain invalid base64 characters.
- Corrected an issue with the Encoding components which could cause a memory leak when expanding compressed data under specific conditions.
- Included the current .NET 7.0 Preview 7 release assemblies with the default installation packages.
- Updates for the current Visual Studio 2022 17.3.3 release and the .NET 7.0 Preview 7 release.
- Minor updates and improvements to the HTML Help and PDF documentation.
Version 10.0.1416.2256 (12 May 2022)
- Corrected an issue which caused the POP3 components and library to fail authentication using an OAuth2 bearer token.
- Corrected an issue which could prevent a log file from being created when certain options were specified.
- Improved how HTTP resource redirection is handled and corrected an issue which could cause the client to reissue the same GET request.
- Corrected an issue which could prevent the process heap allocated for SFTP client session handles from being destroyed.
- Corrected an issue which could cause unnecessary IMAP FETCH commands to be issued when retrieving a message.
- Updates for the current Visual Studio 2022 release and preview release of the .NET 7.0 Framework.
- Minor updates and improvements to the HTML Help and PDF documentation.
Version 10.0.1402.2218 (30 Mar 2022)
- Corrected an issue with the HTTP components where the PostXml and PostJson methods may not return an error if the server returns a status code in the 500 range.
- Corrected an issue with the HTTP components where the GetFile method could prevent the client from re-establishing a persistent connection.
- Corrected an issue with the HTTP components where the DeleteFile method which could cause subsequent methods to fail unexpectedly for that client session.
- Corrected an issue with the FTP components where the GetMultipleFiles method could fail without updating the last error code.
- Corrected an issue which could prevent certain internationalized domain names from being resolved correctly.
- Corrected an issue which could prevent a fallback to using IPv4 if the application requests IPv6 and only an IPv4 address is assigned to the host.
- Corrected an issue which could cause a client to attempt to negotiate a TLS 1.2 connection on Windows XP, Windows Vista or Windows Server 2003.
- Updated the internal table of recognized content types used by the MIME and HTTP components.
- Updates for the current Visual Studio 2022 17.1 and Visual Studio 2019 16.11 release with the latest .NET 5.0 and 6.0 Framework SDKs.
- Minor updates and improvements to the HTML Help and PDF documentation.
Version 10.0.1318.2132 (18 Jan 2022)
- Corrected an issue with the ActiveX controls which could cause memory corruption when the control was dynamically created CreateObject. This would cause the host application to throw an unhandled exception or terminate abnormally.
- Corrected an issue where arguments passed to the PatchData, PostJson and PostXml methods in the HttpClient ActiveX control would not be accepted unless they were explicitly typed as String variables. Passing a valid variant argument would throw exception 0x80070057 (E_INVALIDARG) which specified the argument type was invalid.
- Corrected an issue where the HTTP client components would report an aborted connection if there was a mismatch between the amount of data returned by a server and the payload size specified in the response header.
- Corrected an issue where the HttpPostJson function and PostJson methods in the HTTP components would not return the correct result if the server rejected the request. This could make it appear as though the function or method call was successful without a payload being returned to the caller.
- Corrected an issue where the SmtpSubmitMessage function would not fail if the caller specified file attachments which could not be included in the message.
- Corrected an issue with the MIME components where an ambiguous error would be returned if a file type could not be determined due to an invalid registry value for the file extension.
- Corrected an issue with the MIME components where UTF-16LE text files may not be encoded correctly when attached to a message.
- Corrected an issue with the MIME components where attachments with binary data would be written as raw 8-bit data instead of using base64 encoding.
- Corrected an issue with the FTP client components where a connection may not be re-established under idle timeout conditions or if the server aborts the control connection.
- Corrected an issue with the FTP server components which could cause the server to perform a "hard close" on the data channel and not send the TLS close notification to the client.
- Corrected an issue with the DNS and InternetMail components which could cause a memory leak when multiple MX records are returned for a domain.
- Corrected an issue with the DNS components which could cause an SPF TXT query to fail when a valid record for the domain existed.
- Corrected an issue with the POP3 and IMAP4 components which could cause a memory leak if the server terminated the connection unexpectedly.
- Corrected an issue where a malformed OAuth2 token would be ignored and the client would not report an error when authentication failed.
- Corrected an issue where client certificates may not be loaded when a secure connection is established. This only affected services which required TLS client certificates for user authentication.
- Minor updates and improvements to the HTML Help and PDF documentation.
Version 10.0.1290.2024 (08 Nov 2021)
- Added internal support for Windows 11 and Windows Server 2022 release builds, and includes support for the new Visual Studio 2022 release. The minimum supported platforms for SocketTools continues to be Windows 7 SP1 and Windows Server 2008 R2.
- Assemblies for the release of .NET 6.0 have been added to the base installation. To build applications using .NET 6.0 you will need install the current release of Visual Studio 2022.
- Corrected an issue with the FileEncoder and MailMessage components which could prevent base64 encoded text from being decoded correctly if the original text used UTF-8 encoding or was decoded on a system using a different active code page than was used when encoding the text.
- The FileEncoder ActiveX control includes a CodePage property which can be used to change the code page used when converting text to a byte array. The default setting performs Unicode string conversions using UTF-8 and it is recommended you use this default to ensure there is no data loss when encoding text in languages with characters that cannot be represented by the current active code page.
- The MailMessage, ImapClient, PopClient and SmtpClient components will no longer attempt to parse email addresses which contain exclamation marks as old-style UUCP addresses. This corrects an issue where an otherwise valid address would be rejected if the name associated with the address included an unquoted exclamation mark character.
Version 10.0.1282.1986 (18 Aug 2021)
- Assemblies for .NET 6.0 Preview 7 have been added to the base installation. To build applications using .NET 6.0 you will need install the Visual Studio 2022 Preview.
- Corrected an issue where the InternetMail component would not disconnect correctly from an IMAP server under some circumstances.
- Corrected an issue where the GetText method or HttpGetText function in the HTTP client components and library would not return an error if an invalid resource was specified.
- If the HttpClient Connect method or HttpConnect function is called using an HTTPS URL instead of a hostname, and the default port number is specified, it will automatically switch to using a secure port (443) instead of returning an error.
- The HTTP server components and libaries will no longer override custom values for the Cache-Control, Content-Type and Server response headers. This will enable the application to provide its own values unique to that client session. A default Pragma response header will only be used with HTTP/1.0 client sessions.
- Corrected an issue where setting the Passive property to false in the FtpClient component would not force the client to use active mode file transfers.
- Corrected an issue where the value of the ActivePorts property in the FileTransfer .NET class would be ingored when establishing a new FTP connection and revert to using the default port range.
- The ComposeMessage method in the InternetMail and MailMessage component, and the MimeComposeMessage function in the MIME library will use Unicode (UTF-8) instead of the ISO 8859-1 character set with HTML formatted text.
- Corrected an issue where the ComposeMessage method in the InternetMail and MailMessage .NET components could fail with an error indicating invalid encoding was used. An additional check is made to ensure the correct encoding is always selected with the default UTF-8 character set.
- Corrected an issue when composing a new message with HTML text using the ComposeMessage method or the MimeComposeMessage function where the HTML contents would not be encoded even though the Content-Transfer-Encoding header would specify quoted-printable encoding. This could cause mail clients to display the HTML contents incorrectly.
- Corrected an issue where the Attachment property of the InternetMail and MailMessage components, and the MimeGetAttachedFileName function, could return "Unknown" as the file name even though a valid file name has been specified for the attachment.
- Corrected an issue where the AttachData method for the InternetMail and MailMessage components, and the MimeAttachData function, would return an error indicating a message header was invalid, although the same data could be written to a file and attached to the message using the AttachFile method.
- The MIME parser will defer decoding quoted-printable or base64 encoded text until the application requests the contents of the encoded text, rather than always decoding the text as the message is being parsed. This optimization should improve performance when importing large messages.
- Added support for several more Windows code page character sets and updated the parser to internally convert them into Unicode. This affects both the contents of message, and encoded header values which used these code pages. This change was made to improve messages imported from older mail clients. Windows code pages should not be used when composing new messages.
- Corrected an issue with the SocketWrench .NET class which could cause a unmanaged memory leak when a large number of class instances were created.
- Corrected an issue with all components and libraries which could prevent the process heap from being destroyed if the Uninitialize method or function was explcitly called by the application. This could result in memory fragmentation and a potential memory leak if the component was repeatedly initialized and uninitialized.
- Updated the licensing for all ActiveX controls to resolve an issue where using CreateObject could fail if the application or script references the control on a system which does not have a development license installed.
- New installers and Windows Installer (MSI) packages have been created which no longer use InstallShield. The new installers provide an improved installation experience and provide support silent installation and a streamlined update process.
- If you have previously installed SocketTools with a serial number, installing an update will no longer require you to re-enter your serial number under some circumstances.
- Launching the License Manager utility directly from the default installation folder, rather than using the shortcut, will automatically detect the correct SocketTools edition rather than selecting another edition which was previously installed with an evaluation license.
- Uninstalling SocketTools will no longer display error messages about being unable to unregister or remove 64-bit ActiveX components.
- Examples were added for the Visual Studio 2022 Preview and Library Edition examples were updated to use the v143 toolset. Note some examples use Microsoft Foundation Classes (MFC) which should be installed for the current toolset.
- Minor updates to the HTML Help documentation and a README.md file has been included which provides information about the installer.
Version 10.0.1274.1931 (18 May 2021)
- Secure connections will automatically fall back to using TLS 1.2 if support for TLS 1.3 has not been enabled on the local system. Microsoft has not made TLS 1.3 generally available for the Schannel SSPI and is considered experimental.
- The MIME content type application/vnd.microsoft.portable-executable is recognized for executable files and dynamic load libraries (DLLs) which are attached to messages.
- Valid message attachments which do not explicitly specify a file name will be automatically assigned a default name based on the content type associated with the attachment.
- Corrected an issue where a file attachment with a long file name would not be recognized by the MIME parser.
- Corrected a potential buffer overrun if a MIME header field value was malformed.
- Corrected an issue where assigning previously encoded text to a MIME message part could cause it to be re-encoded.
- Text content which does not require base64 or quoted-printable encoding will not be automatically encoded when inserted into a MIME message part.
- Relaxed validation of email addresses which contain extraneous whitespace but are otherwise valid.
- Removed the deprecated "FAX" addressing scheme used in older versions of Outlook. These types of addresses will now be flagged as invalid.
- Modified the automatic proxy detection to exclude specific protocols if configured in the exception list.
- Corrected an issue where the local proxy configuration would be ignored if the proxy server was specified using a URL instead of a domain name.
- When the user's proxy configuration bypasses local addresses, all hostnames which are not fully qualified will match the local exclusion rules. Previous versions would only bypass the proxy if the hostname was "localhost" or the IP address was 127.0.0.1.
- Corrected an issue where internationalized domain names (IDNs) may not resolve correctly when used with a proxy server.
- Corrected an issue where invoking the Reset method in the InternetMail ActiveX control would not clear the current user credentials.
- Corrected an issue where the BearerToken property was not available in the InternetMail .NET class and ActiveX control.
- Corrected an issue where context sensitive help would not display correctly in Visual Basic 6.0 for the FileTransfer and InternetMail ActiveX controls.
- Modified the behavior of the HttpClient.PostData in the .NET class to always convert string payloads to UTF-8. The overloaded versions of the method which accept byte arrays are not affected by this change.
- Updated Pascal and Visual Basic function declarations and constants for the Library Edition.
- Support for Windows XP, Windows Vista and Windows Server 2003 has been officially deprecated.
- The License Manager utility should display the option to check for product updates for all SocketTools editions.
- The installer package (setup) will automatically check for new updates at the end of the installation process.
- Minor updates and improvements to the HTML Help documentation.
Version 10.0.1268.1892 (02 Mar 2021)
- Updated the .NET 5.0 assemblies for the .NET 5.0.3 runtime and made internal changes to support the .NET 6.0 preview release. Assemblies which target .NET 6.0 will be made available for testing and general availability is scheduled for November, 2021.
- The FTP and HTTP server components will release unused memory when the server is restarted, recreating the private heap allocated for the server session. This addresses an issue where restarting the server multiple times could result in increased memory utilization.
- Corrected an issue where the HTTP server components could throw an exception and cause the application to crash when attempting to stop or restart the server while processing a client a request.
- Changed how FTP and HTTP server events are processed while the server is in the process of stopping or restarting. Client sessions will no longer be forcibly terminated while handling a request, however additional events will not be raised while the server is in its shutdown process.
- The MIME components and library will now decode encoded text in a message part when it is designated as an attachment. Previous versions would not decode text in a file attachment and would always return the encoded data. This only affects text content and binary file attachments should be stored using the ExtractFile method or MimeExtractFile function.
- The MimeGetMessageText function will explicitly fail if the buffer provided is not large enough to store the complete contents of the message, including a terminating NUL character. This mitigates a potential buffer overrun and prevents the API from returning truncated text.
- Corrected an issue where the GeoIP location API would fail with an unexpected error when an IPv4 address could not be mapped to a valid Autonomous System Number (ASN).
- Corrected an internal buffer overrun condition in the SMTP components and library which could occur when submitting an email message that contained a malformed address.
- Corrected an issue that could prevent networking components from resolving certain internationalized domain names when using the Unicode version of the API or the .NET components.
- Minor corrections to the documentation.
Version 10.0.1260.1875 (10 Dec 2020)
- The SocketTools Subscription and .NET Edition includes release builds of the .NET 5.0 assemblies as part of the base install. Install the latest release of Visual Studio 2019 which includes the .NET 5.0 Framework.
- Corrected an issue that could prevent certain internationalized domain names from resolving correctly due to how they were being encoded. In this case, a valid domain name would return an error indicating that it was unknown and the connection would fail.
- Modified the server related components to attempt to reduce the working set size of the process when the server is stopped or goes idle after all clients have disconnected. This should reduce the overall memory footprint of the server over time.
- Corrected an issue where checking the unmanaged memory allocation of the FTP and HTTP server components could return an incorrect value. This also corrects an issue where the server could remain in a locked state after checking memory usage.
- Corrected an issue where the CheckPath method in the HTTP server components could incorrectly indicate a client did not have permission to access a virtual path and the ResolvePath method would fail.
- Corrected an issue with the HTTP client components and library which could cause a memory leak when returning the contents of a JSON or XML post as a memory object. The internal handle that was used would remain locked and not released after the data was returned to the caller.
- Corrected an issue with the FTP and HTTP client components and libraries which could cause the client to wait for longer periods of time between transfers if a lower priority was specified. In some cases, subsequent transfers would take longer to complete than they should have, even with a lower transfer priority.
- Changed how the OnProgress events are handled for the FTP and HTTP client components to update the application more reliably under higher latency conditions.
- Corrected an issue with the IMAP components which could cause them to return an incorrect mailbox count under some circumstances. This would typically only occur with accounts that had a large number of mailboxes.
- Corrected an issue with the IMAP components and library which could result in a read-only mailbox not being internally flagged as read-only. An incorrect error code would be returned if an attempt was made to delete or move a message from that mailbox.
- Corrected an issue that could result in an internal buffer overrun in the MIME components and library when parsing messages which contain a large number of attachments.
- Corrected an issue with the MIME components and library which could cause an exported message to be truncated if the message contained only HTML formatted text and multiple file attachments.
- Corrected an issue with how non-Latin character sets were being detected and parsed by the MIME components and libraries, resulting in incorrect UTF-8 encoding under some circumstances.
- Corrected an issue with the DNS components and library which could prevent mail exchange (MX) record query from resolving correctly under some circumstances. This also introduced a potential memory leak after incorrectly reporting a failure.
- Relaxed certain strict checks made to validate email addresses with the MIME and SMTP components and libraries to improve compatibility with third-party email clients.
- Corrected an issue with the SocketWrench components which could cause them to ignore the setting of the NoDelay property and would not set the TCP_NODELAY flag on the socket.
- Corrected an issue with the Telnet client components and libraries which could cause them to report that there was no data available to read from the server when data had been received and buffered over a secure connection.
- Corrected an issue with the NNTP client components and library which could cause very large article IDs to be truncated to 32-bit values and then returned as negative integers rather than the correct ID value.
- Corrected a problem with the text messaging components and library which would prevent an application from sending a message where there was no known service provider, even when a provider was explicitly specified.
- Changed the error codes returned by some text messaging functions to return more meaningful values, rather than always reporting the server returned an unexpected response.
- Corrected an issue with the File Encoder components and library which could cause an internal buffer overrun when encoding or decoding a file using the uucode algorithm.
- Minor corrections and updates to the technical reference documentation.
Version 10.0.1251.1868 (24 Sep 2020)
- Added the .NET 5.0 RC1 assemblies to the SocketTools Subscription and .NET Edition installers as part of the base install. Now that .NET 5.0 is in the release candidate phase of the preview, the .NET 5.0 SocketTools classes are fully supported. Microsoft is planning for the official release of .NET 5.0 in November 2020.
- Changes to the internal buffering algorithm used for HTTP and FTP file transfers which should increase file transfer speeds under certain conditions. This is a continuation of the optimizations being implemented to improve transfers over high-latency, low-bandwidth network connections.
- Corrected a problem with the web storage and location APIs which could cause them to report an error indicating that the developer account is invalid. This could occur when a development license is used on a system where an evaluation license was previously installed.
- Corrected a problem with the POP3 components which could cause an internal buffer overrun if a very large OAuth 2.0 bearer token was used. This was primarily an issue with Microsoft Office 365 accounts because Azure uses encoded Java Web Tokens for their bearer tokens.
- Added internal support for some additional Windows code pages when parsing MIME formatted mail messages. This improves handling for some older versions of Outlook and applications which used Outlook automation to compose messages.
- Corrected an issue with the MIME API that could cause messages composed using an ANSI character set to be returned as corrupted text. This affected the MimeGetMessageText function in the library, as well as the Text properties in the MailMessage .NET class and ActiveX control.
- Updated the documentation to make it clear the ANSI version of the MimeGetMessageText function and CMailMessage::GetText method will always return the decoded message text as UTF-8 Unicode, not the original character set which was used to compose the message. It is recommended you use the Unicode version of the function whenever possible.
- Documented the HttpPutDataEx and HttpPutTextEx functions. These functions were introduced with a previous release of SocketTools 10 but were never documented and the function prototypes were only included in the C/C++ header file. These functions allow the use of PUT with RESTful API services which use the PUT command to submit data, similar to how the POST command is used.
- Minor corrections and updates to the technical reference documentation.
Version 10.0.1245.1854 (18 Aug 2020)
- Added support OAuth 2.0 authentication to the HTTP, IMAP, POP3 and SMTP components and libraries. Please review the Frequently Asked Questions document for more information about OAuth 2.0.
- New authentication methods were added for each of the libraries which support OAuth 2.0 OAuth 2.0 bearer tokens. For IMAP, POP3 and SMTP both the XOAUTH2 and OAUTHBEARER methods are supported. The technical reference documentation includes more information about these methods for each of the components and libraries.
- New properties were added to the SocketTools.ImapClient, SocketTools.PopClient and SocketTools.SmtpClient .NET classes to support OAuth 2.0 authentication. The BearerToken property specifies the access token used to authenticate the client session.
- The SocketTools.ImapClient and SocketTools.SmtpClient .NET classes have a new Authentication property which enables you to explicitly specify which authentication method you prefer to use.
- New properties were added to the ImapClient, PopClient and SmtpClient ActiveX controls to support OAuth 2.0 authentication. The The BearerToken property specifies the access token used to authenticate the client session. The ImapClient and SmtpClient ActiveX controls also have a new AuthType property which allows you to explicitly specify which authentication method you prefer to use.
- The HTTP API supports the HTTP_AUTH_BEARER authentication method and the new HttpSetBearerToken function can be used to specify the token value. The SocketTools.HttpClient .NET class and the HttpClient ActiveX control have a new BearerToken property which can be used to specify the OAuth 2.0 bearer token.
- The IMAP API supports the IMAP_AUTH_XOAUTH2 and IMAP_AUTH_BEARER authentication methods. OAuth 2.0 authentication is performed by calling the ImapLogin function using one of those two authentication types.
- The POP3 API supports the POP_AUTH_XOAUTH2 and POP_AUTH_BEARER authentication methods. OAuth 2.0 authentication is performed by calling the PopLogin function using one of those two authentication types.
- The SMTP API supports the SMTP_AUTH_XOAUTH2 and SMTP_AUTH_BEARER authentication methods. OAuth 2.0 authentication is performed by calling the SmtpAuthenticate function using one of those two authentication types.
- Updated the POP3 .NET class, ActiveX control and library to support SASL LOGIN and PLAIN authentication methods.
- Updated the SMTP .NET class, ActiveX control and library to support SASL PLAIN authentication in addition to LOGIN.
- Corrected an issue in the POP3 and IMAP components and libraries which could result in an internal buffer overrun if very large passwords or bearer tokens were specified.
- Updated the .NET Core assemblies to use strong naming which enables string loading, requiring the assembly version to match what was referenced in the project. All .NET Framework assemblies already used strong naming.
- Updated the .NET Framework 5.0 assemblies to use Preview 7. Using these assemblies requires you to install the .NET 5.0 preview and the latest preview release of Visual Studio 2019. Refer to the SocketTools .NET 5.0 Preview technical article for more information.
- Improved the internal socket I/O buffering used by all networking components. This will increase throughput for most data transfers, particularly over higher latency connections.
- Updates and corrections to the technical reference documentation for all components.
Version 10.0.1238.1812 (03 Jul 2020)
- 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 documentation has been expanded to provide additional information on all supported character sets.
- Added a property named CodePage to several .NET classes and ActiveX controls to improve support for how 8-bit ANSI characters are converted to Unicode when sending and receiving text data using native String types. By default, text will be converted to Unicode using the active code page for the current locale, but this can be changed to specify UTF-8 or any other valid Windows code page as needed.
- 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.
- Updated the .NET Framework 5.0 assemblies to use Preview 6. Using these assemblies requires you to install the .NET 5.0 preview and the latest preview release of Visual Studio 2019. Refer to the SocketTools .NET 5.0 Preview technical article for more information.
- 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.
- 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.
- 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.
- 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.
- Corrected an issue that could cause an internal buffer overrun when decoding UTF-8 encoded text which used certain Unicode 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.
- Corrected an documentation issue where the MimeDecodeText and MimeEncodeText functions in the library were exported and prototyped, but not included in the technical reference.
- Expanded support for two additional key exchange algorithms used with secure TLS connections. The components will now support the Diffie-Hellman store and forward and ephemeral elliptic curve key exchange algorithms.
- Corrected an issue where some component libraries and ActiveX controls had incorrect version resource information.
- Updated the technical reference documentation to include the HttpPatchData function in the Library Edition and the PatchData method in the .NET Edition.
- Added the .NET Core and .NET 5.0 Preview 6 assemblies to the package for the stand-alone SocketWrench installer.
- Corrected an issue which could prevent certain valid e-mail addresses from being used when installing SocketTools.
- Minor corrections and updates to the technical reference documentation.
Version 10.0.1224.1762 (14 Apr 2020)
- The SocketTools .NET Edition now includes assemblies which target .NET Core 2.1 LTS and .NET Core 3.1 for the Windows desktop and server platforms in addition to the complete .NET Framework.
- Assemblies which target the .NET Framework 5.0 preview release from Microsoft have been included with this release. Using these assemblies requires you to install the .NET 5.0 preview and the latest preview release of Visual Studio 2019.
- All HTTP and HTTPS client connections will default to using HTTP 1.1, including connections through proxy servers. This addresses an issue where some servers would reject connections from clients attempting to use HTTP 1.0 through a proxy server. It is still possible for clients to explicitly specify using HTTP 1.0 if needed with a legacy server.
- Corrected an issue with the FtpGetMultipleFiles function and GetMultipleFiles methods which could cause internal heap corruption when called repeatedly.
- Corrected an issue where memory usage reported by the FTP and HTTP server components could be incorrect immediately after multiple clients have disconnected from the server. This functionality was introduced in the previous update.
- Corrected a rare condition in the MIME component which could result in an internal buffer overflow with specially crafted UTF-8 encoded strings in message headers.
- The IP location client service should provide more accurate network information for some localities outside of North America and western Europe.
- Improved the method used to map regional mobile service providers to the gateways that are used with the SMS components to send text messages.
Version 10.0.1218.1604 (23 Jan 2020)
- Implements a new heap management system for the FTP and HTTP server components which reduces the overall memory utilization and addresses a memory leak that could occur with a large number of client sessions.
- The FtpGetServerMemoryUsage and HttpGetServerMemoryUsage functions were added to the API, and the FtpServer and HttpServer .NET classes and ActiveX controls have a new MemoryUsage property which returns the amount of memory allocated by the server for the current client connections. Refer to the technical reference documentation for more information.
- Corrected an issue which could prevent a secure HTTP session from being established with a server that used TLS 1.0 and required a client certificate. Note that TLS 1.0 is considered a deprecated version of the protocol, and by default SocketTools will TLS 1.2.
- Corrected an issue that could cause DNS queries for multiple MX records to fail and the last error code for the current thread would not be updated, causing confusion as to the actual cause of the failure.
- Corrected an issue with the MIME components and library where they would default to incorrect 7-bit encoding when creating new messages under certain circumstances. All new messages are created using UTF-8 encoding by default.
- Corrected an issue with the HTTP client components and library which could result in incomplete data being returned with an HTTP 1.1 connection using chunked data. This was an edge case that arose from the new internal buffering implemented in version 10 and only occurred under specific conditions with large payloads.
- Corrected an issue with the geo IP location components and API which could prevent location data for certain valid IPv6 addresses from being returned.
- Corrected an issue with the internal caching mechanism for the geo IP location components and API that would cause stale location data to be returned for a local system where the IP address has changed.
- Corrected an issue with the POP3 and IMAP4 components and libraries where the last error code for the current thread would not be updated correctly under certain conditions when a secure connection could not be established with the server.
- Corrected an issue with the SMTP and Text Messaging libraries and components which resulted in additional memory being unnecessarily allocated for each client session. This memory would not be released until the library or component was uninitialized or the class instance disposed.
- Corrected an issue with the NNTP library and .NET class that could prevent an article from being retrieved from the server when using a 64-bit article ID value.
- Corrected a potential internal buffer overrun when encrypting and decrypting string data using the AesEncryptString and AesDecryptString functions. Additional checks are performed to ensure that the output buffer provided by the caller is large enough to store the entire encrypted or decrypted string, including the terminating null character.
- Corrected an issue where some 64-bit integer values, handles and memory addresses would be reported in logfiles as truncated 32-bit values when targeting a 64-bit Windows platform.
- Corrected an issue in the Library Edition documentation where some APIs could reference the incorrect header file and/or import library for individual functions.
Version 10.0.1216.1586 (20 Dec 2019)
- Changed the functionality of unregistering a web services application ID so that it no longer revokes the internal API key associated with it. This allows the ID assigned by the developer to be reused at a later time. Although the AppID can be reused, the key that is associated with that ID will change, and all objects previously created using that ID will be orphaned and expunged from storage.
- Corrected a problem that could prevent the SocketTools .NET 2.0 and 3.5 assemblies from loading on the 64-bit Windows XP platform.
- Relaxed MIME address validation to accept email addresses that included whitespace between angle-brackets within an address string. These addresses can be parsed as long as the remaining components of the address are valid.
- Added functions to the Library Edition that enable an application to enumerate the application IDs that have been allocated for the account. See the WebGetFirstApplication and WebGetNextApplication functions.
- Updated the function declarations for C# and Visual Basic .NET to use the Unicode versions of functions, and corrected structure members to use UnmanagedType.LPTStr instead of UnmanagedType.LPWStr, which should only be used with COM interfaces.
- Updated the function declarations for PowerBASIC to correct several cases where parameters were incorrectly declared as BYVAL instead of BYREF. Padding for certain structure members was added to address specific alignment issues.
- Corrected an issue where some web services functions that should return a Boolean result would return a value of -1 if an error occurred. This would result in an operation appearing to succeed when it actually failed.
- Relaxed installation requirements to allow for valid email addresses that would otherwise be rejected. It is still required for developers to register their SocketTools license using an individual email address, and not a generic corporate-wide email address.
- Minor improvements and updates to the documentation.
Version 10.0.1208.1512 (30 Sep 2019)
- A new private cloud storage component which enables applications to store and manage data remotely, without having to use public third-party providers or subscribe to another service. You can store configuration files or other data to the SocketTools storage service and then access that from within your application from any location. The data is stored securely, and all connections to the server use TLS 1.2 and AES 256-bit encryption. Because there are no public endpoints to the data that you store, it's not possible for another application to access your data using external links. The data you store is associated with your development license and can only be accessed by your software.
[.NET Edition] [ActiveX Edition] [Library Edition] - A new geographical IP location component which enables your application to obtain specific information about the physical location of the computer system your software is running on. This component uses the external IP address of the local computer to determine its location and will return general information such as the country, city name and what service provider they are using. It can also return more specific location information such as longitude, latitude and GPS coordinates.
[.NET Edition] [ActiveX Edition] [Library Edition] - New general-purpose encryption functionality that enables you to encrypt and decrypt data files or blocks of memory using AES 256-bit encryption and a SHA-256 hashed password to generate the encryption and decryption key. This can be combined with the storage service to encrypt the data that your application stores. There is also the ability to generate encrypted strings which are base64 encoded and safe to store as text.
[.NET Edition] [ActiveX Edition] [Library Edition] - Added support for TLS 1.3. When Microsoft makes it generally available for Windows and Windows Server, SocketTools will support the latest version of TLS. Because SocketTools uses Microsoft's CryptoAPI and Schannel provider, TLS 1.3 support will only work on those versions of Windows which are updated to use this version of the protocol. Currently, TLS 1.2 remains the default version used to establish secure connections. Earlier versions of TLS have been deprecated, but your applications can still use them if you need to connect to legacy servers which have not been updated.
- Updated for the latest changes in Windows 10 Build 1903 and Windows Server 2019. Examples have been included for the current release of Visual Studio 2019 and the .NET Framework 4.8. SocketTools 10 continues to provide backwards compatibility for Windows XP SP3 and Windows Server 2003, however certain functionality has been deprecated, particularly in terms of secure connections. Those legacy platforms only support TLS 1.0 and applications running on them will be unable to establish secure connections to most modern services. Secure connections using TLS 1.2 require Windows 7 SP1 or Windows Server 2008 R2 or later.
- Improved support for the use of TLS client certificates in combination with TLS 1.2 session renegotiation. Client certificates are typically used to authenticate the session, and this change supports servers which periodically attempt to renegotiate the cryptographic parameters throughout the client session.
- Improved internal performance for HTTP and HTTPS connections, particularly when the client is making many repeated requests for relatively small amounts of data.
- Added options to make it easier to handle error responses when requesting a resource or submitting data to a web server. When submitting XML or JSON formatted requests, you can request that any error messages be returned to your application on an individual basis, rather than the function or method always returning an error.
- Improved general support for Unicode and the use of internationalized domain names. SocketTools will automatically convert domain names which contain Unicode characters to Punycode encoding. Several helper functions were added to the API to assist with conversion to UTF-8 encoding.
- Improved support for the NNTP protocol to allow for article IDs that exceed the maximum value of a signed 32-bit integer. Extended functions allow for the use of unsigned 64-bit integers as article numbers.
- Added support for generating base64 encoded HMAC message digests using SHA-256, SHA-384 and SHA-512. This can be useful for services which require the use of these digests.
- Improved performance for the FTP and HTTP server components working over local intranets using shared folders that are not mapped to drives on the host system.
- Numerous updates and corrections to issues reported with SocketTools 9 have been included with SocketTools 10, providing a cumulative update to those issues reported with the previous version.
Knowledge Base
Our knowledge base provides detailed solutions and answers to common questions. It covers topics such as installation and licensing, common errors and network troubleshooting.
Technical Support
If you have any questions about our products, licensing or support options you can submit a support request. Technical support is available for customers and evaluators.