[2/2] ws2_32: Implement returning the proper time with SO_CONNECT_TIME.

Sebastian Lackner sebastian at fds-team.de
Thu Nov 20 08:29:37 CST 2014


On 20.11.2014 14:43, Sebastian Lackner wrote:
> On 20.11.2014 14:31, Bruno Jesus wrote:
>> On Thu, Nov 20, 2014 at 10:27 AM, Sebastian Lackner
>> <sebastian at fds-team.de> wrote:
>>> Based on a patch by Erich Hoover.
>>>
>>> To avoid calculations on the client-side, the server sends the connect time as relative (negative) value.
>>> Needs tools/make_requests.
>>
>> Hi, Sebastian. Thanks for taking care of this, but actually I'm
>> thinking by doing this in a different way. I'm thinking about moving
>> SO_CONNECT_TIME, SO_SNDBUF and SO_RECVBUF to the server with some new
>> server message or the one Erich created for the WSAIoctl. By doing it
>> this way we can fix not only this bug but also
>> https://bugs.winehq.org/show_bug.cgi?id=8606 where we can store the
>> pretended SO_SNDBUF value and return to the client when asked. Some
>> other messages could also be done there like SO_EXCLUSIVEADDR,
>> SO_DEBUG and others that require only memory to store/retrieve the
>> value. This would also help for SO_ACCEPTCONN which is bugged in OSX
>> due to a kernel problem. Not sure if my approach would be accepted
>> anyway.
>>
>>
>> Best wishes,
>> Bruno
>>
> 
> Hi,
> 
> not sure if bug 8606 is still important, the weird behaviour is clearly based on ugly code in the game.
> If other programs probably do a lot of SO_SNDBUF, always using a wineserver calls might cause a significant slowdown.
> Besides that, based on your last report, the game servers don't even exist anymore. Doesn't that make it basically a WONTFIX?
> 
> Nevertheless, if you prefer a different solution I am also fine with that, at least if you have time to work on it in the near future. ;)
> 
> Regards,
> Sebastian
> 

Just in addition to my previous msg - bug 8606 could also be easily fixed by just dividing the returned value by 2 if you're using a linux system. This "feature" of allocating twice the requested buffer is officially documented and unlikely to change in the near future:
http://man7.org/linux/man-pages/man7/socket.7.html
If we want to be completely on the save side we could also detect it at runtime on ws2_32 initialization.




More information about the wine-devel mailing list