I'm running into a problem, however, in that twisted is not allowing
connections (reactor.connectTCP) by hostname, only IP address. [read:
connections to IP addresses work fine, hostnames no]
From what I can tell, the problem lies in that Twisted simply isn't
performing the DNS resolutions. From the connection factory's
startedConnecting method, print connector.getDestination() results in:
IPv4Address(TCP, 'hostname', port)
That is to say, the port is correct, but the 'hostname' is completely
unresolved. Since 'hostname' is a really bad IP address, not being one
at all, the connection of course fails. A check via tcpdump on my
gateway machine shows that the DNS resolution doesn't occur.
The API documentation for version 1.3 (I'm using 2.0.1, but a quick
check of twisted source/docstrings shows this to be still true) shows
that connectTCP taks "a host name," so by that (and the echo client
example that connects to 'localhost') I presume there's supposed to be
some sort of resolution going on.
I'm running twisted 2.0.1 on win32. Is this a bug in twisted, or is
there some configuration that I've gone and borked?
 -- is there some reason in particular that there's no API reference
for twisted 2.0x? The documentation/tutorials are pretty sparse as-is, I
Update: after doing some diving in the twisted source, it is supposed to
do that. My guess is that either it thinks the hostname is a valid ip
address (unlikely), or a callback isn't actually getting called. This
... right, finally figured it out after a very long time at debugging
It's an interaction with IDLE.
What happens is that the deferToThread call in twisted's lookup Just
Doesn't Run Right (under some circumstances) when it's run under IDLE
with tksupport. I finally got the idea to run the application from the
command line, and it worked just fine. This is kind of odd, since a
trivial test case run from the interactive idle prompt works okay, but
it's now 5am and I'm going to sleep.
Moral: beware the IDLEs of March.