SocketTools 12 Release Notes
- Added the WebViewPrintDocumentEx and WebViewSaveDocumentEx functions which accept custom print settings.
- Added the WebViewSaveDocumentToMemory function to save the current document to a memory buffer.
- Added the WEBVIEW_PRINT_SETTINGS structure to define custom print settings and layout for PDF document generation.
- Added the WebViewMapVirtualHost and WebViewUnmapVirtualHost functions to map folder paths to virtual host names.
- Added the WebViewGetHomeUrl, WebViewSetHomeUrl and WebViewGoHome functions which can be used to define a home URL for a session.
- Added the WebViewIsEnabled function to determine if the browser window is currently enabled or disabled.
- Added the WebViewGetMessageSource function to return the source URI for the most recent message sent to the browser.
- Added the WebViewAddStartupScript and WebViewRemoveStartup script functions to allow scripts to be executed when a document is loaded.
- Added the WEBVIEW_EVENT_DOM_CONTENT_LOADED event to notify applications when the browser has parsed the HTML content.
- Added properties to the WebView control that supports defining margins, page size, scale and orientation for printed documents.
- Added the HeaderText and FooterText properties to the WebView control to support custom headers and footers.
- Added the PrintDialog property to the WebView control to support printing without displaying the Edge WebView2 print dialog.
- Added the Message and MessageSource properties to the WebView control to support retrieving a JSON message outside of an event handler.
- Added the MapVirtualHost and UnmapVirtualHost methods to the WebView control to support virtual host mapping.
- Added the AddStartupScript and RemoveStartupScript methods to the WebView control, allowing scripts to be executed when a document is loaded.
- Added the WebView DOMContentLoaded event to notify applications when the browser has parsed the HTML content.
- Corrected an issue with WebViewGetChildWindow that could return the handle to a child window that was not created by the browser host.
- Corrected an issue with WebViewEnableWindow that could return FALSE even though the browser window is valid and its state changed.
- Corrected an issue where WebViewGetMessage could return the previous message if an error was encountered retrieving a new message.
- Corrected an issue where WebViewAsyncExecute and WebViewExecute could return TRUE if JavaScript was not enabled in the browser.
- Corrected an issue where the WebView AsyncExecute and Execute methods could return True if JavaScript was not enabled in the browser.
- Corrected an issue where the WebViewClearHeaders, WebViewEnableWindow, WebViewIsVisible, WebViewRedrawWindow and WebViewShowWindow functions were not properly exported.
- Removed the invalid function declaration for the WebViewEnableScripting function. The WebViewSetOption function should be used to enable or disable scripting in the browser.
- Renamed the CWebView::Enable method to CWebView::EnableWindow to match the WebViewEnableWindow function that the method wraps.
- Added the missing documentation for the WebViewEnableWindow function.
- Corrected an issue where the WebView IsInitialized property could return False even though the control was initialized.
- Corrected an issue were setting the WebView Url property would not navigate to the URL immediately after the control initialized.
- Corrected an issue that could prevent attached file names from being UTF-8 encoded correctly in mail messages.
- Modified the InetGetVpnAdapter function and SocketWrench VpnAdapter properties to reduce potential false positives.
- Updated to use the current Edge WebView2 SDK (version 1.0.4528.31, runtime 154)
- Updated to use the current .NET 8.0 SDK (8.0.426), .NET 9.0 SDK (9.0.319) and .NET 10 SDK (10.0.402)
- Updates and corrections to the HTML Help and Markdown documentation.
- 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.
