[Bug 11248] New: fixme:winsock:WSASocketW Unsupported socket family -1!

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jan 18 10:17:17 CST 2008


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 at winehq.org
        ReportedBy: andrej.andolsek at 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


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list