Author: gsim Date: Fri Oct 10 12:55:15 2014 New Revision: 1630839 URL: http://svn.apache.org/r1630839 Log: PROTON-684: Restrict IOCP enlistment to pn_selector_t usage scenarios in Windows
Modified: qpid/proton/branches/examples/proton-c/src/windows/io.c Modified: qpid/proton/branches/examples/proton-c/src/windows/io.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/windows/io.c?rev=1630839&r1=1630838&r2=1630839&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/windows/io.c (original) +++ qpid/proton/branches/examples/proton-c/src/windows/io.c Fri Oct 10 12:55:15 2014 @@ -210,14 +210,16 @@ pn_socket_t pn_listen(pn_io_t *io, const return INVALID_SOCKET; } - iocpdesc_t *iocpd = pni_iocpdesc_create(io->iocp, sock, false); - if (!iocpd) { - pn_i_error_from_errno(io->error, "register"); - closesocket(sock); - return INVALID_SOCKET; + if (io->iocp->selector) { + iocpdesc_t *iocpd = pni_iocpdesc_create(io->iocp, sock, false); + if (!iocpd) { + pn_i_error_from_errno(io->error, "register"); + closesocket(sock); + return INVALID_SOCKET; + } + pni_iocpdesc_start(iocpd); } - pni_iocpdesc_start(iocpd); return sock; } @@ -242,7 +244,22 @@ pn_socket_t pn_connect(pn_io_t *io, cons ensure_unique(io, sock); pn_configure_sock(io, sock); - return pni_iocp_begin_connect(io->iocp, sock, addr, io->error); + + if (io->iocp->selector) { + return pni_iocp_begin_connect(io->iocp, sock, addr, io->error); + } else { + if (connect(sock, addr->ai_addr, addr->ai_addrlen) != 0) { + if (WSAGetLastError() != WSAEWOULDBLOCK) { + pni_win32_error(io->error, "connect", WSAGetLastError()); + freeaddrinfo(addr); + closesocket(sock); + return INVALID_SOCKET; + } + } + + freeaddrinfo(addr); + return sock; + } } pn_socket_t pn_accept(pn_io_t *io, pn_socket_t listen_sock, char *name, size_t size) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org