ws2_32: Add support and tests for WSARecvMsg and IP_PKTINFO.

Erich Hoover ehoover at mines.edu
Wed Oct 13 09:30:21 CDT 2010


On Tue, Oct 12, 2010 at 10:12 PM, Mike Kaplinskiy
<mike.kaplinskiy at gmail.com> wrote:
> ...
> +    int newsize = (int)*maxsize;
> +
> +    /* Make sure there is at least enough room for this entry */
> +    newsize -= sizeof(WSACMSGHDR) + CMSG_ALIGN(len);
> +    if (newsize < 0)
> +        return 0;
> +    *maxsize = (ULONG)newsize;
> Just declare it as a ULONG/size_t so you don't have to cast.

I can obviously change this around a little bit, but the reason for
this conversion is that as a ULONG the "if (newsize < 0)" comparison
is not going to work.

> ...
> +    memset(cmsg_win, 0x00, sizeof(WSACMSGHDR)); /* Don't use garbage
> data if no headers are found */
> I think in general that is discouraged at wine (don't quote me on
> that). You should just initialize the values manually.

This is actually superfluous (gone in next revision), as if no headers
are found the length returned is zero.

> +    msg->dwFlags |= WINE_MSG_HASCTRL;
> +    memcpy(buftmp, msg->lpBuffers, msg->dwBufferCount * sizeof(WSABUF));
> +    buftmp[msg->dwBufferCount] = msg->Control;
> +    ret = WS2_recvfrom( s, buftmp, msg->dwBufferCount, lpNumberOfBytesRecvd,
> +                        &msg->dwFlags, msg->name, &msg->namelen,
> +                        lpOverlapped, lpCompletionRoutine );
> You shouldn't add internal flags like that. Just rewrite WS2_recvfrom
> to allow returning message headers instead of hacking around it.

Is it acceptable to just add a parameter for WS2_recvfrom() or should
this function get renamed?  This function currently mirrors
WSARecvFrom exactly.

> +        s1=socket(AF_INET, SOCK_DGRAM, 0);
> +        ok(s1!=INVALID_SOCKET, "socket() failed error: %d\n",
> WSAGetLastError());
> Spaces around = & != would make me happy (and below). Also you don't
> error out correctly if socket creation fails.

I was trying to match test_so_reuseaddr(), I'll change this.

Erich Hoover
ehoover at mines.edu



More information about the wine-devel mailing list