Module: wine Branch: master Commit: 9d3fda008f07d9651df2c0894403b46d59e46845 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9d3fda008f07d9651df2c08944...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jun 19 15:21:46 2015 +0200
wininet: Cache blocking state in netconn_t.
---
dlls/wininet/internet.h | 1 + dlls/wininet/netconnection.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/wininet/internet.h b/dlls/wininet/internet.h index 4044bbf..8c3a1f1 100644 --- a/dlls/wininet/internet.h +++ b/dlls/wininet/internet.h @@ -68,6 +68,7 @@ typedef struct { int socket; BOOL secure; + BOOL is_blocking; CtxtHandle ssl_ctx; SecPkgContext_StreamSizes ssl_sizes; server_t *server; diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c index 983782d..7305860 100644 --- a/dlls/wininet/netconnection.c +++ b/dlls/wininet/netconnection.c @@ -282,8 +282,11 @@ void init_winsock(void)
static void set_socket_blocking(netconn_t *conn, BOOL is_blocking) { - ULONG arg = !is_blocking; - ioctlsocket(conn->socket, FIONBIO, &arg); + if(conn->is_blocking != is_blocking) { + ULONG arg = !is_blocking; + ioctlsocket(conn->socket, FIONBIO, &arg); + } + conn->is_blocking = is_blocking; }
static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD timeout)