http://bugs.winehq.org/show_bug.cgi?id=31438
--- Comment #119 from Heiko lil_tux@web.de --- @Alessandro Pignotti
Thanks for you looking into the issue. But I seriously doubt, Qt really reads 1 byte from the WSASocket. At first it looks like it in Qt's QHttpNetworkReplyPrivate::readHeader(), but as far I can tell, that socket is a QTcpSocket. Those are always buffered in Qt. Additionally that Q[..]Socket->read(&c, 1) basically resolves to QIODevice::read(char *data, qint64 maxSize), which contains:
" // Short circuit for getChar() if (maxSize == 1) { int chint; while ((chint = d->buffer.getChar()) != -1) { ", i.e. buffer usage even in the 1 byte case, so that wine doesn't get battered directly.
Also, when debugging wine's winsock it didn't look like there were 1 byte request from the beginning. Though there were 1-byte requests later on, but that didn't look like that was on the HTTP header anyway and to be application related. Then, something's really screwed. And what makes me also wonder is that somehow there's directly a WS_recv after the WS_send.
And if Qt were to actually read one byte from the WSASocket, other Qt-applications would fail that miserably as well, which they don't.
But it seems, that wine somehow does send too many WM_USER messages in response to the armed WSAAsyncSelect events. It should only provide one message until being rearmed afaik.
Unfortunately I'm unable to debug currently, because Origin tells me network login is currently not available and later on, that you must be online to login for the first time. I really don't like that app.
Also to those private mailers which contacted me: The WSAAsyncSelect hack doesn't work properly anymore. Felt like it made no difference at all anymore. I can't do anything about it.