[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: Re: [PATCH 2/6] webservices: Try to receive the whole message at once.
From: Jacek Caban <jacek () codeweavers ! com>
Date: 2018-10-31 15:06:08
Message-ID: 76bd8c86-4f61-e470-fefb-e79e438bd722 () codeweavers ! com
[Download RAW message or body]
Hi Hans,
On 10/31/2018 02:21 PM, Hans Leidekker wrote:
> +static void set_blocking( SOCKET socket, BOOL blocking )
> +{
> + ULONG state = !blocking;
> + ioctlsocket( socket, FIONBIO, &state );
> +}
> +
> +static int sock_peek( SOCKET socket )
> +{
> + int ret;
> + char byte;
> +
> + set_blocking( socket, FALSE );
> + ret = recv( socket, &byte, 1, MSG_PEEK );
> + set_blocking( socket, TRUE );
> + return ret;
> +}
> +
> +static int sock_recv( SOCKET socket, char *buf, int len )
> +{
> + int count, ret = 0;
> + for (;;)
> + {
> + if ((count = recv( socket, buf + ret, len, 0 )) <= 0) break;
> + ret += count;
> + len -= count;
> + if (sock_peek( socket ) != 1) break;
It seems to me that you don't really need sock_peek. You could just set
socket to non-blocking mode after the first successful recv.
Jacek
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic