[PATCH] webservices: Don't use MSG_PEEK.

Hans Leidekker hans at codeweavers.com
Thu Nov 1 04:16:32 CDT 2018


As suggested by Jacek.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/webservices/channel.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/dlls/webservices/channel.c b/dlls/webservices/channel.c
index 94c3dc1e99..b945c7f55a 100644
--- a/dlls/webservices/channel.c
+++ b/dlls/webservices/channel.c
@@ -1150,27 +1150,21 @@ static void set_blocking( SOCKET socket, BOOL blocking )
     ioctlsocket( socket, FIONBIO, &state );
 }
 
-static int sock_peek( SOCKET socket )
+static int sock_recv( SOCKET socket, char *buf, int len )
 {
-    int ret;
-    char byte;
+    int count, ret;
 
-    set_blocking( socket, FALSE );
-    ret = recv( socket, &byte, 1, MSG_PEEK );
-    set_blocking( socket, TRUE );
-    return ret;
-}
+    if ((ret = recv( socket, buf, len, 0 )) <= 0) return ret;
+    len -= ret;
 
-static int sock_recv( SOCKET socket, char *buf, int len )
-{
-    int count, ret = 0;
+    set_blocking( socket, FALSE );
     for (;;)
     {
         if ((count = recv( socket, buf + ret, len, 0 )) <= 0) break;
         ret += count;
         len -= count;
-        if (sock_peek( socket ) != 1) break;
     }
+    set_blocking( socket, TRUE );
     return ret;
 }
 
-- 
2.11.0




More information about the wine-devel mailing list