I am dealing with asynchronous WinSock using WSAEventSelect(). According to MSDN, once certain network events have been recorded, they will not be recorded again until the re-enabling functions are called.
However, I have observed that FD_READ is posted multiple times on the same socket without my ever calling any of the recv() variants. Specifically, what I am doing is connecting to a server I'm writing, using a telnet client. I accept the connection and immediately call WSAEventSelect() to associate the client socket with an event object and all network events. FD_WRITE is posted on the client socket. I then type something in the telnet client, and immediately a FD_READ event is posted on the client; I do NOT call any variant of recv() on the client socket. Each time I type something into telnet, I receive another FD_READ.
Has anyone else observed this behaviour? It seems to me that MSDN almost explicitly states that this should not happen.