[
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)