Asynchronous Events: Write sequencing bug in all versions of The Server Framework

I’ve just found and fixed a bug which has been present in The Server Framework from the very beginning. The problem affects connections which are “sequenced” and which have had more than 2,147,483,647 writes performed on them. The observant amongst you will be thinking that it’s a counter wrap bug and you’d be correct. The annoying thing for me is that the code in question has unit tests which explicitly test for correct operation when the sequence number wraps; the tests pass but the bug is still there.

OpenSSL 1.0.1c key files are not compatible with OpenSSL 0.9.8x

A note to myself and my clients more than anything else… It seems that when you generate a key using a 1.x version of the openssl utility the blob looks like this: -----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI7BZmHKzGwtQCAggA etc... T+CaOPXRod3cKwZEgp0vkM+gpsLw0C6WVEdV01ZrgUsJ2DceYXaenHCjfZ7jwy84 LKk= -----END ENCRYPTED PRIVATE KEY----- whereas when you generate a key in exactly the same way with an 0.9.8 version of the utility the blob looks like this: -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,061B6446EB96A47B OFE9asOb689P0l6++Nwz0HYop4KdgKh6NFCzZV/kjp03VL2RW6beii2x70ikTLjs etc.

Asynchronous Events: AcceptEx() bug in Windows 8 and all Server 2012 variants

Be aware that there is a known bug in Windows 8 and all Server 2012 variants which causes AcceptEx() completions to be delayed in some situations. This was confirmed by a Microsoft representative on Microsoft Connect, see the error report ticket here. An example of how to demonstrate this bug, its likely affects and the current know causes can be found here in this Stack Overflow question. I’m a little disappointed with the official response to this bug report.

Asynchronous Events: Winsock Registered I/O, I/O Completion Port Performance

Continuing my analysis of the performance of the new Winsock Registered I/O API, RIO, compared to more traditional networking APIs we finally get to the point where we compare I/O completion port designs. I’ve been looking at the Windows 8 Registered I/O Networking Extensions since October when they first made an appearance as part of the Windows 8 Developer Preview, though lately most of my testing has been using Windows Server 2012 RC.

Building OpenSSL for x86 and x64 on Windows for side by side deployment

The Server Framework’s OpenSSL Option Pack integrates OpenSSL with my high performance server tool kit and gives you an IOCP based client or server that can handle many thousand concurrent connections with very few threads. The OpenSSL Option Pack has been around for over 10 years now and, as well as the SChannel Option Pack provides an easy way to add SSL or TLS to your clients and servers. Updated 26th April 2023 The latest scripts for OpenSSL 3.

Where are all the Microsoft Networking MVPs?

There’s a gnarly networking question on stack overflow that I’ve since reposted on various Microsoft forums and so far I’ve had absolutely no useful response. Not even an “I don’t know, but I’ll look into it”. I can understand that, perhaps, the issue may be a little bit technical for a support person who isn’t steeped in networking API knowledge; but where are the MVPs? Why isn’t there a Winsock MVP who can tell me that the bug has already been raised somewhere and might get fixed, or that it’s a known and desirable breaking change?

Asynchronous Events: Winsock Registered I/O - Traditional Multi threaded IOCP UDP Example Server

This article presents the sixth in my series of example servers for comparing the performance of the Winsock Registered I/O Networking extensions, RIO, and traditional Windows networking APIs. This example server is a traditional multi-threaded, IOCP based, UDP design that we can use to compare to the multi-threaded RIO IOCP UDP example server. I’ve been looking at the Winsock Registered I/O Networking Extensions since October when they first made an appearance as part of the Windows 8 Developer Preview, though lately most of my testing has been using Windows Server 2012 RC.

Asynchronous Events: Worrying issue with Windows 8 and AcceptEx...

There’s an interesting question over on stack overflow about a perceived change in IOCP behaviour on Windows 8 (and Server 2012 RC). The question includes some code which demonstrates how an overlapped AcceptEx() call is blocked on by the thread that issued it being blocked inside a call to ReadFile() at the time that the AcceptEx() completes. The completion for the AcceptEx() is delayed until the ReadFile() completes even though a thread is waiting for completions on the IOCP associated with the socket.

Asynchronous Events: Windows Server 2012 Registered I/O Performance - take 2...

I’ve been looking at the Windows 8 Registered I/O Networking Extensions since October when they first made an appearance as part of the Windows 8 Developer Preview. Whilst exploring and understanding the new API I spent some time putting together some simple UDP servers using the various notification styles that RIO provides. I then put together some equally simple UDP servers using the “traditional” APIs so that I could compare performance.

Asynchronous Events: Latest release of The Server Framework: 6.5.7

Version 6.5.7 of The Server Framework was released today. This release contains one important bug fix and support for Visual Studio 2012 RTM. The bug that was introduced in 6.5.6 has exposed a gap in our unit testing which has also been filled with this release. If you use either the Read Timeout filter or VS2012 RTM then you should install this update. This release includes the following, see the release notes, here, for full details of all changes.