wininet: Use set_socket_blocking helper in a few more places.

This commit is contained in:
Jacek Caban 2015-02-13 12:11:39 +01:00 committed by Alexandre Julliard
parent 7410bf5896
commit 5d6d2fda7b
1 changed files with 12 additions and 21 deletions

View File

@ -346,6 +346,14 @@ void init_winsock(void)
#endif #endif
} }
static void set_socket_blocking(int socket, blocking_mode_t mode)
{
#ifdef USE_WINSOCK
ULONG arg = mode == BLOCKING_DISALLOW;
ioctlsocket(socket, FIONBIO, &arg);
#endif
}
static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD timeout) static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD timeout)
{ {
int result; int result;
@ -357,8 +365,7 @@ static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD t
assert(server->addr_len); assert(server->addr_len);
result = netconn->socket = socket(server->addr.ss_family, SOCK_STREAM, 0); result = netconn->socket = socket(server->addr.ss_family, SOCK_STREAM, 0);
if(result != -1) { if(result != -1) {
flag = 1; set_socket_blocking(netconn->socket, BLOCKING_DISALLOW);
ioctlsocket(netconn->socket, FIONBIO, &flag);
result = connect(netconn->socket, (struct sockaddr*)&server->addr, server->addr_len); result = connect(netconn->socket, (struct sockaddr*)&server->addr, server->addr_len);
if(result == -1) if(result == -1)
{ {
@ -391,8 +398,7 @@ static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD t
netconn->socket = -1; netconn->socket = -1;
} }
else { else {
flag = 0; set_socket_blocking(netconn->socket, BLOCKING_ALLOW);
ioctlsocket(netconn->socket, FIONBIO, &flag);
} }
} }
if(result == -1) if(result == -1)
@ -573,14 +579,6 @@ int sock_recv(int fd, void *msg, size_t len, int flags)
return ret; return ret;
} }
static void set_socket_blocking(int socket, blocking_mode_t mode)
{
#ifdef USE_WINSOCK
ULONG arg = mode == BLOCKING_DISALLOW;
ioctlsocket(socket, FIONBIO, &arg);
#endif
}
static DWORD netcon_secure_connect_setup(netconn_t *connection, BOOL compat_mode) static DWORD netcon_secure_connect_setup(netconn_t *connection, BOOL compat_mode)
{ {
SecBuffer out_buf = {0, SECBUFFER_TOKEN, NULL}, in_bufs[2] = {{0, SECBUFFER_TOKEN}, {0, SECBUFFER_EMPTY}}; SecBuffer out_buf = {0, SECBUFFER_TOKEN, NULL}, in_bufs[2] = {{0, SECBUFFER_TOKEN}, {0, SECBUFFER_EMPTY}};
@ -1079,19 +1077,12 @@ BOOL NETCON_is_alive(netconn_t *netconn)
len = sock_recv(netconn->socket, &b, 1, MSG_PEEK|MSG_DONTWAIT); len = sock_recv(netconn->socket, &b, 1, MSG_PEEK|MSG_DONTWAIT);
return len == 1 || (len == -1 && sock_get_error() == WSAEWOULDBLOCK); return len == 1 || (len == -1 && sock_get_error() == WSAEWOULDBLOCK);
#elif defined(USE_WINSOCK) #elif defined(USE_WINSOCK)
ULONG mode;
int len; int len;
char b; char b;
mode = 1; set_socket_blocking(netconn->socket, BLOCKING_DISALLOW);
if(ioctlsocket(netconn->socket, FIONBIO, &mode))
return FALSE;
len = sock_recv(netconn->socket, &b, 1, MSG_PEEK); len = sock_recv(netconn->socket, &b, 1, MSG_PEEK);
set_socket_blocking(netconn->socket, BLOCKING_ALLOW);
mode = 0;
if(ioctlsocket(netconn->socket, FIONBIO, &mode))
return FALSE;
return len == 1 || (len == -1 && sock_get_error() == WSAEWOULDBLOCK); return len == 1 || (len == -1 && sock_get_error() == WSAEWOULDBLOCK);
#else #else