https://bugs.winehq.org/show_bug.cgi?id=55952
--- Comment #19 from Zeb Figura z.figura12@gmail.com --- (In reply to Esme Povirk from comment #18)
So why does it matter whether the server (responder) reads the data or not? Why would the server reading the data cause the client's read to succeed?
When one end of a TCP connection shuts down without consuming all its data, that's considered abnormal, and the OS sends an RST over the pipe. The other end notices that and reports a connection-reset via various APIs, including recv().
If the connection is shut down cleanly (i.e. all the data is read first), the shutdown end instead sends FIN; the client notices this and returns 0 from recv(), which is basically a special value that means the connection is closed.