wininet: Use set_socket_blocking helper in a few more places.
This commit is contained in:
parent
7410bf5896
commit
5d6d2fda7b
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue