]> git.saurik.com Git - wxWidgets.git/commit
Don't report spurious errors from wxSocket in "no wait" mode.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 21 Aug 2010 23:33:40 +0000 (23:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 21 Aug 2010 23:33:40 +0000 (23:33 +0000)
commit686d0cc0a6251b9823c271ba615186daa0d8e7fd
tree94dda2366c9b3967d1d3cf56bdce87970a4a9b97
parent2dd62dc00816faec94ea118d5a3bacaf07d88acf
Don't report spurious errors from wxSocket in "no wait" mode.

In wxSOCKET_NOWAIT mode wxSOCKET_WOULDBLOCK is not a real error as it's
expected and should be just discarded. Failing to do this could result in the
following scenario:

1. Try to read a big buffer with wxSOCKET_NOWAIT (setting wxSocket error to
   wxSOCKET_WOULDBLOCK).
2. Process small part of it.
3. Read more data from wxSocket -- which now goes to the data containing
   already cached data without going to the socket itself and this without
   resetting the error.
4. Check wxSocket::Error() which turns out to be (still) true.

And this was exactly what happened in mysteriously failing unit test case
reading wxImage contents from a socket: the failure was difficult to reproduce
because it depended on how much data exactly did we read from the socket in
one go.

Fix this by resetting the error properly and reenable the unit test which was
previously disabled for the build bot, it should pass now.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
src/common/socket.cpp
tests/image/image.cpp