ws2_32: Work around the host name resolving to 127.x.x.x when using that for binding.

Kai Blin kai.blin at gmail.com
Mon Apr 14 16:04:52 CDT 2008


On Monday 14 April 2008 18:42:26 Paul Chitescu wrote:

> Binding to a specific address is the only easy way of detecting which
> interface an UDP packet was received on since recvfrom() only gives source
> address, not destination. Listening on 0.0.0.0 would make impossible to
> tell which interface a packet was received on. Furthermore, a program that
> explicitely tries to bind to each interface would fail all but the first
> bind and possibly bail out. Probably many games that use UDP would break.

I'm currently trying to fix apps that fail doing the following (which seems to 
be a popular way among game developers), in pseudo-code. 

hostname = gethostname();
hostent = gethostbyname(hostname);
sockaddr->sin_addr = hostent->addr;
sock = socket();
bind(sock, sockaddr);

Which, as Christoph noted, cause windows apps to bind to loopback addresses, 
breaking the networking. This only started to happen recently as recently 
Linux distros started mapping the machine's hostname to a loopback address. I 
don't think Wine ever used the registry for anything like that.

Cheers,
Kai

-- 
Kai Blin
WorldForge developer  http://www.worldforge.org/
Wine developer        http://wiki.winehq.org/KaiBlin
Samba team member     http://www.samba.org/samba/team/
--
Will code for cotton.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20080414/f44e06c8/attachment.pgp 


More information about the wine-devel mailing list