Upgrading to version 6.0

I’m in the process of upgrading a set of ISO8583 servers for a client. One of these is the original server that caused The Server Framework to come into existence back in 2002. The other two servers are based on a 2005 cut of the code; one written in 2005 and one, heavily based on the other, written in 2008. The upgrade is primarily to support windows performance counters on Windows Server 2008 and to allow for x64 builds.

JetByte News: Updating ISO8583 servers

PayPoint has engaged us to update the ISO8583 transaction servers that we have built for them over the years to the latest version of The Server Framework. They’re keen to take advantage of the free updates that you get with The Server Framework but don’t have anyone in house to apply the diffs and adjust the code.

Excellent article on Non-Paged Pool

Mark Russinovich has an excellent piece (here) on how ’non-paged pool’ memory sizes are calculated for various versions of Windows operating systems. As those of you who are dealing with high performance, high connection, server systems know, non-paged pool is one of those annoying system wide limits that can sometimes get in the way of servicing a large number of clients as every active I/O operation consumes some non-paged pool. The good news is that on Vista x64 systems and later the way that non-paged pool limits are calculated has changed and the limits are much higher.

Highlights of the 6.0 server framework release

The latest, 6.0, release of The Server Framework is significant for me in several ways. From a purely practical point of view it’s the first release from my new Subversion repository and as such it’s the culmination of a fair amount of work and restructuring. The new repository is easier to work with and the new code structure is expecially noticable in the way that example servers and clients are now packaged for release.

Latest release of licensed socket server code: 6.0

The latest release of The Server Framework is now available. This release includes the following changes. The following changes were made to the libraries. Admin Library - 6.0 Added back the Admin\VC6Compatibility directory with sal.h for VS.Net (2002) and VS 2003. The directory is now called Admin\Compatibility and you need to copy sal.h to your compiler’s include directory if it complains about it being missing. Some more changes with how Admin.

Automatically pruning empty log files

The log file rotation code that I wrote a while back has been working well for several clients. Recently someone suggested that the design of their server’s logging meant that they tended to generate lots of useful information on server start up and server shutdown and then nothing until the server had problems. This meant that they were ending up with lots of empty log files as the hourly, or daily, or weekly rotation period would create a new file and most of the time nothing would be written to it.

Testing SChannel code

I developed the new SChannel SSL adapter for The Server Framework in a mostly test driven style; a while ago I called this Just In Time Testing… It worked well and, to be honest, I couldn’t imagine developing code as complex as the SChannel adapter without tests; though as I noted when I first set out on the development, back in 2001 I’d developed the corresponding OpenSSL adapter without any tests at all… The tests worked well for me this time around and I was able to both learn about the SChannel API that I was using and implement the required code far easier with the tests in place.

Memory leak in SChannel SSL code

I’ve just had a memory leak in the SChannel SSL code reported by a client. It’s a fairly fundamental leak has highlighted an omission in the mock buffer allocators that I use to test this kind of code; it also highlights that the SChannel code was somewhat rushed to release before Christmas. I’m working on a fix now and the changes will be included in the 5.2.5 release of the SChannel code.

Asserts and testing

Miško Hevery over at the Google Testing Blog has a few things to say about Asserts and testing. He’s against asserts, specifically ones which perform null checks, as they get in the way of testing. Whilst I agree with his dislike of assertions (see here) I disagree with his dislike of null checks… Miško complains that by having an object check passed in objects for null and assert if they are this causes him problems in testing where he knows that he doesn’t need the objects that are being passed in to test the functionality that he’s testing.