SocketTools 12 Release Notes
- Added support for xAI (Grok) as a Large Language Model service provider.
- Updated the LLM API to support latest models released by OpenAI, Anthropic and xAI.
- Updated the internal list of default models for all providers.
- Removed references to the logging library which is no longer necessary in version 12.
- Corrected an an internal licensing issue with SocketWrench so it recognizes the correct licensing group.
- Corrected a potential deadlock situation in the InternetServer, HttpServer and FtpServer components.
- Corrected an issue which could cause AES-256 encryption to fail unexpectedly with specific input buffer sizes.
- Changed how progress events are generated for SSH connections to prevent excessive callback notifications.
- Changed how socket I/O buffers are allocated for SFTP to mitigate potential packet fragmentation.
- Corrected an issue which could cause the initial SSH and SFTP negotiation to timeout or take extended periods of time.
- When TLS 1.3 is explicitly requested and not supported, TLS 1.2 will be automatically negotiated rather than returning an error.
- Corrected an internal buffer overrun which could occur with certain HTTP requests, notably the PUT and PATCH methods.
- Changed the InetIsReadable function and SocketWrench IsReadable property to be more reliable when polling secure socket connections.
- Updated the installer to display a warning message when a shared drive or UNC network path is specified.
- Corrected an issue which could prevent the C/C++ header files from being updated by the installer.
- Updated SocketWrench async socket I/O function documentation to clarify they are not being removed from the API.
- Updated the Markdown documentation for the SocketTools APIs.
- Minor updates and corrections to the HTML Help and PDF documentation.
- Added native ARM64 support for the SocketTools libraries, .NET classes and ActiveX controls.
- Added a new Large Language Model (LLM) client API, .NET class and ActiveX control.
- Added a new WebView API and ActiveX control based on the Microsoft Edge WebView2 runtime.
- Inlcudes support for Visual Studio 2026 and the current .NET 10 release.
- Added HTTP/3 support to the HTTP client.
- TLS 1.3 is now always preferred by default on Windows platforms that support it.
- TLS 1.2 is only used as the compatibility fallback when TLS 1.3 is unavailable.
- TLS 1.0 and TLS 1.1 remain supported but must be explicitly enabled by the application.
- Applications that explicitly require TLS 1.0 or TLS 1.1 must request those protocol versions; they are no longer part of the default secure protocol selection.
- Applications should always use TLS 1.2 or TLS 1.3 for secure connections whenever possible.
- Removed internal support for obsolete SSL protocols.
- Added support for Windows security zone information (Mark of the Web) associated with downloaded files.
- Added InetGetVpnAdapter to determine whether a network adapter represents a VPN connection.
- Added FTP_FEATURE_XSHA1 for servers that support SHA-1 file verification extensions.
- Added FTP_FEATURE_HASH for servers that support the HASH command.
- Changed default FTP text encoding to use UTF-8 rather than ANSI text.
- Added FtpGetDefaultZoneId to obtain the default security zone assigned to downloaded files.
- Added FtpSetDefaultZoneId to change the default security zone assigned to downloaded files.
- Added FtpGetSecurityZoneId to determine the security zone associated with a URL.
- Added FtpGetFileZoneInfo to obtain security zone information for a local file.
- Added FtpSetFileZoneInfo to set security zone information for a local file.
- Added FtpGetFilePathUrl to obtain the URL associated with a downloaded local file.
- Added FtpNormalizePath to normalize an FTP file path.
- Added FtpNormalizeUrl to normalize an FTP URL.
- Added FtpGetIdleTimeout to obtain the current FTP idle timeout.
- Added FtpSetIdleTimeout to change the FTP idle timeout.
- Added HTTP_VERSION_30 for HTTP/3.
- Added HTTP_OPTION_HTTP3 to request HTTP/3 connections.
- Added explicit support for UTF-8 encoding and the HTTP_ENCODING_UTF8 option.
- Added explicit support ANSI encoding using the current code page and the HTTP_ENCODING_ANSI option.
- Added explicit support for XML URL encoding and the HTTP_ENCODING_XMLURL option.
- Added HttpPostText for posting text content.
- Added HttpPostTextEx for posting text content with additional options.
- Added HttpAsyncPostText for asynchronously posting text content.
- Added HttpGetDefaultZoneId to obtain the default security zone assigned to downloaded files.
- Added HttpSetDefaultZoneId to change the default security zone assigned to downloaded files.
- Added HttpGetSecurityZoneId to determine the security zone associated with a URL.
- Added HttpGetFileZoneInfo to obtain security zone information for a local file.
- Added HttpSetFileZoneInfo to set security zone information for a local file.
- Added HttpGetFilePathUrl to obtain the source URL associated with a downloaded local file.
- Added HttpNormalizePath to normalize an HTTP URL path.
- Added HttpNormalizeUrl to normalize an HTTP URL.
- Added the ZoneId property for the FTP and HTTP components.
- Added ImapEnumMessageUids to enumerate message unique identifiers (UIDs).
- Added MimeOpenMessage as the preferred API for opening or creating a MIME message.
- Added MimeCloseMessage as the preferred API for closing a MIME message.
- Added MimeParseText as the preferred API for parsing message text.
- Added MimeGetContentType for obtaining the content type of a MIME message part.
- Added MimeGetContentTypeEx for obtaining extended content type information.
- Added MimeIsContentType for testing whether a message part has a specified content type.
- Added MimeFindMessageText for searching message text.
- Added MimeFindMessageTextEx for extended message text searching.
- Added MimeFilterMessageText for filtering message content.
- Added MimeNormalizeText for normalizing message text.
- Added MimeGetMessageLinks for extracting links from message content.
- Added MimeGetAuthenticationResults for obtaining message authentication results.
- Added MimeCheckAuthenticationResults for checking message authentication status.
- Added MimeFormatDate64 for formatting a 64-bit message date.
- Added MimeParseDate64 for parsing a message date into a 64-bit time value.
- Added MimeGetMessageDateEx for retrieving message date information using extended time values.
- Added the GetFileZone and SetFileZone methods for the FTP and HTTP components.
- Added the MailMessage Authentication property for obtaining message authentication results.
- Added the MailMessage Filter and FilteredText property to control how message contents are filtered.
- Added the MailMessage Link property array and LinkCount property to enumerate links included in the current message.
- Added the MailMessage TextLength property to return the number of printable text characters in the current message.
- Updated the SmtpExpandAddress and SmtpVerifyAddress function prototypes to be consistent with similar functions.
- The SMTP parameter changes are naming changes only and do not change the calling convention.
- Updated the Network Time API, .NET class and ActiveX control to support 64-bit time values.
- Added ConvertNetworkTime64 for converting a 64-bit network time value.
- Added ConvertSystemTime64 for converting SYSTEMTIME to a 64-bit network time value.
- Added FormatNetworkTime64 for formatting a 64-bit network time value.
- Added GetNetworkTime64 for obtaining network time as a 64-bit value.
- Added ReadNetworkTime64 for reading a 64-bit network time value.
- Added UpdateLocalTime64 for updating the local system time using a 64-bit network time value.
- Changed the default port from the legacy Time Protocol port to the NTP port.
- Changed the default time server hostname from time.nist.gov to pool.ntp.org.
- Added the SocketWrench VpnAdapter property to determine whether a network adapter represents a VPN connection.
- Added Base58, Base32, Base85, Base58, Base32 and Z85 file encoding and decoding.
- Added token encoding constants for Base64, Base58, Base32 and Base85.
- Added ConvertTextFile to convert text files between supported character encodings.
- Added GetFileCodePage to determine the character encoding/code page used by a text file.
- Added CreateUniqueToken to create an encoded random token.
- Added FilterHtmlFile for filtering HTML content stored in a file.
- Added FilterHtmlText for filtering HTML text.
- Added FilterMarkdownFile for filtering Markdown content stored in a file.
- Added FilterMarkdownText for filtering Markdown text.
- Added FilterUnicodeText for filtering or normalizing Unicode text.
- Added IsHtmlText to identify HTML content.
- Added IsMarkdownText to identify Markdown content.
- Added IsUnicodeConfusable to identify potentially confusable Unicode characters.
- Added NormalizeUrl for validating and normalizing URLs.
- Added IsValidFileUrl for validating file URLs.
- Added GetFileNameUrl for converting a local file name to a file URL.
- Added GetUrlFileName for converting a file URL to a local file name.
- Added CreateCustomGuid for creating a GUID containing a caller-defined value.
- Added CreateGuidFromString for converting a GUID string to a GUID value.
- Added CreateSequentialGuid for creating a sequential GUID.
- Added GetCustomGuidValue for retrieving the custom value stored in a GUID.
- Added GetFileTimeFromGuid for obtaining a FILETIME value from a GUID.
- Added GetSystemTimeFromGuid for obtaining a SYSTEMTIME value from a GUID.
- Added GetTimeFromGuid for obtaining a time_t value from a GUID.
- Added IsEqualGuidString for comparing a GUID with its string representation.
- Normalized AesEncryptString and AesDecryptString to use INT instead of LONG for consistency.
- Normalized EncodeBuffer and DecodeBuffer to use INT instead of LONG for consistency.
- Added the FileEncoder CreateToken method to generate encoded token values.
- Added the FileEncoder CreateUuid7 and CreateUuid8 methods to generate v7 and v8 UUID values.
- Added the FileEncoder FilterHtml method to filter out HTML markup in a string buffer.
- Added the FileEncoder FilterMarkdown method to filter out markdown in a string buffer.
- Added the FileEncoder FilterUnicode method to filter out invalid or confusable Unicode text in a string buffer.
- Added the FileEncoder IsConfusable method to determine if a Unicode string contains confusable Unicode text.
- Added the FileEncoder IsValidUtf8 method to determine if a string contains valid UTF-8 encoding.
- Added the FileEncoder StrToUtf8 and Utf8ToStr methods to convert between local and UTF-8 encoded strings.
- Added C++ wrapper classes for the new LLM and WebView APIs.
- Added C++ wrapper methods corresponding to the new FTP security zone, path normalization and idle timeout functions.
- Added C++ wrapper methods corresponding to the new HTTP security zone, URL normalization and text-posting functions.
- Added C++ wrapper methods corresponding to the new MIME filtering, normalization, content type, link extraction and authentication-result functions.
- Added C++ wrapper methods corresponding to the new 64-bit Network Time functions.
- Updated many .NET enumeration members to use PascalCase naming conventions.
- Retained the previous enumeration names for source compatibility where appropriate and marked them obsolete.
- For example, ErrorCode.errorNotConnected is superseded by ErrorCode.NotConnected.
- Changed the .NET classes to use the Unicode versions of the native SocketTools APIs internally.
- Removed unnecessary internal conversions between ANSI and Unicode strings.
- Improved consistency when working with Unicode strings and international text.
- Added native ARM64 interop support for all .NET applications.
- Added native ARM64 versions of the ActiveX controls.
- Added the new LLM ActiveX control.
- Added the new WebView ActiveX control.
- Updated existing controls to reflect applicable changes and additions made to the underlying SocketTools APIs.
- Applications should pass NULL for the reserved initialization parameter.
- The Remote Shell (RSH) API, C++ class, .NET class and ActiveX control are deprecated but retained for compatibility.
- Applications which currently use RSH should migrate SSH 2.0.
- Changed the second parameter of API initialization functions from an INITDATA pointer to LPVOID lpvReserved.
- Removed the deprecated INITDATA, INITDATAA and INITDATAW structures.
- Removed the LPINITDATA, LPINITDATAA and LPINITDATAW type definitions.
- Updated C++ initialization methods to pass the new reserved initialization parameter instead of INITDATA.
- Applications that declared or populated an INITDATA structure must remove that code and pass NULL to the reserved initialization parameter.
- Applications that already passed NULL as the initialization data argument generally require only recompilation against the SocketTools 12 headers and libraries.
- Applications relying on the default FTP filename encoding should note that UTF-8 is now the default instead of ANSI.
- Applications relying on the default Network Time server now use pool.ntp.org instead of time.nist.gov.
- Applications relying on the default Network Time protocol now use NTP instead of the older Time Protocol.
- Applications using the affected AES or buffer encoding functions should account for their updated INT return and length parameter types.
- .NET applications can continue using obsolete enumeration names for compatibility, but should migrate to the new PascalCase names.
- Updated .NET assemblies to use the current .NET SDKs for .NET 8.0, 9.0 and 10.0.
Knowledge Base
Our knowledge base provides detailed solutions and answers to common questions. It covers topics such as installation, 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.
