Problem with slow httplib connections on Windows (and maybe other platforms)

Steve Holden steve at holdenweb.com
Sun Feb 1 21:06:49 EST 2009


rdmurray at bitdance.com wrote:
> Quoth Christoph Zwerschke <cito at online.de>:
>> rdmurray at bitdance.com schrieb:
>>> Quoth Christoph Zwerschke <cito at online.de>:
>>>>    With Py 2.3 (without IPv6 support) this is only the IPv4 address,
>>>>    but with Py 2.4-2.6 the order is (on my Win XP host) the IPv6 address
>>>>    first, then the IPv4 address. Since the IPv6 address is checked first,
>>>>    this gives a timeout and causes the slow connect() call. The order by
>>>>    which getaddrinfo returns IPv4/v6 under Linux seems to vary depending
>>>>    on the glibc version, so it may be a problem on other platforms, too.
>>> Based on something I read in another thread, this appears to be a problem
>>> only under Windows.  Everybody else implemented the TCP/IP stack according
>>> to spec, and the IPV6 connect attempt times out immediately, producing
>>> no slowdown.
>>>
>>> Microsoft, however....
>> The order in which getaddrinfo returns IPv4 and IPv6 is probably not 
>> written in the specs (Posix 1003.1g and RFC 2553). The fact that Windows 
>> returns IPv6 addresses first is not wrong in itself.
>>
>> For this discussion, see also
>> http://www.ops.ietf.org/lists/v6ops/v6ops.2002/msg00869.html
>> https://bugzilla.redhat.com/show_bug.cgi?id=190495
>>
>> But yes, I also wonder why the connect to the IPv6 loopback address does 
>> not time out more quickly on Windows.
> 
> Right, it's not the order of the returned items that's the Microsoft
> weirdness, it's the long timeout on an attempt to connect to something
> that doesn't exist.  There was a long discussion about this, and it might
> even have been on python-dev, but I can't lay my hands on the thread.
> In short, Microsoft retries and waits a while when the far end says
> "no thanks" to a connection attempt, instead of immediately returning
> the connection failure the way Linux and etc and etc do.  This applies
> to IPV4, too.
> 
Search for the subject line "socket.create_connection slow" - this was
discovered by Kristjan Valur Jonsson. It certainly seems like a
Microsoft weirdness.

regards
 Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list