I have not blogged for a while, I just recently moved teams and now I am working on WIndows Parental Controls in C++ rather than c#.  I will continue to post .net things, since I do use .net for my home projects.

Recently I have been working on a layered socket protocol tool with winsock, this is using the standard extensability points that winsock offers.  I ran into a few interesting issues that are difficult to deal with, one is how to deal with blocking sockets when the LSP you are writing is injecting data back into the stream to be sent up to the process.  The way I ended up dealing with this was to always put the lower level socket into non-blocking mode and use WSPEventSelect to get all the events from the socket.  You can then use this in conjunction with your own events to simulate blocking and non-blocking calls.