Re: [PATCH 2/3] ws2_32: Implement get socket option SO_PROTOCOL_INFO (try 3)
Bruno Jesus <00cpxxx(a)gmail.com> writes:
+static int ws_protocol_info(SOCKET s, int unicode, WSAPROTOCOL_INFOW *buffer) +{ + int size; + union _info + { + WSAPROTOCOL_INFOA *a; + WSAPROTOCOL_INFOW *w; + } info; + info.w = buffer; + + size = unicode ? sizeof(WSAPROTOCOL_INFOW) : sizeof(WSAPROTOCOL_INFOA); + memset(buffer, 0, size); + info.w->iAddressFamily = WS_AF_UNSPEC; + + SERVER_START_REQ( get_socket_info ) + { + req->handle = wine_server_obj_handle( SOCKET2HANDLE(s) ); + wine_server_call( req ); + info.w->iAddressFamily = convert_af_u2w(reply->family); + info.w->iSocketType = convert_socktype_u2w(reply->type); + info.w->iProtocol = convert_proto_u2w(reply->protocol); + } + SERVER_END_REQ;
You need to check the server return status and set the correct error code. -- Alexandre Julliard julliard(a)winehq.org
On Fri, Sep 6, 2013 at 7:16 AM, Alexandre Julliard <julliard(a)winehq.org> wrote:
Bruno Jesus <00cpxxx(a)gmail.com> writes:
+static int ws_protocol_info(SOCKET s, int unicode, WSAPROTOCOL_INFOW *buffer) +{ + int size; + union _info + { + WSAPROTOCOL_INFOA *a; + WSAPROTOCOL_INFOW *w; + } info; + info.w = buffer; + + size = unicode ? sizeof(WSAPROTOCOL_INFOW) : sizeof(WSAPROTOCOL_INFOA); + memset(buffer, 0, size); + info.w->iAddressFamily = WS_AF_UNSPEC; + + SERVER_START_REQ( get_socket_info ) + { + req->handle = wine_server_obj_handle( SOCKET2HANDLE(s) ); + wine_server_call( req ); + info.w->iAddressFamily = convert_af_u2w(reply->family); + info.w->iSocketType = convert_socktype_u2w(reply->type); + info.w->iProtocol = convert_proto_u2w(reply->protocol); + } + SERVER_END_REQ;
You need to check the server return status and set the correct error code.
Thank you for the review, I guess I based my call in the wrong example from socket.c. Some calls there don't check the return like: http://source.winehq.org/source/dlls/ws2_32/socket.c#L805 http://source.winehq.org/source/dlls/ws2_32/socket.c#L831 http://source.winehq.org/source/dlls/ws2_32/socket.c#L854 I'll take a better look in the weekend.
-- Alexandre Julliard julliard(a)winehq.org
Regards, Bruno
participants (2)
-
Alexandre Julliard -
Bruno Jesus