[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14254501#comment-14254501
 ] 

Vitaly Stakhovsky commented on ZOOKEEPER-2096:
----------------------------------------------

According to MSDN documentation, winsock connect() function returns 
WSAEWOULDBLOCK and WSAEINPROGRESS among other error values. However inside 
zookeeper_interest(), the code after zookeeper_connect() call checks for posix 
error values EWOULDBLOCK and EINPROGRESS. In VisualStudio 2010+ this is not the 
same!

So we have two problems here: redefinition of EWOULDBLOCK and EINPROGRESS, and 
checking for wrong values after zookeeper_connect(). These can be solved by 
returning posix values from zookeeper_connect().

It would be nice to hear from authors of this code. Such fix can (but should 
not) alter the behavior of nonblocking sockets. Is there a unit test for 
this(C++, Windows) ?

> C client builds with incorrect error codes in VisualStudio 2010+
> ----------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2096
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2096
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: build, c client
>         Environment: Windows MSVS 2010+
>            Reporter: Vitaly Stakhovsky
>         Attachments: ZOOKEEPER-2096.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> It reports:
> warning C4005: 'EWOULDBLOCK' : macro redefinition
> warning C4005: 'EINPROGRESS' : macro redefinition
> In MSVS 2010+, these constants are now in <errno.h>.
> What's worse, they have different numeric values.
> Possible fix:
> In "src/c/include/winconfig.h" :
> #if _MSC_VER < 1600
> #define EWOULDBLOCK WSAEWOULDBLOCK
> #define EINPROGRESS WSAEINPROGRESS
> #endif



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to