Jacek Caban : wininet: Cache blocking state in netconn_t.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 22 07:44:58 CDT 2015


Module: wine
Branch: master
Commit: 9d3fda008f07d9651df2c0894403b46d59e46845
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9d3fda008f07d9651df2c0894403b46d59e46845

Author: Jacek Caban <jacek at 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)




More information about the wine-cvs mailing list