[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