SocketWrench Release Notes

SocketTools 6.0 Build 6030

  • Updated SocketWrench .NET to include assemblies that specifically target Visual Studio 2010 and the .NET 4 Framework. Earlier versions of Visual Studio, including Visual Studio 2003 .NET and the .NET 1.1 Framework, continue to be supported.
  • Corrected a problem where the OnError event would not be raised under some circumstances when an asynchronous network I/O operation failed. This would most commonly occur when an asynchronous connection attempt would fail because the connection was refused by the remote host.
  • Corrected a problem where the OnDisconnect event may not be raised when a connection was aborted, such as when a hardware failure occurred or the physical network connection was interrupted.
  • Changed the behavior of the KeepAlive property so that, if enabled, keep-alive packets would be generated after a shorter period of time. If this property is set to true, the system will start sending keep-alive packets five seconds after the connection has become idle. If the remote host does not respond to these packets after a short period of time, the connection will be aborted.
  • Corrected a problem where the HostAddress property would not return the IP address of the remote host after a connection had been established.
  • Corrected a problem where certain socket options could not be changed when an asynchronous socket was created.
  • A more explicit error code and description is returned when attempting to enable security options on a datagram (UDP) socket. Secure connections are only supported with stream (TCP) sockets.
  • Corrected a problem where a general protection fault could occur under some circumstances when logging was enabled using the Trace, TraceFile and TraceFlags properties. This would typically happen when a specific combination of socket options were enabled in conjunction with higher-level socket I/O methods such as ReadLine and WriteLine.

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.