http://bugs.winehq.org/show_bug.cgi?id=11248
Summary: fixme:winsock:WSASocketW Unsupported socket family -1! Product: Wine Version: 0.9.53. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P1 Component: winsock AssignedTo: wine-bugs@winehq.org ReportedBy: andrej.andolsek@gmail.com
Hello guys!
If I run Bitvise Tunnelier (Tunnelier.exe, installer can be downloaded from www.bitvise.com/download-area) in Wine 0.9.53 I get the following problem when I try to login (establish a TCP/IP connection):
fixme:winsock:convert_af_w2u unhandled Windows address family -1 fixme:winsock:WSASocketW Unsupported socket family -1!
---
This is how Tunnelier calls WSASocketW():
WSASocketW(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, &m_protocolInfo, 0, WSA_FLAG_OVERLAPPED);
and FROM_PROTOCOL_INFO has the value of -1.
If you check WSASocket() in MSDN - http://msdn2.microsoft.com/en-us/library/ms742212(VS.85).aspx - the 3rd paragraph of Remarks says the following:
If the lpProtocolInfo is not NULL, the socket will be bound to the provider associated with the indicated WSAPROTOCOL_INFO structure. In this instance, the application can supply the manifest constant FROM_PROTOCOL_INFO as the value for any of af, type, or protocol parameters. This indicates that the corresponding values from the indicated WSAPROTOCOL_INFO structure (iAddressFamily, iSocketType, iProtocol) are to be assumed. In any case, the values specified for af, type, and protocol are passed unmodified to the transport-service provider.
So, in dlls/ws2_32/socket.c WSASocketW() something like the code following needs to be added (taking into account that the trasport-service provider requirements doesn't affect Wine):
if (lpProtocolInfo) { if (af == FROM_PROTOCOL_INFO) af = lpProtocolInfo->iAddressFamily; if (type == FROM_PROTOCOL_INFO) type = lpProtocolInfo->iSocketType; if (protocol == FROM_PROTOCOL_INFO) protocol = lpProtocolInfo->iProtocol; }
So you see, it's a show stopper with a very simple solution.
Keep up the good work!
Andrej Andolsek