Juan Lang juan.lang@gmail.com writes:
-BOOL netconn_connect( netconn_t *conn, const struct sockaddr *sockaddr, unsigned int addr_len ) +BOOL netconn_connect( netconn_t *conn, const struct sockaddr *sockaddr, unsigned int addr_len, int timeout ) {
- if (connect( conn->socket, sockaddr, addr_len ) == -1)
- int res, state;
- if (timeout > 0)
- {
state = 1;
res = ioctlsocket( conn->socket, FIONBIO, &state );
- }
- res = connect( conn->socket, sockaddr, addr_len );
- if (res == -1 && (errno == EINPROGRESS || errno == EAGAIN))
- {
struct pollfd pfd;
pfd.fd = conn->socket;
pfd.events = POLLOUT;
res = poll( &pfd, 1, timeout );
- }
You also need to replace the errno check with the equivalent winsock errors, and you need to correctly check the result of the poll.