Module: wine Branch: master Commit: 8e29fcddb92b5a37092f74c388072f8196db3649 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8e29fcddb92b5a37092f74c388...
Author: Bruno Jesus 00cpxxx@gmail.com Date: Tue Sep 17 10:00:24 2013 -0300
ws2_32: Use the struct information when the parameters are zero in WSASocket.
---
dlls/ws2_32/socket.c | 14 +++++++------- dlls/ws2_32/tests/sock.c | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 4750656..30c3c6c 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -5884,20 +5884,20 @@ SOCKET WINAPI WSASocketW(int af, int type, int protocol, return ret; }
- /* convert the socket family and type */ - af = convert_af_w2u(af); - type = convert_socktype_w2u(type); - if (lpProtocolInfo) { - if (af == FROM_PROTOCOL_INFO) + if (af == FROM_PROTOCOL_INFO || !af) af = lpProtocolInfo->iAddressFamily; - if (type == FROM_PROTOCOL_INFO) + if (type == FROM_PROTOCOL_INFO || !type) type = lpProtocolInfo->iSocketType; - if (protocol == FROM_PROTOCOL_INFO) + if (protocol == FROM_PROTOCOL_INFO || !protocol) protocol = lpProtocolInfo->iProtocol; }
+ /* convert the socket family and type */ + af = convert_af_w2u(af); + type = convert_socktype_w2u(type); + if ( af == AF_UNSPEC) /* did they not specify the address family? */ { if ((protocol == IPPROTO_TCP && type == SOCK_STREAM) || diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 70269b4..1f18869 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -1946,7 +1946,6 @@ todo_wine pi[0].iSocketType = SOCK_DGRAM; pi[0].iAddressFamily = AF_INET; sock = WSASocketA(0, 0, 0, &pi[0], 0, 0); -todo_wine { ok(sock != INVALID_SOCKET, "Failed to create socket: %d\n", WSAGetLastError()); size = sizeof(socktype); @@ -1956,7 +1955,7 @@ todo_wine { ok(socktype == SOCK_DGRAM, "Wrong socket type, expected %d received %d\n", SOCK_DGRAM, socktype); closesocket(sock); -} + sock = WSASocketA(AF_INET, SOCK_STREAM, IPPROTO_TCP, &pi[0], 0, 0); ok(sock != INVALID_SOCKET, "Failed to create socket: %d\n", WSAGetLastError());