Mike,
I should have been aware of this before :-/
As mentioned in my other mail, ** Winsock allows NULL pointers for lpOverlapped. **
AFAICS, Mike, your server-side code uses the overlapped field only for identifying a certain request. This will obviously break if the overlapped field may be NULL.
Question: Would it hurt to use the async_private pointer of a request rather than the overlapped pointer to pass to the server? If no, I guess that would be the way to go, because the async_private structs are allocated by us and therefore necessarily different and non-NULL.
Wrt to the status and "bytes read", I already have a pretty elegant solution which keeps the overlapped struct outside the generic code (scheduler and server).
Please comment, Martin