[MPlayer-dev-eng] [PATCH] Don't try to connect to AF_INET address with AF_INET6

Erik Auerswald auerswal at unix-ag.uni-kl.de
Fri Jul 12 00:43:32 CEST 2013


On 07/12/2013 12:22 AM, Alexander Strasser wrote:
> On 2013-07-10 23:10 +0200, Alexander Strasser wrote:
>> On 2013-07-06 17:59 +0200, Erik Auerswald wrote:
>>> On 07/06/2013 03:19 AM, Aaron Plattner wrote:
>>>> When _BSD_SOURCE isn't defined, gethostbyname2() isn't available.  This causes
>>>> HAVE_GETHOSTBYNAME2 to be undefined, making connect2Server_with_af fall back to
>>>> gethostbyname(), which always returns an AF_INET address.
>>>>
>>>> Without a check against hp->h_addrtype, this causes the memcpy to stuff the 4
>>>> bytes of the AF_INET address into the beginning of the AF_INET6 address field:
>>>>
>>>>   Playing http://www.facebook.com/.
>>>>   Resolving www.facebook.com for AF_INET6...
>>>>   Connecting to server www.facebook.com[45ab:ed14::]: 80...
>>>>
>>>>   Failed to connect to server with AF_INET6
>>>>   Resolving www.facebook.com for AF_INET...
>>>>   Connecting to server www.facebook.com[69.171.237.20]: 80...
>>>>
>>>> On systems with real IPv6 connections, this first connection attempt to a bogus
>>>> address can take a very long time to time out.
>>>
>>> I have seen this problem for some time, but have not investigated it yet.
>>>
>>>> To address this problem, bail out immediately if gethostbyname() returns an
>>>> address from an incompatible family.  The caller will immediately fallback to
>>>> AF_INET.
>>>
>>> Great! This patch works for me. No more long timeouts for wrong IPv6
>>> addresses. :-)
>>>
>>> Tested-by Erik Auerswald <auerswal at unix-ag.uni-kl.de>
>>>
>>> @MPlayer devs: please accept this patch, it is helpful.
>>
>>    Makes sense to me. I intent to apply the patch tomorrow evening.
>
>    Applied. Thank you both for submitting and testing.

Thanks!

Erik


More information about the MPlayer-dev-eng mailing list