Module: wine Branch: master Commit: 481ee636c1cc627fb7b6c20263fea778dde000cc URL: https://source.winehq.org/git/wine.git/?a=commit;h=481ee636c1cc627fb7b6c2026...
Author: Hans Leidekker hans@codeweavers.com Date: Thu Nov 1 10:16:32 2018 +0100
webservices: Don't use MSG_PEEK.
As suggested by Jacek.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 94c3dc1..b945c7f 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; }