names client Resolver class not handling connectionLost

[email protected] Fri, 11 Sep 2009 07:28:35 -0000
Newsgroups gmane.comp.python.twisted.bugs
Message-ID <[email protected]>
New submission from pythonologist <None>:

In some circumstances, a twisted.names.client.Resolver instance has the non-existent method connectionLost invoked. Here's a traceback:

{{{
Traceback (most recent call last):
  File "xmlharness.py", line 724, in run_program
    reactor.run()
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\base.py", line 1128, in run
    self.mainLoop()
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\base.py", line 1140, in mainLoop
    self.doIteration(t)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\selectreactor.py", line 140, in doSelect
    _logrun(selectable, _drdw, selectable, method, dict)
--- <exception caught here> ---
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\python\log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\python\log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\python\context.py", line 59, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\python\context.py", line 37, in callWithContext
    return func(*args,**kw)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\selectreactor.py", line 156, in _doReadOrWrite
    self._disconnectSelectable(selectable, why, method=="doRead")
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\posixbase.py", line 190, in _disconnectSelectable
    selectable.readConnectionLost(f)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\tcp.py", line 509, in readConnectionLost
    self.connectionLost(reason)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\tcp.py", line 680, in connectionLost
    Connection.connectionLost(self, reason)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\internet\tcp.py", line 520, in connectionLost
    protocol.connectionLost(reason)
  File "C:\software\python26\lib\site-packages\twisted-8.2.0\twisted\names\dns.py", line 1769, in connectionLost
    self.controller.connectionLost(self)
exceptions.AttributeError: Resolver instance has no attribute 'connectionLost'

}}}

I haven't got a test program as such, just iterate over a variety of domain names. Possibly the DNS server is dropping the connection prior to responding?

----------
Type     : defect
Component: names
Keywords : 
Priority : normal
Nosy     : 
----------
http://twistedmatrix.com/trac/ticket/4015