By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,272 Members | 1,733 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,272 IT Pros & Developers. It's quick & easy.

twisted: not doing DNS resolutions?

P: n/a
I'm building an application that makes several user-specified internet
connections; twisted meets my needs more or less perfectly.

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[1]) 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?

[1] -- 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
think.
Jul 19 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Christopher Subich wrote:
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)


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
confuses me.
Jul 19 '05 #2

P: n/a
Christopher Subich wrote:
Christopher Subich wrote:
From what I can tell, the problem lies in that Twisted simply isn't
performing the DNS resolutions. From the connection factory's


.... right, finally figured it out after a very long time at debugging
the beast.

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.
Jul 19 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.