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

rdmurray at bitdance.com rdmurray at bitdance.com
Sun Feb 1 14:33:28 EST 2009


Quoth Christoph Zwerschke <cito at online.de>:
> What actually happens is the following:
> 
> * BaseHTTPServer binds only to the IPv4 address of localhost, because
>    it's based on TCPServer which has address_family=AF_INET by default.
> 
> * HTTPConnection.connect() however tries to connect to all IP addresses
>    of localhost, in the order determined socket.getaddrinfo('localhost').
> 
>    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....

--RDM




More information about the Python-list mailing list