During the development of Komodia’s redirector we have encountered numerous problems and bugs that we couldn’t forsee upfront (all bugs are solved in the SDK) you can also read the overall challenges in developing such a solution.
Safari is doing something not standard but legit, when using the MS sample, this causes Safari to hang.
Firefox is actively blocking LSPs on Windows 7 and if you get pass that, you will see hangs when under high load.
World Of Warcraft
WOW launcher hangs when using the MS sample.
Chrome is using overlapped sockets, that’s where most LSP implementations break.
After our clients began using the redirector, we found that installing the Winsock LSP on real machines isn’t as simple as the test environment, clients would simply get angry emails saying that the network was damaged and that they want a refund, to tackle this problem we developed Komodia’s advanced LSP installer which solves most of the problems that caused lost of networking and it made remote problem solving easier because of the detailed log available for analasys.
It’s no secret that we used Komodia’s TCP/IP library V5.1 as the core networking engine, however we find out that because of the way Winsock is designed – reaching top speeds require some extra tweaks which involved very efficient multi threading design.
Embedding code inside the Winsock LSP
During our eight years of experience with Winsock LSP we discovered that it’s based to keep logic code outside of the Winsock LSP, the larger the code base inside the Winsock LSP the more likely it will crash because of exotic bugs, mostly in the realm of asynchronic requests and overlapped I/O data transfer.
Windows Vista UAC model adds to complexity to the already complex solution: Installing LSP on Windows Vista, using IPC on Windows Vista, and the new security model for Internet Explorer – which means more development and bug tracking.
Windows 7 added the most complexities any OS ever added, the SDK that worked normally on Vista started to behave wierd on Windows 7, and 64bit flavor of the OS had become widespread which meant adding support for 64bit is no longer optional. We spent around two month of fixing to adjust the SDK to work normaly on Windows 7 and Windows 7 64bit edition.