[Twisted-Python] Twisted 11.0 and Foolscap incompatibility
Bill Noon
wn10 at cornell.edu
Tue Apr 5 15:03:59 EDT 2011
It looks like the new ssl/tls code doesn't work with Foolscap. The ConnectionMixin is treating the self.protocol
object as a transport and calls write() and loseConnection() on it.
Here is a traceback:
Traceback (most recent call last):
File "/usr/lib64/python2.6/site-packages/foolscap-0.6.1_-py2.6.egg/foolscap/slicers/root.py", line 107, in send
d.callback(None)
File "/usr/lib64/python2.6/site-packages/Twisted-11.0.0_r31548-py2.6-linux-x86_64.egg/twisted/internet/defer.py", line 361, in callback
self._startRunCallbacks(result)
File "/usr/lib64/python2.6/site-packages/Twisted-11.0.0_r31548-py2.6-linux-x86_64.egg/twisted/internet/defer.py", line 455, in _startRunCallbacks
self._runCallbacks()
File "/usr/lib64/python2.6/site-packages/Twisted-11.0.0_r31548-py2.6-linux-x86_64.egg/twisted/internet/defer.py", line 542, in _runCallbacks
current.result = callback(current.result, *args, **kw)
--- <exception caught here> ---
File "/usr/lib64/python2.6/site-packages/foolscap-0.6.1_-py2.6.egg/foolscap/banana.py", line 216, in produce
self.pushSlicer(slicer, obj)
File "/usr/lib64/python2.6/site-packages/foolscap-0.6.1_-py2.6.egg/foolscap/banana.py", line 352, in pushSlicer
openID = self.sendOpen()
File "/usr/lib64/python2.6/site-packages/foolscap-0.6.1_-py2.6.egg/foolscap/banana.py", line 481, in sendOpen
int2b128(openID, self.transport.write)
File "/usr/lib64/python2.6/site-packages/foolscap-0.6.1_-py2.6.egg/foolscap/banana.py", line 24, in int2b128
stream(chr(0))
File "/usr/lib64/python2.6/site-packages/Twisted-11.0.0_r31548-py2.6-linux-x86_64.egg/twisted/internet/_newtls.py", line 176, in write
self.protocol.write(bytes)
exceptions.AttributeError: 'Broker' object has no attribute 'write'
Any workarounds or suggestions? Reverting to Twisted 10.2 works for now.
--Bill Noon
Northeast Regional Climate Center
Cornell University
More information about the Twisted-Python
mailing list