id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,branch,branch_author,launchpad_bug
5028,Twisted r31537 and Foolscap incompatibility,billnoon,,"The new ssl implementation added in [31537] #4854 is incompatible with Foolscap (v0.6.1).

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'
}}}
	
This could be caused by foolscap setting the protocol attribute on the transport in negotiate.py [https://github.com/warner/foolscap/blob/master/foolscap/negotiate.py#L1162]

",regression,closed,normal,,core,wontfix,,davidsarah,,,
