SocketWrench Release Notes
SocketTools 6.0 Build 6020
- Changed how asynchronous socket I/O notifications are handled by the SocketWrench class to address situations in which the application suspends processing messages for a period of time or with applications running on a system under high load. This change should improve situations in which network event notifications appear to stall or stop firing after a period of time until the application performs a network I/O function such as reading data from the socket.
- Corrected a problem where the status of a server's credentials was not being updated correctly when a secure connection was established using any of the secure networking classes. This could cause the class to report that the certificate should not be trusted, even though it was valid.
- Modified how security credentials are processed when a secure connection is established. If the CertificateStore property specifies a valid file name, it will automatically load the certificate from that file rather than the registry. The certificate file must be in PKCS12 (PFX) format and it must contain the private key that is associated with the certificate. In addition, if the CertificateStore property specifies as string that begins with "HKCU:" then the specified certificate will be loaded from the current user's certificate store; if the string begins with "HKLM:" then the specified certificate will be loaded from the local machine store instead. This same change also applies to the SECURITYCREDENTIALS structure when establishing a secure connection using the SocketWrench library.
- Changed the library that performs the debug logging to perform a more stringent version compatibility check. If developers are using the Trace, TraceFile and TraceFlags properties in their applications, they should always make sure that the matching version of the debugging library be included alongside their application executable. This corrects a problem where mismatched versions of the library could cause the application to crash. If the versions do not match, the class will silently refuse to load the library and the debug logging features will be disabled.
- The SocketWrench .NET assemblies are no longer digitally signed using an AuthentiCode certificate. This change was made because the .NET framework would attempt to validate digitally signed assemblies and establish an Internet connection to determine if the certificate was still valid. This could cause significant delays in the application loading if it was behind a firewall or there was anti-virus software that was preventing the outbound connection. Note that the assemblies still have strong names and are cryptographically signed, this change is only in regards to the AuthentiCode digital signature. Developers who require versions of the assemblies that have been signed using AuthentiCode can contact technical support and request them. For more information, refer to Microsoft knowledge base article 936707
Version 6.0 Build 6010
- Corrected a problem in the SocketWrench component where events would not fire correctly if the socket was changed from blocking (synchronous) to non-blocking (asynchronous) after a connection had been established.
- Corrected a problem with the InternetServer component where OnTimeout events were not being generated for client sessions that were idle longer than the specified timeout period.
- Corrected a problem with the InternetServer component where the ClientCount property and ClientHandles property array were not updating properly when client connections were established or disconnected.
- Improved the InternetServer component to be more responsive under higher load conditions, and resilient to potential denial-of-service attacks where hostile clients may attempt to flood the server with connection requests.
Version 6.0 Build 6000
- New Internet Server ActiveX control and .NET class which enables developers to easily create multi-threaded, event-driven server applications. For more information, refer to the documentation for the InternetServer control.
- Updated for full compatibility with the Windows Server 2008 and Windows Vista SP1 platforms, supporting the new security model and TCP/IP stack. It is recommended that applications which target these platforms upgrade to the current version.
- Core networking code updated to use Windows Sockets 2.2 API and removed all previous dependencies on the Windows Sockets 1.1 and deprecated TCP/IP stack in unsupported versions of Windows. SocketWrench is only supported on Windows 2000 and later platforms.
- Redesigned the memory management code used to allocate buffers and internal socket data structures, improving performance and reducing overhead when multiple sessions are created in a multithreaded application.
- Improved the performance of the ReadStream and WriteStream methods under certain high-latency conditions when reading or writing large blocks of data.
- Corrected a problem with the Peek method in the SocketWrench ActiveX control and the InetPeek function in the library where it did not function similarly to the Read method and InetRead function, respectively. This could yield unexpected results because it ignored the blocking state of the socket. The Peek method and InetPeek function will now cause the current thread to block if a blocking socket is being used.
- The ReadEx and WriteEx methods in the SocketWrench ActiveX control has been deprecated and should no longer be used. The Read and Write methods have been extended to support additional arguments.
- Added support for AES (Advanced Encryption Standard) encryption for secure SSL/TLS connections on Windows Server 2008 and Windows Vista.
- Updated the Developers Guide and Technical Reference and made improvements and corrections to the overall documentation.