SocketTools Release Notes

  • 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.
  • 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.
  • 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 10 and Windows Server 2019, 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.