On Mon, Jul 16, 2012 at 12:42 PM, Heiko Hund <heiko.h...@sophos.com> wrote: > On Monday 16 July 2012 12:12:24 Alon Bar-Lev wrote: >> On Mon, Jul 16, 2012 at 11:39 AM, Heiko Hund <heiko.h...@sophos.com> wrote: >> > On Friday 13 July 2012 20:00:49 Alon Bar-Lev wrote: >> >> In my projects I always compare to the two values EWOULDBLOCK and >> >> EINPROGRESS and it works without much conditionals. >> >> >> >> So simply do: >> >> --- >> >> >> >> if (status == EINPROGRESS || status == EWOULDBLOCK) >> > >> > While this surly compiles with mingw, I don't think it works as intended, >> > as the numerical values of the constants differ: >> > #define EWOULDBLOCK 140 (errno.h) >> > #define WSAEWOULDBLOCK 10035L (winerror.h) >> > >> > The error returned from WinSock2 is really 10035 in case of a unfinished >> > non- blocking connect. >> >> That's correct.... and applies to all winsock errors in this case: >> --- >> #define WSAEWOULDBLOCK 10035L >> #define WSAEINPROGRESS 10036L >> --- >> >> It depends if you take error from errno or from >> GetLastError()/WSAGetLastError(). > > I wonder if GetLastError() works reliably with WinSock2 operations as > msdn.microsoft.com/en-us/library/windows/desktop/ms737828%28v=vs.85%29.aspx > and > msdn.microsoft.com/en-us/library/windows/desktop/ms737625%28v=vs.85%29.aspx do > explicitly state to use WSAGetLastError(). Maybe it only breaks with > multithreaded applications?! >
Starting at windows nt 4, winsock2 there is no difference between WSAGetLastError() and GetLastError(). As for legacy, when there could be several providers, people had to use WSAGetLastError(). But there is no really difference... if you think code will be more consistence with WSA prefix, that's ok. Alon